模型上下文协议(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 ServerMCP的核心组成部分。它负责暴露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 ClientMCP Server之间的通信。最常见的两种传输方式是HTTP和stdio。

  • HTTP: HTTP是一种基于网络的传输协议,允许MCP ClientMCP Server通过互联网进行通信。这使得MCP Server可以部署在远程服务器上,供多个LLM客户端共享。
  • stdio: stdio是一种基于标准输入/输出的传输方式,允许MCP ClientMCP 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的步骤如下:**

  1. 安装MCP Inspector:
npm install -g @modelcontextprotocol/inspector
  1. 启动MCP Inspector:
npx @modelcontextprotocol/inspector
  1. 在浏览器中打开MCP Inspector页面(通常是http://127.0.0.1:6274)。
  2. MCP Inspector页面中,输入你的MCP Server的连接信息(例如,http://localhost:8000/mcp)。
  3. 点击“List Tools”按钮,查看你的MCP Server提供的工具列表。
  4. 选择一个工具,输入参数,然后点击“Call Tool”按钮,测试工具的执行结果。

数据验证:通过MCP Inspector,你可以方便地查看MCP Server返回的JSON响应,验证工具的输入输出是否正确。

6. 应用实例:与Cursor集成

Cursor是一款基于AI的代码编辑器,它支持与MCP Server集成,从而扩展其功能。

将你的MCP Server与Cursor集成的步骤如下:

  1. 打开Cursor的设置页面。
  2. 找到“Add new global MCP Server”按钮,点击它。
  3. 输入你的MCP Server的连接信息(例如,http://localhost:8000/mcp)。
  4. 保存设置。

结果展示:保存设置后,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集成的步骤如下:

  1. 安装Agno:
pip install agno
  1. 在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应用。