Skip to content

模型上下文协议

MCP, Model Context Protocol

MCP

是 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 条记录,是否继续?」

您的浏览器不支持 SVG

  • 模型采样(Sampling)

模型采样允许 Server 借助 Client 来调用语言模型, 在保证安全性和用户控制的前提下,实现智能体的自主能力。

您的浏览器不支持 SVG

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(提示模板)

预定义的交互模板。