写点什么

MCP:构建更智能、模块化 AI 代理的通用连接器

作者:Sanjay Surendranath Girija等

  • 2025-09-11
    北京
  • 本文字数:7259 字

    阅读完需:约 24 分钟

大小:3.04M时长:17:43
MCP:构建更智能、模块化AI代理的通用连接器

要点

  • 模型上下文协议(MCP)是一个开放标准,旨在将人工智能 Agent 与它们所需的工具和数据连接起来。

  • MCP 的关键组件有:主机,是面向用户的 AI 应用程序,通常是 LLM、IDE 或自定义 Agent;客户端,在主机内管理与 MCP 服务器通信的组件;服务器,是一个轻量级组件,通过 MCP 协议向主机公开外部功能或数据源。

  • MCP 兼容的服务器通过标准化的界面公开一组功能——工具、资源、提示和采样。

  • 标准化协议的好处包括将 M×N 的碎片转换为 M+N 的模块,提高互操作性,面向未来,解耦,以及让工具开发民主化。

  • 几个开源 Agent 框架已经开始纳入对 MCP 的支持,包括 LangChain、CrewAI 和 AutoGen。

 

由大语言模型(LLMs)驱动的人工智能代理(AI Agents)有潜力彻底改变我们与信息的互动方式并让复杂任务自动化。然而,要真正发挥作用,它们必须有效地利用外部上下文和数据源,使用专业工具,并生成及执行代码。虽然 AI Agent 能够使用工具,但将这些外部组件集成进来,并使 AI Agent 与这些工具协同工作一直是重大的难关,通常需要定制的、与框架绑定的解决方案。这导致了生态系统的碎片化,引入重复劳动并带来了难以维护和扩展的系统。

 

于是,模型上下文协议(Model Context Protocol,MCP)应运而生。它由 Anthropic 于 2024 年底推出,正迅速成为“AI 的 USB-C”——一个旨在无缝连接 AI Agent 与它们所需的工具和数据的开放、通用标准。本文深入探讨了 MCP 的含义,它如何增强 Agent 开发,以及它在领先的开源框架中被采用的情况。我们还讨论了 MCP 解锁的关键能力和其在现实世界中的应用。对于从业者、工程师和研究人员来说,理解 MCP 对于构建下一代强大、上下文感知和模块化的 AI 系统来说是愈加重要的事情。

理解模型上下文协议

MCP 是什么?——核心概念和组件

MCP 的核心是一个开放标准,定义了一个基于JSON-RPC 2.0 的通用客户端-服务器协议,用于 AI Agent(Hosts/Clients)与外部能力(Servers)的交互。MCP 连接通常是有状态的,并使用 STDIO 这样的传输协议进行本地连接,以及 HTTP + SSE(服务器发送事件)或流式HTTP进行基于 Web 的连接。

 

MCP 的关键组件包括:

 

  • Host(主机):Host 是面向用户的 AI 应用程序,通常是像 ChatGPT 或 Claude 这样的 LLM,像 Cursor 这样的 IDE,或使用 LangChain 构建的自定义 Agent。

  • Client(客户端):Client 是 Host 内部管理与 MCP 服务器通信的组件。

  • Server(服务器):Server 是一个轻量组件,通过 MCP 协议向 Host 暴露外部能力或数据源。

 

Agent 不用再为每个新的 API、数据库或服务编写定制代码,而是连接到一个 MCP 兼容的 Server。这个 Server 通过标准化接口暴露一组功能——工具、资源、提示和采样。

 

  • 工具:这些是 AI Agent 可以调用的可执行函数或操作,例如搜索文件系统、查询数据库、发送电子邮件或调用专业 API。

  • 资源:这些代表 Agent 可以读取的数据源,如文档存储或向量数据库。

  • 提示:这些是可重用的提示模板或指令,指导 Agent 如何有效使用可用工具或有效处理特定任务。

  • 采样:这些是服务器向主机发出的请求,要求执行特定操作或计算,例如链式推理或代码审查,这使得主机和服务器之间能够进行复杂的交互。


图 1.MCP 的主要组件

 

这种标准化旨在实现强大的互操作性。如果使用 LangChain、CrewAI 或 AutoGen 等框架开发的 AI Agent 被设计为兼容 MCP,理论上可以连接到任何 MCP 服务器。这种连接将允许 Agent 访问服务器暴露的功能,无论它使用的是哪种大语言模型(例如 Claude、GPT-4、Llama)或服务器的内部实现。从 MCP 服务器的角度来看,协议设计为不需要知道发起调用的 Agent 或模型的身份,不用把它作为交互的先决条件。

标准化协议的好处

  1. 从 M×N 碎片到 M+N 模块:在 MCP 之前,将 M 个不同的 AI 模型或 Agent 框架与 N 个不同的工具集成通常意味着 M×N 个定制集成工作。每个框架都有自己的定义和整合工具的方式。MCP 将其转变为 M+N 问题。为工具开发的 MCP 服务器可以被 M 个 Agent 中的任何一个使用。同样,Agent 框架只需要实现一次 MCP 客户端能力,就可以访问 N 个工具。这减少了集成开销,创造了一个更可扩展的生态系统。

  2. 提高互操作性:MCP 允许不同的、分离的应用程序和 Agent 连接到各种服务器。Host 可以是 LLM,像 Cursor 或 Windsurf 这样的 IDE,或使用 LangChain 构建的 Python 应用程序。Server 可以提供对数据库的访问,调用 GitHub,执行代码或作为 Host 的外部存储。

  3. 面向未来和解耦:随着 LLM 和 Agent 框架的快速发展,MCP 提供了一个稳定的集成层。你可以更换 LLM,升级你的 Agent 框架,甚至迁移到一个新的框架,更有信心地相信你现有的工具集成将正常工作,只要它们遵循 MCP 标准。Agent 逻辑与工具实现也能解耦。

  4. 工具开发民主化:MCP 使开发人员能够创建和共享专业的工具服务器,并专注于他们的专长领域。一个社区驱动的MCP连接器库正在为流行服务(例如 Google Drive、GitHub、Google Maps、Slack)和小众内部系统构建生态。

 

MCP 不仅仅是一个技术规范;它是一种架构更新。它将集成负担从个别 Agent 开发者转移到标准化协议上,允许 Agent 框架专注于更高层次的编排和推理,而工具交互的“如何做”则由 MCP 来处理。

MCP 实现:示例和框架集成

MCP 在现实世界场景中的应用及其在流行的 Agent 开发框架中的集成案例,是说明 MCP 实用价值的最佳例子。

案例研究 1:Block 的“Goose”企业 AI Agent

金融科技公司 Block(前身为 Square)开发了一个名为“Goose”的 AI 助手,以赋予员工编码辅助和数据查询的能力。Goose 支持 Anthropic 的 Claude 和 OpenAI 模型,并与支持 Databricks、Snowflake、GitHub、Jira、Slack 和 Google Drive 的 MCP 服务器集成。

 

  • SQL 生成与执行:Goose 可以根据非技术人员的自然语言请求,生成针对 Block 数据仓库的 SQL 查询。它使用 MCP 连接器连接到 Databricks 服务器来执行这些查询并返回结果。

  • 内部服务集成:Block 为内部服务(如他们的“Beacon”特征存储)创建了自定义 MCP 服务器。这“教会”Goose 如何向 Beacon 提交代码,允许 AI 直接与他们的机器学习管道交互。

  • 运营自动化:运营团队使用 Goose 自动化各种任务,如检索必要数据并通过专用的,连接到 Jira 的 MCP 连接器执行各种操作(例如更新工单系统)来关闭支持工单。

 

Block 采用 MCP 作为标准化层,有助于实现更易维护的系统架构。当内部 API 通过 MCP 服务器暴露时,它们就可以被 Goose Agent 访问。该公司报告称,实施这种基于 Agent 的工作流程导致了他们在工程和非工程环境中的操作流程和数据交互方法的变化。

案例研究 2:MCP 在开发工具和 IDE 中的应用

AI 驱动的开发工具越来越多地采用 MCP,以提供更丰富、上下文感知的编码协助。像 Windsurf(前身为 Codeium)、Anysphere、Replit 和 Sourcegraph 这样的公司正在嵌入 MCP,允许 AI 编码助手无缝访问项目上下文、文档和开发环境。

 

考虑一个带有 AI Agent 的 IDE 插件:

 

  • Agent(MCP 客户端)连接到各种 MCP 服务器:一个 Git 服务器用于存储库访问,一个文档服务器用于 API 参考,可能还有一个 Sourcegraph 服务器用于语义代码搜索。

  • 当开发人员询问,“用户认证逻辑在哪里?”时,Agent 可以:

  1. 调用 Git MCP 工具搜索代码库。

  2. 如果需要,使用 Sourcegraph MCP 工具进行更深入的语义理解。

  3. 通过文档 MCP 工具获取相关的内部设计文档或 API 规范。

  • 接下来,Agent 通过标准化的 MCP 调用从多个来源综合这些信息,以提供全面的答案。这让 AI 可以“理解”项目上下文,并提供更相关的辅助支持。

将 MCP 与开源 Agent 框架集成

一些开源 Agent 框架已经开始集成对 MCP 的支持。以下是在 LangChain、CrewAI 和 AutoGen 中使用 MCP 的一些代码示例。

LangChain

LangChain 是一个用于构建 LLM 驱动应用程序的多功能框架。它简化了 LLM 与外部工具、数据库和 API 的集成,使开发人员能够创建复杂的对话 Agent、知识检索系统和自动化工作流程。该框架已被用于构建聊天机器人、促进检索增强生成和合成数据生成。

 

langchain-mcp-adapters包(Python 和 TypeScript)允许 LangChainAgent 从任何 MCP 服务器加载工具,就像它们是本地 LangChain 工具一样。例如,假设你有一个提供数学运算工具的 MCP 服务器。有了这个适配器,你就可以连接到该服务器,并用几步就将其工具整合到 LangChainAgent 中:

 

代码片段

```from mcp import ClientSession, StdioServerParametersfrom mcp.client.stdio import stdio_clientfrom langchain_mcp_adapters.tools import load_mcp_toolsfrom langchain.agents import initialize_agentfrom langchain.chat_models import ChatOpenAI

# Define how to start the MCP server (here via local stdio process)server_params = StdioServerParameters( command="python", args=["/path/to/math_server.py"] # MCP server providing math tools)

# Connect to the MCP server and load its toolsasync with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: await session.initialize() tools = await load_mcp_tools(session) # Convert MCP tools to LangChain tools

# Create a LangChain agent with these toolsllm = ChatOpenAI(model_name="gpt-4") # e.g. use GPT-4 via OpenAI APIagent = initialize_agent(tools, llm, agent="zero-shot-react-description")

result = agent.run("What is (3 + 5) * 12?") # Agent can use the math tools to compute thisprint(result) # Expected output: 96
复制代码

CrewAI

CrewAI是一个为协调多智能体“团队”而设计的 Python 框架,这些团队由一些互相协作的人工智能 Agent 组成。每个 Agent 都有明确定义的角色和任务。这个框架已被用于复杂的问题解决任务,例如自动化内容生成、软件开发工作流程和多智能体规划场景。

 

CrewAI 工具库现在支持 MCP,让你可以将 MCP 服务器视为 CrewAI Agent 的工具提供者。集成操作非常简单:你使用 MCPServerAdapter 连接到一个 MCP 服务器,并自动将其工具加载到你的 Agent 的工具带中。

 

代码片段

```from crewai import Agentfrom crewai_tools import MCPServerAdapterfrom mcp import StdioServerParameters

# Define MCP server (local process via stdio transport)server_params = StdioServerParameters( command="python3", args=["servers/my_mcp_server.py"], env={"UV_PYTHON": "3.12", **os.environ},)
# Connect to the MCP server and get its tools within a context managerwith MCPServerAdapter(server_params) as mcp_tools: print("Loaded MCP tools:", [tool.name for tool in mcp_tools])
# Create a CrewAI agent that can use these tools my_agent = Agent( role="Researcher", goal="Find insights from our internal knowledge base and Slack.", backstory="Has access to enterprise KB and Slack via MCP.", tools=mcp_tools, # provide the loaded MCP tools to the agent reasoning=True, verbose=True ) # ... (proceed to add agent to a crew or run tasks)
```
复制代码

AutoGen

AutoGen是一个开源框架(起源于微软),用于构建多智能体对话工作流程。它强调简单性、灵活性和可扩展性,使自动化工作流程的快速原型制作和部署成为可能。它的设计允许多个基于 LLM 的 Agent 聊天和合作完成任务(例如,一个“经理”Agent 和一个“工人”Agent 一起解决问题)。

 

AutoGen 在底层提供了一个 McpToolAdapter,通过一个高级的 mcp_server_tools() 函数暴露。在 AutoGen 中使用 Anthropic 的“fetch”MCP 服务器来获取网络内容的代码可能如下所示:

 

代码片段

```import asynciofrom autogen_ext.models.openai import OpenAIChatCompletionClientfrom autogen_ext.tools.mcp import StdioServerParams, mcp_server_toolsfrom autogen_agentchat.agents import AssistantAgent
async def main(): # Define the MCP server to use (e.g., a local web content fetcher) fetch_server = StdioServerParams(command="uvx", args=["mcp-server-fetch"]) # Load MCP tools (here, a "fetch" tool) tools = await mcp_server_tools(fetch_server) # Create an agent that has these tools available model_client = OpenAIChatCompletionClient(model="gpt-4o") agent = AssistantAgent(name="fetcher", model_client=model_client, tools=tools) # Give the agent a task that requires using the fetch tool result = await agent.run(task="Summarize the content of https://example.com/article") print(result) asyncio.run(main())```
复制代码

MCP 对 Agent 能力的影响

MCP 带来了 AI Agent 运作方式的改进,而且它不只是给 AI Agent 提供工具。MCP 解锁的额外能力包括:

 

  1. 增强的 Agent 记忆和状态持久性

  • 外部化长期记忆:Agent 可以使用 MCP 资源(如向量数据库或文件系统)存储和检索超出 LLM 有限上下文窗口的信息。这使得真正的长期记忆和学习成为可能。与 RAG 不同,源语料库是预先策划的,通常是静态的,Agent 可以动态决定存储什么,如何组织知识以及何时在 MCP 服务器上更新它。Agent 可以存储来自多个不同来源的不同信息,并在有新信息可用时完善先前存储的知识。它还可以存储用户偏好、对话历史和任务状态等细节,使将来与 Agent 的互动感觉更自然。

  • 跨工具调用的共享上下文:在 MCP 会话中,Agent 可以在多个工具调用之间保持上下文。例如,如果 Agent 计划一个事件,通过 MCP 从日历工具收集的信息可以在调用电子邮件工具时使用;同样,通过 MCP 就无需重新提示或丢失线索。

  • 持久的任务状态:对于多步骤任务,Agent 可以将进度或中间结果保存到 MCP 资源中,允许它们稍后恢复工作或将任务移交给其他 Agent。

  1. 工具互操作性和真正的模块化

  • 混合和匹配能力:Agent 可以同时连接到多个 MCP 服务器,动态地从不同的来源(例如云 API、内部数据库、本地文件系统)组合一套工具,纳入单个操作上下文中。同样,使用不同底层 LLM 的不同 AI Agent 可以无缝连接到同一个 MCP 服务器。

  • 动态工具发现:Agent 可以编程式地查询一个 MCP 服务器,看看有哪些可用工具、工具说明以及输入模式。这样 Agent 行为就更具适应性,使 Agent 可以在运行时决定哪些工具最适合给定任务。

  1. 为高级多 Agent 工作流和通信打下基础

  • 共享工作空间与工具包:MCP 可以为专业 Agent 团队提供共同基础。一个 Agent 可能会研究并保存其发现的内容到 MCP 文档存储中,另一个 Agent 随后访问这些信息以生成报告。理论上,足够强大的 Agent 应该能够同时完成这两项任务。但拥有专业 Agent 可以让开发者专注于特定功能。当报告生成需要深入的领域知识时,报告生成 Agent 的基础 LLM 可以被提示工程或微调,以特定方式生成报告。研究 Agent 可以对报告生成保持中立,并具有强大的搜索和检索能力。

  • Agent 即工具:整个 Agent 的功能可以被封装并作为 MCP 工具暴露。一个“验证 Agent”可以通过 MCP 提供 validate_output(text)工具,任何需要验证服务的其他 Agent 都可以调用它。这带来了层次化和模块化的 Agent 设计。Agent 可以接受详细的提示和具体指令。它还可以根据提供的输入调用不同的工具或数据源,而无需显式编程。其能力可以在后台发展,以支持多模态数据并吸收新的验证策略,而无需更改外部接口。

  • 编排多步骤流程:复杂的业务工作流通常涉及多个系统,可以通过专门从事不同任务的各种 Agent 来执行。任务可以从一个 Agent 转移到另一个 Agent,而 MCP 作为骨干。

观察到的 MCP 应用和采用情况

模型上下文协议开始在各种实际设置中得到实施,展示了其在概念框架之外的实用性:

 

  • 大规模企业自动化:Block 的“Goose”Agent 是一个现实世界的例子,其中 MCP 促进了内部 AI 助手与多个现有后端系统之间的连接。Agent 可以执行数据查询和自动化流程等任务,这有助于提高运营效率。

  • 开发者工具的上下文增强:将 MCP 集成到 IDE 和开发者平台中的趋势,正在创建比代码自动完成更强大的 AI 编码助手。这些助手通过 MCP 访问实时项目上下文(代码库结构、依赖项、文档、构建状态),可以提供更强大、更准确的代码生成和对复杂代码查询的全面回答。

  • 多系统工作流的编排:企业使用 MCP 来自动化跨越多个 SaaS 应用程序和内部系统的复杂工作流。例如,销售运营工作流可能涉及一个 Agent 从电子邮件中解析潜在客户(通过 MCP 电子邮件工具),在 CRM 中创建记录(通过 MCP Salesforce 工具),在 Slack 上通知团队(通过 MCP Slack 工具),并安排后续跟进(通过 MCP 日历工具)的流程,所有这些都通过统一的 MCP 界面管理。

  • 促进开放生态系统:MCP 是开源的,这鼓励了社区贡献。还有数量不断增长的开源 MCP 服务器,用于各种常见工具和服务,这些服务器正在被 AI 开发者社区迅速采用。

 

尽管 MCP 仍处于早期阶段,但它正在引起高度关注,并在现实世界中得到广泛采用。它有望标准化 AI Agent 与外部数据、工具和服务的交互方式。

总结

模型上下文协议是 AI Agent 领域的重要进步。MCP 为 Agent 提供标准化、开放的接口,使其能够连接工具、数据甚至其他 Agent,从而解决了构建实用、强大 AI 系统的最大挑战之一:集成的复杂性。

 

对于实践者、工程师和研究人员,MCP 提供了一条务实的路径,以实现:

 

  • 降低开发开销:减少编写定制集成代码的时间,更多地关注 Agent 智能和工作流程设计。

  • 增强模块化和可重用性:只需构建一次工具集成,在多个 Agent、框架和 LLMs 中使用它们。

  • 增强 Agent 能力:为 Agent 配备持久记忆,能够无缝使用多种工具,并为复杂的多 Agent 协作奠定基础。

  • 面向未来的架构:设计更适应 LLMs 和 Agent 技术快速变化趋势的 AI 系统。

 

MCP 不是 Agent 推理或编排框架(如 LangChain、CrewAI 或 AutoGen)的替代品。相反,它通过提供统一、强大的“连接层”来增强它们。随着协议的成熟和 MCP 服务器生态系统的扩展,我们可以期待看到更多创新应用,从管理我们数字生活的高度个性化的 AI 助手,到解决大规模企业和社会挑战的复杂的、自主的 Agent 系统。MCP 正在建造一座通向连接更紧密、更有能力的 AI 未来的桥梁,现在正是社区利用这一不断发展的标准并为其做出贡献的激动人心的时刻。

 

原文链接:

MCP: the Universal Connector for Building Smarter, Modular AI Agents

2025-09-11 10:4516

评论

发布
暂无评论

写代码过程中最忌讳什么?

Jackpop

10段实用Python代码,帮我省了几万块钱!

Jackpop

要想自助洗车加盟赚钱记住这几点

共享电单车厂家

自助洗车加盟 自助洗车品牌

开启全方位安全巡检

观测云

共享自助洗车机让你告别传统洗车

共享电单车厂家

共享自助洗车 自助洗车加盟

自助洗车市场悄然兴起你准备好了吗

共享电单车厂家

自助洗车 自助洗车加盟

API 网关 Apache APISIX 助力雪球双活架构演进

API7.ai 技术团队

zookeeper 投资 网关 APISIX APISIX Summit

Jupyter Notebook,太强大了!

Jackpop

JDK7 HashMap如何实现?

源字节1号

软件开发 前端开发 后端开发 小程序开发

SQL和Python 哪个更容易自学?

Jackpop

低代码开发:企业应用构建新模式

力软低代码开发平台

使用 Amazon EC2 降低 DeepRacer 的训练成本 DeepRacer-for-cloud 的实践操作

亚马逊云科技 (Amazon Web Services)

Amazon EC2 EC2

@开发者 云端一条生产线,让软件开发更敏捷、更安全

华为云开发者联盟

云计算 敏捷 华为云 devcloud

vue-表单输入绑定

小恺

6月月更

如何系统地学习 C++ 语言?太全面了!

Jackpop

测试进阶必备,这5款http接口自动化测试工具不要太香~

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口自动化测试

IT采购专家指导 联想百应618 IT运维软硬服一站集采

极客天地

7 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

“互联网+”大学生创新创业大赛来了,欢迎报名龙蜥社区赛题!

OpenAnolis小助手

开源 操作系统 互联网+ 龙蜥社区 大学生创新创业大赛

自助洗车机洗车怎么收费和付费

共享电单车厂家

自助洗车加盟 自助洗车收费 自助洗车付费

FutureTask

急需上岸的小谢

6月月更

华为云重磅发布:“乐高式”自动驾驶研发开放平台,携手伙伴共建生态

华为云开发者联盟

自动驾驶 云计算 华为云

Curve 进入 CNCF Sandbox,完善统一云原生开源存储拼图

网易数帆

开源 分布式 云原生 存储 cncf

阿里云 MSE 基于 Apache APISIX 的全链路灰度方案实践

API7.ai 技术团队

阿里云 MSE APISIX 网关 全链路灰度

大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

融云 x 川航: 为民航通信安上“即时之翼”

融云 RongCloud

Apache Dolphinscheduler3.0.0-beta-1 版本发布,新增FlinkSQL、Zeppelin任务类型

白鲸开源

Apache 大数据 开源 Apache DolphinScheduler 消息队列 workflow

首批 | 腾讯云完成国内首个云原生安全成熟度评估

腾讯安全云鼎实验室

云原生

SRE,了解一下?35+岁程序员新选择

华为云开发者联盟

SRE 华为云

24H共享便民自助洗车加盟怎么样

共享电单车厂家

共享自助洗车 自助洗车加盟 24小时自助洗车 便民自助洗车

MCP:构建更智能、模块化AI代理的通用连接器_AI&大模型_InfoQ精选文章