MCP 协议:AI 与工具互联的开放标准
什么是 MCP?
Model Context Protocol(MCP)是 Anthropic 推出的一种开放协议,旨在标准化应用程序如何向大语言模型(LLM)提供上下文信息和工具调用能力。你可以把它理解为 AI 应用的 USB-C 接口——提供一个统一的标准,让不同的 AI 客户端和工具服务端能够互相连接。
为什么需要 MCP?
在 MCP 出现之前,每个 AI 工具集成都需要定制开发:
- 每个 LLM 平台有自己的插件规范
- 每个工具需要独立的适配层
- 上下文传递方式各异,缺乏统一标准
MCP 试图解决这些痛点,提供一个通用的、开放的协议标准。
核心架构
MCP 采用典型的客户端-服务端(Client-Server)架构:
1 | ┌─────────────────┐ ┌─────────────────┐ |
MCP Host
MCP Host 是用户直接交互的应用程序,如 Claude Desktop、IDE 插件等。它负责:
- 加载和管理 MCP Server
- 将 LLM 的请求路由到对应的工具
- 将工具返回的结果传递给 LLM
MCP Client
Client 是 Host 与 Server 之间的内部通道,每个 Server 对应一个 Client 实例。它维护一对一的连接状态。
MCP Server
Server 是轻量级程序,通过 MCP 协议暴露特定功能。每个 Server 提供三类核心能力:
- Resources(资源):暴露可读的数据,如文件内容、API 响应
- Tools(工具):可执行的功能,如运行命令、调用 API
- Prompts(提示模板):预定义的 LLM 交互模板
传输层
MCP 目前支持两种传输方式:
stdio(标准输入输出)
Server 作为子进程运行,通过标准输入/输出与 Client 通信。适合本地工具集成,延迟低,无需网络配置。
1 | { |
SSE(Server-Sent Events)
通过 HTTP 进行通信,适合远程服务场景。Server 作为独立的 HTTP 服务运行,Client 通过 SSE 接口连接。
1 | GET /sse → Server 推送事件 |
核心协议功能
资源(Resources)
资源是 Server 暴露给 LLM 的结构化数据:
1 | 协议格式:scheme://path |
- 支持文本和二进制资源
- 支持资源的订阅和变更通知
- 通过 URI 进行唯一标识和引用
工具(Tools)
工具是 LLM 可以执行的函数,定义了清晰的输入输出接口:
1 | { |
提示模板(Prompts)
预定义的交互模板,用于常见场景:
1 | { |
实际使用示例
本地文件系统集成
1 | // ~/.config/opencode/opencode.json |
数据库查询
1 | { |
GitHub API 集成
1 | { |
MCP 的优势
| 特性 | 传统方式 | MCP |
|---|---|---|
| 集成方式 | 定制开发 | 即插即用 |
| 协议标准 | 各自为政 | 统一开放 |
| 安全性 | 需自行实现 | 标准化权限控制 |
| 可复用性 | 低 | 高,Server 可共享 |
| 生态 | 碎片化 | 统一生态 |
生态现状
目前 MCP 生态已经相当丰富:
官方 Server:
@modelcontextprotocol/server-filesystem— 文件系统访问@modelcontextprotocol/server-postgres— PostgreSQL 数据库@modelcontextprotocol/server-github— GitHub API@modelcontextprotocol/server-puppeteer— 浏览器自动化
社区 Server:
- 各种数据库(MySQL, Redis, MongoDB 等)
- 云服务(AWS, GCP 等)
- 开发工具(Git, Docker, Kubernetes 等)
- 第三方 API(Slack, Notion, Jira 等)
与 Function Calling 的区别
| MCP | Function Calling | |
|---|---|---|
| 范围 | 完整的工具集成协议 | 仅函数调用规范 |
| 资源管理 | 支持资源暴露和订阅 | 不支持 |
| 提示模板 | 内置支持 | 需自行实现 |
| 传输层 | 标准化的 stdio/SSE | 通常内嵌在 API 中 |
| 生态 | Server/Client 生态 | 平台绑定 |
总结
MCP 协议代表了 AI 工具集成的一个重要趋势——标准化和开放化。它通过定义清晰的协议边界,让 AI 应用和工具服务能够解耦发展,各自专注于自己的领域。
对于开发者来说,MCP 带来的好处是显而易见的:
- 即插即用:标准化的 Server 可以无缝接入任何兼容的 Client
- 易于扩展:编写一个 MCP Server 即可被所有 MCP Host 使用
- 安全可控:Server 级别的权限控制,LLM 无法越权操作
随着更多平台和工具支持 MCP,它有望成为 AI 时代的通用集成标准。
