Skip to main content
协议版本: 2025-03-26
模型上下文协议由几个协同工作的关键组件组成:
  • 基础协议:核心JSON-RPC消息类型
  • 生命周期管理:连接初始化、能力协商和会话控制
  • 服务器功能:服务器公开的资源、提示和工具
  • 客户端功能:客户端提供的采样和根目录列表
  • 工具:跨领域关注点,如日志记录和参数完成
所有实现必须支持基础协议和生命周期管理组件。其他组件可以根据应用程序的特定需求来实现。 这些协议层建立了明确的关注点分离,同时实现了客户端和服务器之间的丰富交互。模块化设计允许实现精确支持所需的功能。

消息

MCP客户端和服务器之间的所有消息必须遵循JSON-RPC 2.0规范。协议定义了以下类型的消息:

请求

请求从客户端发送到服务器或相反,以启动操作。
{
  jsonrpc: "2.0";
  id: string | number;
  method: string;
  params?: {
    [key: string]: unknown;
  };
}
  • 请求必须包含字符串或整数ID。
  • 与基本JSON-RPC不同,ID不得null
  • 请求ID在同一会话中不得被请求者先前使用过。

响应

响应作为对请求的回复发送,包含操作的结果或错误。
{
  jsonrpc: "2.0";
  id: string | number;
  result?: {
    [key: string]: unknown;
  }
  error?: {
    code: number;
    message: string;
    data?: unknown;
  }
}
  • 响应必须包含与其对应请求相同的ID。
  • 响应进一步分为成功结果错误。必须设置resulterror之一。响应不得同时设置两者。
  • 结果可以遵循任何JSON对象结构,而错误必须至少包含错误代码和消息。
  • 错误代码必须是整数。

通知

通知从客户端发送到服务器或相反,作为单向消息。接收者不得发送响应。
{
  jsonrpc: "2.0";
  method: string;
  params?: {
    [key: string]: unknown;
  };
}
  • 通知不得包含ID。

批处理

JSON-RPC还定义了批量处理多个请求和通知的方法,通过在数组中发送它们。MCP实现可以支持发送JSON-RPC批处理,但必须支持接收JSON-RPC批处理。

认证

MCP提供了用于HTTP的授权框架。使用基于HTTP的传输的实现应该符合此规范,而使用STDIO传输的实现不应该遵循此规范,而应从环境中检索凭据。 此外,客户端和服务器可以协商自己的自定义认证和授权策略。 有关MCP认证机制演变的进一步讨论和贡献,请加入我们的GitHub讨论,帮助塑造协议的未来!

模式

协议的完整规范定义为TypeScript模式。这是所有协议消息和结构的真实来源。 还有一个JSON模式,它是从TypeScript真实来源自动生成的,用于各种自动化工具。