Documentation Index
Fetch the complete documentation index at: https://mcp.gjxx.dev/llms.txt
Use this file to discover all available pages before exploring further.
Model Context Protocol 由几个关键组件组成,它们协同工作:
- 基础协议: 核心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。
- 响应进一步细分为成功结果或错误。必须设置
result或error中的一个。响应不能同时设置两者。
- 结果可以遵循任何JSON对象结构,而错误必须至少包含错误代码和消息。
- 错误代码必须是整数。
通知从客户端发送到服务器或反之,作为单向消息。接收者不能发送响应。
{
jsonrpc: "2.0";
method: string;
params?: {
[key: string]: unknown;
};
}
批处理
JSON-RPC还定义了一种通过在数组中发送来批处理多个请求和通知的手段。MCP实现可以支持发送JSON-RPC批次,但必须支持接收JSON-RPC批次。
MCP为HTTP使用提供了一个授权框架。使用基于HTTP传输的实现应该符合此规范,而使用STDIO传输的实现不应该遵循此规范,而是从环境中检索凭据。
此外,客户端和服务器可以协商自己的自定义认证和授权策略。
有关MCP认证机制演进的进一步讨论和贡献,请加入我们的GitHub Discussions来帮助塑造协议的未来!
协议的完整规范定义为TypeScript模式。这是所有协议消息和结构的真相来源。
还有一个JSON Schema,它是从TypeScript真相来源自动生成的,用于各种自动化工具。