MCP(模型上下文协议) 协议

别名: 模型上下文协议 · Model Context Protocol

Anthropic 于 2024 年开源的开放协议,把「工具如何暴露、如何发现、如何调用」标准化,让 AI 应用以统一方式接入外部工具与数据源。协议只定义消息长什么样、按什么顺序发,角色分为 server 与 client。见[第 21 章](/chapters/21-mcp-v08/)。

它是什么

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 于 2024 年 11 月开源的开放协议,目标是让 AI 应用以统一方式接入外部工具与数据源。动机与 HTTP 统一网页、OAuth 统一授权同构:在它出现之前,每接一个新系统(GitHub、数据库、浏览器)就要写一套适配器,注册表里全是「各家方言」,且工具只在你的 Agent 里可用。MCP 把「工具如何暴露、如何发现、如何调用」标准化之后,「接一个新系统」从「写适配器」变成「spawn 它的 MCP server,然后发现它的工具」。

协议分层

MCP 是分层的,协议本身只定义消息长什么样、按什么顺序发:

  • 消息层:所有消息都是 JSON-RPC 2.0(request / notification / response);
  • 传输层:官方定义两种传输——stdio(子进程管道)与 Streamable HTTP;第 21 章手写的是 stdio;
  • 生命周期initialize 能力协商 → notifications/initialized → 正式干活(tools/listtools/call);
  • 角色:MCP server 是工具所有者,MCP client 是工具使用者(我们的 Agent 就是 client)。

在本教程的位置

第 21 章不装 MCP SDK,从 JSON-RPC 编解码、Content-Length 帧读写、握手状态机全部手写,再用 registerMcpTools 把远程工具并入 ch08 的本地工具注册表,ch18 的风险分级自动生效。协议版的关键错误分层沿袭了 ch08 的 error-as-data:未知工具是协议错误,工具运行失败是 isError: true 的数据——模型必须读得到失败才能恢复。

相关词条

出现在这些章节