模型上下文协议(MCP)正迅速成为AI Agent开发领域的热门话题。从RAG到通用工具调用,再到如今的MCP,AI领域的发展日新月异。本文将深入浅出地介绍MCP,并展示如何快速构建一个MCP Server,让你的AI Agent拥有更强大的能力。我们将探讨MCP的核心概念、传输方式、开发过程以及实际应用,帮助你快速掌握这项关键技术。
1. MCP:标准化工具调用的关键
模型上下文协议(MCP)是由Anthropic公司(知名语言模型Claude的开发者)提出的一种标准化工具调用方法。它的核心思想是为大型语言模型(LLM)提供一套通用的接口标准,使其能够更方便地与外部系统进行交互,从而扩展LLM的能力边界。
正如原文作者所说,我们已经熟悉了各种LLM工具的使用,例如LangChain、LlamaIndex、Agno、OpenAI Swarm等等。这些工具都提供了各自的函数和类,用于执行类似的任务,例如使用DuckDuckGo进行搜索。MCP的出现旨在解决这些工具之间互不兼容的问题,避免重复开发。
MCP的核心优势在于其通用性。它允许开发者使用任何编程语言和框架编写MCP Server,然后通过统一的协议与各种LLM工具进行通信。这意味着,你可以用Python、Java、Go等任何你喜欢的语言构建一个MCP Server,并将其与LangChain、LlamaIndex等工具连接,实现LLM的功能扩展。
举例说明:假设你希望让你的LLM能够操作Kubernetes集群。传统的做法是,你需要为不同的LLM工具分别编写Kubernetes操作的代码。而使用MCP,你只需要编写一个MCP Server,其中包含所有Kubernetes操作的函数。然后,任何支持MCP客户端的LLM工具都可以通过这个MCP Server来操作Kubernetes集群。
2. MCP Server:功能暴露的API门户
MCP Server是MCP的核心组成部分。它负责暴露LLM可以使用的函数、提示词和资源,并以API的形式提供给MCP Client调用。可以将MCP Server理解为一个API服务器,它定义了一组可供LLM使用的“工具”。
MCP Server通过JSON格式描述其提供的工具,包括工具的名称、参数和描述。当LLM需要使用某个工具时,它会向MCP Server发送一个包含工具名称和参数的请求。MCP Server收到请求后,会执行相应的操作,并将结果返回给LLM。
关键概念:
- 工具(Tool): MCP Server提供的可供LLM使用的函数或功能。
- 参数(Parameter): 调用工具时需要提供的输入数据。
- JSON-RPC: MCP使用JSON-RPC作为消息编码格式,保证消息的可靠传输。
形象比喻:可以将MCP Server比作一个工具箱,里面存放着各种各样的工具(例如,搜索工具、计算器工具、数据库查询工具)。LLM就像一个工匠,当它需要完成某项任务时,可以从工具箱中选择合适的工具,并按照工具的使用说明(即参数)来使用它们。
3. 传输方式:HTTP vs stdio
MCP提供了多种传输方式,用于MCP Client和MCP Server之间的通信。最常见的两种传输方式是HTTP和stdio。
- HTTP: HTTP是一种基于网络的传输协议,允许MCP Client和MCP Server通过互联网进行通信。这使得MCP Server可以部署在远程服务器上,供多个LLM客户端共享。
- stdio: stdio是一种基于标准输入/输出的传输方式,允许MCP Client和MCP Server在本地环境中进行通信。当使用stdio传输时,MCP Client会将MCP Server作为一个子进程启动,并通过标准输入/输出流进行数据交换。
选择哪种传输方式取决于具体的应用场景:
- 如果需要远程访问MCP Server,或者需要多个LLM客户端共享同一个MCP Server,则应该选择HTTP传输方式。
- 如果只需要在本地环境中使用MCP Server,或者希望减少网络开销,则可以选择stdio传输方式。
数据对比:HTTP传输通常会有一定的网络延迟,而stdio传输则几乎没有延迟。但是,HTTP传输可以支持更复杂的认证和授权机制,而stdio传输则比较简单。
4. 快速上手:使用FastMCP构建MCP Server
原文作者推荐使用FastMCP来快速构建MCP Server。FastMCP是一个Python库,它提供了简单易用的API,可以帮助开发者快速搭建MCP Server。
以下是使用FastMCP构建一个简单的MCP Server**的示例代码:
from fastmcp import create_app, Tool
app = create_app(
tools=[
Tool(
name="search_web",
description="使用搜索引擎搜索网络",
parameters=[
{"name": "query", "type": "string", "description": "搜索关键词"}
],
handler=lambda query: f"Web search results for: {query}",
)
]
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)
这段代码定义了一个名为”search_web”的工具,该工具接受一个名为”query”的字符串参数,并返回包含搜索结果的字符串。
代码解读:
create_app()
函数用于创建一个MCP Server应用。Tool
类用于定义一个工具,包括工具的名称、描述、参数和处理函数。handler
参数指定了工具的处理函数,该函数接受工具的参数作为输入,并返回工具的执行结果。
快速部署:将上述代码保存为app.py
文件,然后使用以下命令运行MCP Server:
pip install fastmcp uvicorn
python app.py
实验结果:运行上述命令后,你就可以在http://localhost:8000/mcp
访问你的MCP Server了。
5. 测试与验证:使用MCP Inspector
MCP Inspector是一个由Anthropic官方发布的视觉化测试工具,可以帮助开发者验证MCP Server的正确性。
使用MCP** Inspector的步骤如下:**
- 安装MCP Inspector:
npm install -g @modelcontextprotocol/inspector
- 启动MCP Inspector:
npx @modelcontextprotocol/inspector
- 在浏览器中打开MCP Inspector页面(通常是
http://127.0.0.1:6274
)。 - 在MCP Inspector页面中,输入你的MCP Server的连接信息(例如,
http://localhost:8000/mcp
)。 - 点击“List Tools”按钮,查看你的MCP Server提供的工具列表。
- 选择一个工具,输入参数,然后点击“Call Tool”按钮,测试工具的执行结果。
数据验证:通过MCP Inspector,你可以方便地查看MCP Server返回的JSON响应,验证工具的输入输出是否正确。
6. 应用实例:与Cursor集成
Cursor是一款基于AI的代码编辑器,它支持与MCP Server集成,从而扩展其功能。
将你的MCP Server与Cursor集成的步骤如下:
- 打开Cursor的设置页面。
- 找到“Add new global MCP Server”按钮,点击它。
- 输入你的MCP Server的连接信息(例如,
http://localhost:8000/mcp
)。 - 保存设置。
结果展示:保存设置后,Cursor会自动检测你的MCP Server,并将其提供的工具集成到其AI功能中。例如,你可以让Cursor使用你的”search_web”工具来搜索网络。
实际应用:在Cursor中,你可以通过指令或自然语言来调用你的MCP Server提供的工具。例如,你可以输入@search_web query: "Python programming"
来让Cursor使用”search_web”工具搜索关于Python编程的信息。
7. 拓展应用:Agno等AI Agent框架的支持
除了Cursor之外,还有许多其他的AI Agent框架也支持MCP,例如Agno。
使用Agno与MCP Server集成的步骤如下:
- 安装Agno:
pip install agno
- 在Agno的配置文件中,指定你的MCP Server的连接信息。
from agno import Agent
agent = Agent(
tools=[
{
"name": "search_web",
"url": "http://localhost:8000/mcp",
}
]
)
response = agent.run("Search the web for 'Large Language Models'")
print(response)
效果展示:通过Agno,你可以使用MCP Server提供的工具来构建更强大的AI Agent。例如,你可以让Agno使用”search_web”工具来搜索信息,然后根据搜索结果生成报告。
8. MCP的未来:标准化与生态构建
模型上下文协议(MCP)的出现是AI Agent开发领域的一个重要里程碑。它提供了一种标准化的方式来连接LLM和外部系统,从而简化了AI Agent的开发流程,并提高了AI Agent的性能。
未来展望:
- 更广泛的应用: 随着MCP的普及,越来越多的AI Agent框架将会支持MCP,从而使得开发者可以更容易地构建功能强大的AI Agent。
- 更丰富的工具生态: 越来越多的开发者将会贡献MCP Server,提供各种各样的工具,从而构建一个繁荣的MCP工具生态。
- 更智能的AI Agent: 通过MCP,AI Agent可以访问更多的外部信息和资源,从而变得更加智能和强大。
结论:
MCP是构建强大AI Agent的关键技术。通过本文的介绍,相信你已经对MCP有了更深入的了解。现在就开始尝试构建你的第一个MCP Server吧,让你的AI Agent拥有更强大的能力!无论是开发效率的提升,还是AI Agent能力的扩展,模型上下文协议(MCP)都将发挥越来越重要的作用,是每一个AI开发者都应该关注和掌握的技术。抓住MCP带来的机遇,你就能在AI Agent开发的浪潮中乘风破浪,创造出令人惊叹的AI应用。