了解何为模型MCP协议
1 简介
本文从MCP 设计思想和实现原理的进行分析。MCP(Model Context Protocol,模型上下文协议)是由 Anthropic 公司于 2024 年 11 月推出的开源协议标准。

它旨在解决大型语言模型(LLM)与外部工具、数据源(如文件系统、数据库、API 等)之间的集成难题。它不是一种具体的工具,而是 AI 生态中的“通用接口”,类似于“AI 应用的 USB-C 接口”。
它允许 LLM 安全、可控地访问和操作外部资源,从而从“被动思考者”转向“主动执行者”。以下是对 MCP 设计思想和实现原理的深入剖析。
2 设计思想:
- 统一性、安全性和扩展性
MCP 的核心设计思想源于 AI 代理(Agent)开发的痛点:
传统 Function Calling(如 OpenAI 的工具调用)依赖应用层预定义工具,导致扩展性差、代码碎片化,且难以跨模型兼容。
MCP 则采用模型主导的调用方式(model-driven invocation),让 LLM 基于上下文自主推理决定调用哪个工具、参数和时机,这体现了 Agent 思维的核心——自主性和适应性。
- 统一性(Standardization):
MCP 提供标准化协议,避免为每个数据源编写自定义适配器。无论连接文件系统还是第三方 API,都通过统一的客户端-服务器架构实现“即插即用”。
这类似于 HTTP 协议在 Web 中的作用:开发者无需重复造轮子,只需构建 MCP 服务器即可扩展 LLM 能力。
- 安全性(Security):
MCP 强调“最小权限原则”和加密传输(基于 WebSocket)。服务器端控制访问范围(如只读文件、认证令牌),防止敏感数据(如 API 密钥)泄露。
协议支持 Scopes(作用域)机制,允许细粒度授权,例如只允许 AI 读取特定目录而非整个系统。
- 扩展性(Scalability):
MCP 支持三种核心功能——Tools(工具执行,如运行脚本)、Resources(资源查询,如文件内容)和 Prompts(提示模板),可动态扩展。
设计时考虑了异步通信和状态管理,适用于实时交互场景。Anthropic 的黑客松实验(如控制 3D 打印机或实现“记忆功能”)验证了其潜力,推动社区构建 3000+ 开源 MCP 服务器。
这些思想使 MCP 成为 AI 生态的“事实标准”,类似于当年 OpenAI API 的影响力:一旦形成网络效应,后续迭代可快速修复缺陷。
4. 实现原理:
- 客户端-服务器架构与协议流程
MCP 的实现基于WebSocket 通信的客户端-服务器模型,协议消息采用 JSON 格式,确保跨平台兼容。
核心组件包括 MCP Client(集成在 LLM 应用中,如 Claude Desktop 或 Cursor IDE)、MCP Server(暴露外部资源的桥接器)和 MCP Host(LLM 模型本身)。
- 架构概述:
MCP Client:作为中介,负责与 LLM 和 Server 通信。支持多服务器连接(MultiServerMCPClient),每个会话无状态(stateless),工具调用后自动清理资源。
MCP Server:轻量级服务端,实现 Tools/Resources/Prompts 接口。例如,一个文件系统 MCP Server 可暴露 read_file(path) 工具,LLM 调用时 Server 执行实际操作并返回结果。
MCP Host:LLM(如 Claude)通过 Client 发送请求,接收响应后融入上下文。
- 协议流程(生命周期):
初始化:Client 连接 Server,建立 WebSocket 会话,协商认证(OAuth 或 API Key)。
发现(Discovery):LLM 查询可用 Tools/Resources(如列出文件列表)。
调用(Invocation):LLM 自主生成 JSON 请求,
例如:
text{
"type": "tool_call",
"tool": "read_file",
"params": {"path": "/game/assets/player.json"}
}
Server 执行并返回结果(如文件内容)。
响应与迭代:LLM 基于结果继续推理,支持异步回调。整个过程透明:LLM 无需知晓底层实现细节。
清理:会话结束,释放资源。
4 小结
异步与并行:支持多工具并发调用,适用于复杂任务。
错误处理:标准化异常格式(如 {“error”: “Permission Denied”}),便于调试。
SDK 支持:Anthropic 提供 Python/JS SDK(如 mcp 库),社区有 LangChain 适配器,便于集成。
与传统工具的区别:Function Calling 是“应用驱动”(预定义工具),MCP 是“模型驱动”(LLM 决策),更灵活,但需 LLM 支持(如 Claude 4 的 interleaved thinking)。
- 点赞
- 收藏
- 关注作者
评论(0)