写点什么

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:456400

评论

发布
暂无评论

3DCAT荣获2021金陀螺“年度XR行业技术创新奖”“年度优秀VR行业应用奖”两项大奖

3DCAT实时渲染

云计算 教育 VR/AR 渲染 渲染器

redis未授权访问漏洞复现

喀拉峻

redis 黑客 网络安全 安全 信息安全

为什么HashMap会产生死循环?

王磊

CPython 性能将提升 5 倍?faster-python 项目 PEP 659 源码级解读

阿里巴巴终端技术

Python 源码 源码分析 CPython

深入浅出Apache Pulsar(1):Pulsar vs Kafka

云智慧AIOps社区

kafka 云原生 消息队列 kafka运维 Apache Pulsar 消息系统

如何处理消息丢失问题?

JavaEdge

1月月更

(1-14/14) 首位销售人员

mtfelix

300天创作 2022Y300P

如何基于知识图谱实体解析技术进行数据优化?

索信达控股

人工智能 AI 知识图谱 数据优化 索信达控股

架构实战营第 4 期 -- 模块七作业

烈火干柴烛灭田边残月

架构实战营

ThinkPHP6和GatewayWorker简单的示例

CRMEB

Kafka 为什么这么快?多的是你不知道的事

码哥字节

kafka 消息队列 1月日更 1月月更

【高并发】导致并发编程频繁出问题的“幕后黑手”

冰河

并发编程 多线程 高并发 协程 异步编程

软件设计——依赖倒置

苏州程序大白

架构师

使用Rainbond打包业务模块,实现业务积木式拼装

北京好雨科技有限公司

Android 64位架构适配

百瓶技术

andiod 客户端

政法委跨单位重点人员联防联控平台建设,治安防控系统开发

a13823115807

使用无参数函数进行命令执行

网络安全学海

黑客 网络安全 信息安全 渗透测试 安全漏洞

十大视频场景化应用工具+五大视频领域冠军/顶会算法重磅开源!

百度大脑

混沌工程之 Linux 网络故障模拟工具TC

zuozewei

Linux 混沌工程 1月月更

网络安全kali渗透学习 web渗透入门 Kali系统的国内源配置

学神来啦

表单数据高级搜索功能设计

全象云低代码

搜索引擎 前端 低代码 搜索 表单

人效将是快消品企业未来发展的最大瓶颈

百度大脑

人工智能

Python 为什么不设计 do-while 循环结构?

Python猫

Python

Go 语言快速入门指南:Go 并发初识

宇宙之一粟

golang 并发 Go 语言 1月月更

架构实战训练营-模块7-作业

温安适

「架构实战营」

APICloud 原生模块、H5模块、多端组件使用教程

YonBuilder低代码开发平台

前端开发 APP开发 APICloud 模块 跨端开发

前额皮质如何影响我们的工作效率?

LigaAI

工作效率 脑科学

低代码实现探索(二十二)如何构建一个可以看的懂的系统

零道云-混合式低代码平台

Hoo虎符研究院|区块链简报 20220117期

区块链前沿News

Hoo虎符 Hoo 虎符研究院 区块链资讯

Scrum Master如何参与每日Scrum(Daily Scrum)

Bruce Talk

Scrum 敏捷 Agile Coach/Facilitate

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