目录
MCP 是一个由 Anthropic 主导开发的开放协议,旨在标准化大型语言模型(LLM)与外部工具、数据源和计算资源之间的连接方式。它的核心思想是让模型能够安全、可控地“看到”和“使用”外部系统,从而极大地扩展模型的能力,而不需要为此重新训练模型。
你可以把它想象成 LLM 世界的 USB 协议 或 应用商店:它定义了一套标准接口,使得任何开发者都能为模型创建“外设”(工具和数据源),而模型则可以即插即用地使用它们。
一、MCP 诞生的背景与要解决的问题
在 MCP 出现之前,让 AI 模型使用外部功能主要有两种方式,但它们都存在局限性:
1.函数调用(Function Calling):
-
问题:需要将工具的功能和参数格式预先“硬编码”到给模型的系统提示(System Prompt)中。每增加、修改或删除一个工具,都需要重新调整提示词和代码,缺乏灵活性和可扩展性。
2.插件系统(Plugin Systems):
-
问题:通常是某个特定模型或平台(如 OpenAI ChatGPT Plugins)独有的。为一个平台开发的插件无法直接用在另一个平台上,造成了生态割裂和开发者的重复劳动。
MCP 的目标就是解决上述问题:
-
标准化:提供一套与模型无关的通用协议。
-
解耦:将工具/数据源的开发与模型本身分离开。
-
安全性:提供明确的权限控制和安全边界。
-
可扩展性:轻松地添加新的工具和数据源,而无需修改模型代码。
二、MCP 的核心概念与工作原理
MCP 的架构主要包含三个核心组件:
-
MCP 客户端(Client):
-
通常指大型语言模型及其运行的界面(如 Claude Console, Third-party AI apps)。
-
客户端的职责是发起请求,例如“请查询一下数据库X”、“请执行工具Y”。
-
-
MCP 服务器(Server):
-
这是一个独立的进程,负责管理具体的工具(Tools) 和资源(Resources)。
-
例如,一个“数据库服务器”可以提供“执行SQL查询”的工具;一个“文件系统服务器”可以提供“读取文件”的资源。
-
服务器可以由任何人开发,只要它遵循 MCP 协议。
-
-
MCP 协议(Protocol):
-
定义客户端和服务器之间如何通信的规范。它基于 JSON-RPC 2.0 over SSE(Server-Sent Events) 或 stdio。
-
规定了通信的消息格式、可调用的方法(如
tools/list
,tools/call
,resources/read
)和数据类型。
-
工作流程(以 Claude 询问今日天气为例):
-
初始化:Claude(客户端)启动时,会连接到用户预先配置好的“天气服务”MCP 服务器。
-
发现:Claude 向服务器发送
tools/list
请求,询问:“你有什么能力?”服务器回复:“我有一个叫get_weather
的工具,它需要location
参数。” -
请求:当你问 Claude “旧金山今天天气如何?”时,Claude 决定调用这个工具。它向服务器发送
tools/call
请求,参数为{“name": "get_weather", "arguments": {"location": "San Francisco"}}
。 -
执行:天气服务器收到请求后,执行内部逻辑(例如调用一个第三方天气API),获取旧金山的天气数据。
-
响应:服务器将天气数据按照标准格式返回给 Claude。
-
回复:Claude 接收到结构化的天气数据,组织成自然语言回复给你:“旧金山今天晴间多云,气温在15-20摄氏度之间。”
这个过程对用户是完全透明的,你只需要和 Claude 对话,它会在背后自动完成与 MCP 服务器的所有交互。
三、MCP 的主要功能
MCP 主要定义了两种类型的扩展:
-
工具(Tools):
-
允许模型执行一个动作。
-
示例:执行代码、发送邮件、在日历上创建事件、控制智能家居、下单购物。
-
对应
tools/call
方法。
-
-
资源(Resources):
-
允许模型读取(或订阅)外部数据源的内容,将其作为上下文信息。
-
示例:读取本地文件、查询数据库、获取实时股票价格、连接公司内部的Wiki或CRM系统。
-
对应
resources/read
或resources/subscribe
方法。
-
四、MCP 的核心优势与价值
-
突破模型固有局限:
-
让模型能够访问训练截止日期之后的新信息(实时数据)。
-
让模型能够处理其未见过的大量私有或专有数据(公司内部文档),而无需昂贵的微调。
-
赋予模型执行动作的能力,从“只会说”变成“能说能做”。
-
-
强大的安全性与可控性:
-
用户完全控制模型可以连接哪些服务器。模型不能随意访问未经授权的资源。
-
通信通常发生在本地或受信任的网络环境中,敏感数据不必发送到第三方API。
-
实现了最小权限原则,例如一个“计算器工具”服务器只能做数学计算,无法访问你的文件。
-
-
繁荣的生态系统:
-
对开发者友好:只需编写一次 MCP 服务器,理论上所有支持 MCP 的模型和应用(如 Claude, Cline, MCP Hub)都能使用它。
-
开源与开放:协议本身开源,鼓励社区贡献和创新。现在已经有了大量开源的 MCP 服务器实现,用于连接 GitHub, Jira, PostgreSQL, 本地文件系统等。
-
对企业级应用至关重要:企业可以为其内部系统(数据库、API、知识库)开发自定义的 MCP 服务器,让员工能通过自然语言安全地与这些系统交互。
-
-
降低成本和提高效率:
-
无需为了每一个新功能去微调或重新训练大模型。
-
开发一次,多处使用。
-
五、MCP 与其他技术的区别
-
vs. Function Calling:MCP 是外部的、动态发现的协议;而 Function Calling 通常是内嵌在模型API中的、需要预先定义的。
-
vs. ChatGPT Plugins:Plugins 是 OpenAI 特定的封闭生态;MCP 是开放、跨模型的协议。
-
vs. LangChain/ToolCalling:LangChain 是一个用于构建链的高层次框架,它本身可以利用 MCP 作为其底层工具调用的一种方式。MCP 是更底层的协议标准。
六、现状与未来展望
-
当前支持:MCP 由 Anthropic 大力推动,已在其产品 Claude Desktop 应用中全面集成。用户可以通过编辑一个简单的配置文件(
claude_desktop_config.json
)来添加自己需要的 MCP 服务器。 -
社区发展:一个名为 MCP Hub 的社区项目正在兴起,类似于一个“服务器商店”,让用户可以轻松发现和安装各种功能的 MCP 服务器。
-
未来方向:MCP 正在迅速成为 AI 应用架构中连接模型与外部世界的事实标准。预计未来几乎所有主流的 AI 助手和应用都会原生支持 MCP,使其成为AI基础设施的关键组成部分。
总结
MCP(Model Context Protocol)是一个革命性的开放协议,它通过标准化 LLM 与外部工具和数据源的交互方式,安全、高效地打破了AI模型的“信息茧房”和“无能之困”。它不仅是技术上的进步,更是生态和理念上的开放,为构建真正强大、实用且可控的AI应用奠定了坚实的基础。