MCP是什么?——为AI代理设计的标准协议

引言

本文将从基础开始解释随着AI代理进化而出现的"MCP(Model Context Protocol)":

  • 什么是AI代理
  • 为什么需要MCP
  • 如何运作
  • 被使用的场景
  • 安全性及未来展望

什么是AI代理

提到LLM,最普遍的用法是像ChatGPT那样,人类给LLM指示,然后生成回答文本。更进一步的用法是让AI执行某些处理,比如翻译或摘要文本数据后传递给其他处理,这是函数或任务级别的处理。

最近一年备受关注的"AI代理"则是更进一步的扩展,让AI自主承担整个工作流。在一系列工作流中,AI不是每次都需要人类指示,而是通过几次对话,甚至在没有指示的情况下,自主与外部工具和数据源协作执行各种任务,作为代理承担整个工作流。

例如,让AI代理处理新员工入职流程:

AI代理入职流程示例

来源:https://n8n.io/

这是使用IPaaS工具n8n构建的AI代理示例。当新员工注册后,AI代理通过聊天交互,然后根据交互内容自动执行各系统账户发放和Slack频道邀请等操作。

当然,通过明确规则和条件分支,即使不使用AI代理的IPaaS也能实现自动化。但条件分支过多的组织中,维护这种自动化非常困难。条件分支超过5个时,IPaaS的处理会变得很麻烦。

然而,通过将AI嵌入这些处理,用自然语言与AI交互,并让AI处理后续流程,可以大幅减少IPaaS或代码中的条件分支。此外,当出现新情况(如市场营销部门员工偶尔需要内部销售工作)时,无需新增条件分支,这也是AI代理的优势。

AI代理的构建常用框架包括n8n、DifyPydantic AICrew AI等。

MCP是什么

MCP是LLM与外部数据源和工具共享上下文并无缝协作的开放标准协议。最常用的比喻是"AI应用的USB-C端口"(Anthropic官方文档中也如此描述)。

MCP架构图

来源:https://qiita.com/syukan3/items/f74b30240eaf31cb2686

就像USB-C通过标准化端口连接PC、智能手机、显示器和充电器一样,MCP通过标准化方法连接LLM和各种外部工具/服务。类似例子还有"电源插座",通过标准化协议为吸尘器、冰箱、电视等家电供电,使不同建筑都能通过通用设备供电。

MCP也可以视为"AI代理的API端点"。就像企业通过API向其他应用公开服务一样,MCP为AI代理提供公开工具的方法。

为什么需要MCP(出现背景的问题)

MCP的出现源于希望用通用标准连接LLM和各种协作目标的需求。这里深入探讨这种"需求"为何产生(仅为个人观点,仅供参考)。

使用LLM编写代码时,传递结构化上下文数据能获得更精确的代码。例如,提供输入和输出的CSV数据样本即可生成可用代码。

2022年11月30日ChatGPT的"GPT-3.5"发布时,大家通过复制粘贴电子表格数据或指定单元格编号来传递数据结构给ChatGPT生成GAS代码。处理越复杂,这种流程的难度越高。

2023年中期,OpenAI和Google开始扩展API和外部工具的协作功能。这些功能的增加必然源于"向AI传递结构化数据"的需求。直接访问数据源对AI模型处理结构化数据更高效。

虽然OpenAI、Google、Anthropic都有各自的API,但调用方法不兼容,无论是编写代码还是通过IPaaS实现,都需要分别开发。即使是同一供应商的模型,切换模型时也可能需要重写代码。

当然,AI模型和协作工具/服务的数量也很多,开发成本会变成M x N的组合。

总结MCP出现的背景问题:

  • AI x 协作工具的组合导致的开发成本高
    • 需要为每个AI供应商/模型开发
    • LLM应用或代理需要为每个协作工具开发
      • 需要跟进工具API的变更,维护成本高
  • 工具和功能的复用困难
    • 为某个AI代理开发的工具协作功能难以在其他AI代理或不同框架(如PydanticAI、Crew AI、n8n等)中复用
    • 导致相同功能在不同地方重复开发

MCP作为解决这些问题的通用标准协议被提出。通过遵循MCP,各种LLM应用或AI代理在连接特定工具(如GitHub)时,只需使用该工具的MCP服务器,即可不受AI模型影响,用通用方法开发。

此外,当协作工具变更或新增时,如果存在该工具的MCP服务器,代码复用部分会增加,从而消除M x N的组合,提高整个生态系统的开发效率。

MCP优势

2024年底Anthropic(Claude开发方)提出MCP,2025年3月OpenAI的CEO Sam Altman宣布在Agents SDK和ChatGPT Desktop中支持MCP,使MCP成为AI代理的标准协议。

Model Context Protocol (MCP) – Anthropic

Sam Altman 的X发言

Microsoft同月在Azure Open AI中公开整合MCP的文章,Google也发布了类似文章,预计未来开发会遵循MCP协议。

Model Context Protocol (MCP): Integrating Azure OpenAI for Enhanced Tool Integration and Prompting | Microsoft Community Hub

使用模型上下文协议(MCP) | Google AI for Developers

MCP的架构

MCP的架构主要由以下三个角色组成:

角色说明示例
MCP主机作为LLM对话的桥梁。用户通过聊天输入指令或问题,MCP主机通过MCP客户端处理输入并调用LLM。Claude Desktop
MCP客户端在MCP主机中运行,建立一个或多个合适的MCP服务器连接。将用户输入传递给LLM,并将LLM的建议转换为对MCP服务器的请求。内置于MCP主机中,每个主机实现不同
MCP服务器根据MCP客户端的请求,对特定工具或数据源获取/修改数据,或通过API执行特定操作/任务。GitHub MCP服务器

MCP协议定义了这些角色之间的通信方式,使用JSON-RPC2.0消息。

MCP架构图

例如,使用Cursor和GitHub MCP服务器将Issue或Pull Request的审查内容反映到代码并重新推送的场景中,MCP主机是Cursor,MCP客户端是Cursor内置的代理模式程序,MCP服务器是GitHub MCP服务器。

MCP主机和客户端通常是同一的,所以具体想象起来可能有点困难。使用VS Code的ClineRoo Code扩展,或GitHub Copilot时,可以将VS Code视为MCP主机,Cline、Roo Code、GitHub Copilot视为MCP客户端。未来如果Alexa具备与MCP服务器通信的功能,Amazon Echo可能成为MCP主机,Alexa成为MCP客户端。

MCP让AI代理能做什么

在MCP协议中,MCP服务器可以向AI代理(客户端)公开以下主要功能(原语):

工具 (Tools)

让AI代理在外部执行特定操作的功能。例如,文件读写、外部API调用、网页抓取、数据库操作等。MCP客户端获取服务器提供的工具列表和说明,根据提示内容选择合适的工具执行。

资源 (Resources)

公开实时更新的数据或内容给AI代理。例如,本地文件内容、数据库记录、API获取的最新信息等。这使AI代理能基于最新上下文做出判断。

提示 (Prompts)

在服务器端定义可重用的提示模板和工作流,提供给AI代理。这有助于指导AI代理执行特定任务的步骤和格式。

采样 (Sampling)

通常客户端向服务器发送请求,但通过采样功能,MCP服务器可以向AI代理(LLM)请求任务执行或补全。这使AI和外部工具能相互协作,构建更灵活强大的系统。

(补充:还有用于安全文件访问的"根(Roots)"和定义通信方式的"传输(Transports)"等原语,但此处省略详细说明。)

MCP如何被使用

MCP自发布以来迅速被各种平台和应用采用。以下是一些调查结果:

多样的客户端/主机应用

AI编码IDE Cursor 使用MCP获取网站调试信息(控制台日志、网络日志等)、网页抓取、加密货币价格获取、访问图像生成模型等,大幅扩展AI代理的功能。

Claude Desktop 通过MCP服务器执行网页搜索、操作网页、引用数据库内容等。

工作流自动化工具 n8n 和AI代理构建框架 PydanticAI 也实现了MCP客户端功能,通过MCP服务器使用外部工具。PydanticAI中还有提供沙箱化Python执行环境的MCP服务器示例。

Microsoft Copilot Studio 将MCP服务器作为连接器基础设施,实现与各种数据源的安全连接。

其他如 WindsurfClineZedJetBrainsOpenAI Agent SDK 等开发工具和框架也支持MCP。

Windsurf 最近被OpenAI收购,关注度很高。

个人认为,AI编码方面,Visual Studio Code和GitHub Copilot未来会迅速进化。虽然Cursor和Cline领先,但GitHub Copilot在2025年2月新增了代理模式,使VS Code本身就能实现类似功能。此外,Cursor和Windsurf本身就是Microsoft开源开发的VS Code的分支,GitHub作为全球最大代码库在Microsoft旗下,OpenAI获得Microsoft巨额投资并与Azure建立合作伙伴关系。因此,Microsoft凭借其资金实力和软件开发/AI开发的生态系统,未来可能取代现有工具。

丰富的MCP服务器生态系统

已有大量MCP服务器支持文件系统、网页搜索(Brave、Perplexity、Tavily等)、数据库(Postgres、Redis、Superbase等)、GitHub、Slack等服务。

这些MCP服务器除了Anthropic的官方集合,还通过SmitheryMCP.soGlamaAwesome MCP Servers等社区主导的目录和平台公开共享。通过这些平台可以找到所需的MCP服务器并确认使用方法。

不仅针对特定服务,还有辅助代理思考过程的服务器,如"Sequential Thinking"服务器,以及获取IETF文档(RFC)的服务器等独特功能的服务器正在开发中。

安全性

MCP设计时已内置端到端加密、访问控制、数据隔离等安全最佳实践。但MCP生态系统仍较新,处于快速增长阶段。服务器的发现、安装、工具间名称冲突等问题,未来通过标准化和工具开发会进一步强化。特别是远程运行MCP服务器时,需要认证等对策。

OSS的MCP服务器

这不仅限于MCP服务器,对OSS应用来说,社区公开的MCP服务器程序可能存在恶意行为。例如,Notion的MCP服务器在https://github.com/makenotion/notion-mcp-server公开,由Notion公司自身的makenotion组织开发,相对安全。但即使Notion公司无恶意,也可能因意外行为导致泄露。

任何人都可以创建MCP服务器

Web应用的MCP服务器API公开后,任何人都可以创建。例如,Raindrop书签管理服务没有官方MCP服务器,但有个人开发的MCP服务器。

https://github.com/adeze/raindrop-mcp

这是用户adeze的个人仓库,仅adeze一人作为提交者。通过克隆该仓库并让Cursor或Cline检查,Claude 3.7 Sonnet的回答显示没有明显恶意或安全问题。

安全使用MCP服务器的方法

首先在Anthropic的MCP服务器集中寻找

https://github.com/modelcontextprotocol/servers

modelcontextprotocol GitHub组织是Anthropic提出MCP协议时创建的。通过WHOIS查询可知认证域名modelcontextprotocol.io属于Anthropic PBC。

Anthropic官方站点的"MCP"页面可以直接访问:

https://docs.anthropic.com/ja/docs/agents-and-tools/mcp

这里列举了Google Drive等几个安全的MCP服务器示例。虽然数量不多,但建议优先从这里寻找。

使用官方等可信开发者的MCP服务器

在GitHub上公开的MCP服务器,建议检查仓库所有者。访问所有者页面(如https://github.com/makenotion),阅读About部分即可大致了解。

使用Web服务操作的MCP服务器时,建议使用该服务开发者公开的MCP服务器。

使用开发者多的仓库

GitHub仓库的Contributors部分显示开发者数量。Anthropic官方MCP服务器集的仓库在2025年5月已有507名开发者。

Contributors示例

使用前让AI确认安全性

无论是否有多个开发者,当不得不使用第三方MCP服务器时,克隆仓库后用Cursor或Cline检查:

请检查整个项目的代码,确认是否存在恶意实现或安全问题。

向Claude、Gemini、OpenAI等多个模型提问更有效。当然,如果自己能仔细检查代码更好,但人类在0⇒1的代码阅读上无法胜过AI。三个模型检查只需15分钟,而人类无法达到这种速度和精度。如果三个模型都回答"没问题",基本可以放心。

不使用未公开源代码的MCP服务器

虽然很少见,但GitHub等未公开源代码的MCP服务器存在。除非是服务方托管的,否则原则上不应使用。

未来展望

MCP可能从根本上改变AI代理与外部世界协作的方式。随着标准化推进,更多企业将提供自己的MCP服务器,AI自动化和高级任务执行将加速。

未来路线图包括强化远程MCP服务器支持、更先进的认证机制、支持分层代理系统(多个代理协作)等,MCP生态系统的进一步进化值得期待。

A2A(Agent to Agent)协议

实际上,本文从3月开始逐步撰写,期间Google发布了A2A协议。详情请参考Google博客:

https://cloud.google.com/blog/ja/products/ai-machine-learning/a2a-a-new-era-of-agent-interoperability

简单来说,MCP让AI代理通过协议间接使用API操作Web服务。A2A世界观中,Web服务方也部署AI代理(“远程代理”),通过"客户端代理"和"远程代理"的通信,自主操作Web服务或返回信息。

在工作流中,“远程代理"可能反过来成为"客户端代理”。通过A2A协议,AI代理间可安全交换信息,在各种Web服务和应用上执行任务和数据交换。

A2A示意图

现代企业信息系统从以核心系统为中心的时代,转向通过各种SaaS松散耦合构建。MCP和A2A虽处于发展阶段,但正是这种时代的机制。过去需要通过代码或IPaaS开发连接各种企业应用,未来可能通过MCP和A2A机制,仅通过AI指示即可完成所有操作。

A2A合作伙伴

Google的公告显示Workday、Servicenow、Atlassian、SAP等企业应用公司已参与开发,实际朝着这个方向努力。

总结

Model Context Protocol(MCP)作为"AI应用的USB-C",是标准化LLM与外部工具/服务协作的革命性协议。通过MCP,摆脱了过去依赖自定义实现的复杂协作,现在可以将工具和功能作为MCP服务器提供和使用。

Claude Desktop、Cursor等AI应用和IDE,以及PydanticAI等框架已开始支持MCP,MCP服务器生态系统(提供文件系统、Web服务、数据库等功能)正在迅速扩展。

虽然MCP充满可能性,但需注意互联网上公开的第三方MCP服务器与其他OSS一样存在安全风险。MCP仍处于发展阶段,但随着A2A等补充协议的出现,作为加速开发更高级实用AI应用的关键技术,未来值得关注。

参考

03-29
### LLM与MCP的技术关联 #### 关于LLM(大型语言模型) 大型语言模型(LLM)是指具有大量参数并经过大规模语料库训练的神经网络模型,能够完成多种自然语言处理任务。例如,T5是一种由谷歌开发的大型语言模型,拥有110亿个参数,适用于文本分类、生成和翻译等多种任务[^3]。 #### 关于MCP 根据现有描述,“MCP”的具体含义可能指向一种解决AI Agent跨平台复用难题的新方案或框架。当前,AI Agent的核心功能在于“工具调用”和上下文感知,而像微软Azure AI Agent这样的产品通常需要定制化开发来满足特定需求,这限制了它们在不同环境下的通用性和可移植性[^1]。因此,MCP的目标很可能是提供一种标准化的方法或者协议,使得AI Agents能够在不同的平台上更容易地共享资源和服务。 #### 技术关联分析 从技术角度来看,LLMs 和 MCP 可能存在如下几种联系: 1. **增强智能代理的能力** 使用先进的LLMs作为基础组件之一,可以帮助构建更加智能化的AI Agents。比如,在供应链管理领域,借助强大的NLP技术和预测建模能力,可以进一步提高决策效率以及准确性。如果将此类高级别的语言理解和生成嵌入到基于MCP架构设计出来的agent当中,则可以使后者具备更强的语言交流能力和逻辑思考水平。 2. **促进多模态融合** 当前许多视觉生成系统的文本编码部分仍然停留在较旧版本的语言模型之上[^2]。但是随着新一代超大规规模型不断涌现出来,未来或许可以看到更多结合最新研究成果的产品问世——即不仅限于单纯的文字输入输出转换过程,还包括图像识别解释说明等内容创作环节。在这种情况下,假设某个项目采用了支持多类型数据交换传输标准(MCP),那么就有可能实现无缝对接各类异构子系统之间的操作流程。 3. **推动协作推理发展** 新兴强化学习算法如SWEET-RL展示了如何使多个独立运作个体之间建立起有效沟通机制从而达成共同目标的可能性[^4]。考虑到实际应用场景中经常涉及到复杂的交互关系网路结构,所以有必要探索一套既能保障信息安全又能简化接口配置手续的标准体系。而这正好契合了有关MCP所提到要克服传统做法里存在的局限性的初衷理念。 ```python # 示例代码展示了一个简单的LLM应用案例 def generate_response(prompt, model="t5-large"): from transformers import T5Tokenizer, T5ForConditionalGeneration tokenizer = T5Tokenizer.from_pretrained(model) input_ids = tokenizer.encode(prompt, return_tensors="pt") outputs = T5ForConditionalGeneration.from_pretrained(model).generate(input_ids=input_ids) response = tokenizer.decode(outputs[0], skip_special_tokens=True) return response print(generate_response("Translate to French: Hello world")) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值