MCP协议
模型上下文协议(Model Context Protocol)是AI世界的"USB-C"接口标准,让AI应用能够无缝连接各种数据源和工具服务。
MCP概述
AI世界的"USB-C"接口标准
统一AI与外部世界的连接标准
MCP(Model Context Protocol)是由Anthropic推出的开放协议,旨在标准化AI模型与外部数据源、工具之间的通信方式。就像USB-C统一了电子设备的连接标准一样,MCP正在统一AI应用与外部服务的连接方式。
在MCP出现之前,每个AI应用都需要为不同的数据源和工具编写特定的集成代码,这导致了大量的重复工作和碎片化生态。MCP通过定义统一的接口规范,让开发者只需实现一次协议,就能让任何支持MCP的AI应用使用其服务。
架构解析
Host, Client, Server三层架构
Host是最终用户直接交互的AI应用程序,主要职责包括:
- 管理多个MCP Client的生命周期
- 协调不同Client之间的资源分配
- 处理用户输入和AI模型的响应
- 决定何时调用哪个Client的能力
- 维护安全边界和用户权限控制
典型示例:Claude Desktop、Cursor IDE、Windsurf等
Client是Host内部与Server通信的桥梁,主要职责包括:
- 与Server建立和维护连接
- 发送请求并接收响应
- 处理协议级别的消息格式转换
- 管理会话状态和错误恢复
- 实现传输层(stdio或HTTP/SSE)
通信方式:标准输入输出(stdio)或 HTTP with Server-Sent Events
Server是提供具体能力的独立进程或服务,主要职责包括:
- 暴露Resources(资源)供AI读取
- 提供Tools(工具)供AI调用
- 实现Sampling(采样)请求AI生成
- 处理权限验证和访问控制
- 管理自身的状态和资源
示例Server:文件系统、Git、数据库、Slack、浏览器自动化等
核心能力
Resources, Tools, Sampling三大支柱
Resources(资源)
Server暴露的只读数据资源,AI可以读取这些资源来获取上下文信息。如文件内容、数据库记录、API响应等。
Tools(工具)
Server提供的可调用函数,AI可以调用这些工具来执行操作。如创建文件、发送消息、执行命令等。
Sampling(采样)
Server可以请求Host的AI模型生成内容,实现双向通信。这让Server能够利用AI能力完成复杂任务。
// 点击上方卡片查看对应的能力示例
// Resources - AI读取资源
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "file:///project/README.md"
},
"id": 1
}
// Server返回资源内容
{
"jsonrpc": "2.0",
"result": {
"contents": [
{
"uri": "file:///project/README.md",
"mimeType": "text/markdown",
"text": "# 项目说明..."
}
]
},
"id": 1
}
MCP vs Function Calling
理解两者的区别与联系
| 对比维度 | Function Calling | MCP协议 |
|---|---|---|
| 定义 | AI模型原生能力,让模型输出结构化函数调用 | 应用层协议,标准化AI与外部服务的通信 |
| 层级 | 模型层能力 | 应用层协议 |
| 作用范围 | 单次请求-响应周期内的工具调用 | 持久连接,支持双向通信 |
| 发现机制 | 工具定义需在请求时提供 | 动态发现Server capabilities |
| 生态集成 | 每个应用单独实现 | 一次实现,多处复用 |
| 标准化 | 各厂商实现略有差异 | 统一的开放标准 |
| 关系 | MCP内部通常使用Function Calling来实现Tools调用 | |
Tool调用模拟器
体验MCP Tools的调用流程