模型上下文协议
MCP, Model Context Protocol
是 Anthropic 于 2024 年 11 月开源发布的一个协议标准,旨在解决 AI 智能体(Agent)与外部数据源、工具之间的标准化连接问题。
为什么智能体需要 MCP?(解决什么痛点)
在构建智能体时,开发者面临着 “M x N” 的集成灾难:
- 假设有 M 个 AI 模型/应用(Claude Desktop, Cursor, VS Code, 自研 Agent)。
- 假设有 N 个外部工具/数据源(GitHub, Postgres, Notion, Slack, 本地文件系统)。
- 如果没有标准,开发者需要编写 M * N 个连接器。
MCP 将其简化为 M + N:
- 工具方只需要开发 1 个 MCP Server。
- AI 应用方只需要实现 1 个 MCP Client。
- 两者即可互通。
组件职责
| 组件 | 角色 | 职责 |
|---|---|---|
| MCP Host | 用户交互入口 | Claude Desktop、IDE 插件、自定义 AI 应用等 |
| MCP Client | 协议客户端 | 管理与 MCP Server 的连接,发送请求,处理响应 |
| MCP Server | 能力提供方 | 暴露 Resources、Tools、Prompts 等能力 |
| Transport | 传输层 | 支持 stdio(本地)和 HTTP+SSE(远程) |
MCP Client
- 信息引出(Elicitation)
信息引出机制允许服务端在交互过程中主动向用户请求特定信息, 从而创建更加动态和响应式的工作流。
典型场景
- 用户说「帮我订机票」,但未提供日期 → Server 引出:「请问您计划哪天出发?」
- 执行数据库操作前需要确认 → Server 引出:「此操作将删除 100 条记录,是否继续?」
- 模型采样(Sampling)
模型采样允许 Server 借助 Client 来调用语言模型, 在保证安全性和用户控制的前提下,实现智能体的自主能力。
MCP 三大核心能力
MCP Server 可以向客户端暴露三种类型的能力:
1. Resources(资源)
资源是只读的数据块。它们提供了上下文,让 AI 能够“看到”外部数据。
2. Tools(工具)
工具是可执行的函数。它们允许 AI 采取行动或执行计算。
json
// 工具定义示例
{
name: "query_database",
description: "执行 SQL 查询并返回结果",
inputSchema: {
type: "object",
properties: {
sql: {
type: "string",
description: "要执行的 SQL 语句"
}
},
required: ["sql"]
}
}3. Prompts(提示模板)
预定义的交互模板。