创建会话
客户端通过调用session/new 方法创建新会话,并提供:
加载会话
支持loadSession 功能的代理允许客户端恢复之前的对话。此功能支持跨重启持久化以及在不同客户端实例之间共享会话。
检查支持
在尝试加载会话之前,客户端必须通过在initialize 响应中检查 loadSession 字段来验证代理是否支持此功能:
loadSession 为 false 或不存在,则代理不支持加载会话,客户端不得尝试调用 session/load。
加载会话
要加载现有会话,客户端必须调用session/load 方法,并提供:
session/update 通知的形式(如 session/prompt)将整个对话重放到客户端。
例如,来自对话历史记录的用户消息:
session/load 请求。
会话 ID
session/new 返回的会话 ID 是会话上下文的唯一标识符。
客户端使用此 ID 来:
- 通过
session/prompt发送提示请求 - 通过
session/cancel取消正在进行的操作 - 通过
session/load加载之前的会话(如果代理支持loadSession功能)
工作目录
cwd(当前工作目录)参数为会话建立文件系统上下文。此目录:
- 必须是绝对路径
- 必须用于会话,无论代理子进程在何处启动
- 应该作为文件系统上工具操作的边界
MCP 服务器
Model Context Protocol (MCP) 允许代理访问外部工具和数据源。创建会话时,客户端可以包含代理应连接的 MCP 服务器的连接详细信息。 MCP 服务器可以使用不同的传输方式连接。所有代理必须支持 stdio 传输,而 HTTP 和 SSE 传输是可选功能,可以在初始化期间检查。 虽然规范不要求,但新代理应该支持 HTTP 传输,以确保与现代 MCP 服务器的兼容性。传输类型
Stdio 传输
所有代理必须支持通过 stdio(标准输入/输出)连接到 MCP 服务器。这是默认的传输机制。服务器的人类可读标识符
MCP 服务器可执行文件的绝对路径
传递给服务器的命令行参数
启动服务器时要设置的环境变量
HTTP 传输
当代理支持mcpCapabilities.http 时,客户端可以使用 HTTP 传输指定 MCP 服务器配置。
必须是
"http" 以指示 HTTP 传输服务器的人类可读标识符
MCP 服务器的 URL
发送到服务器的请求中包含的 HTTP 头
SSE 传输
当代理支持mcpCapabilities.sse 时,客户端可以使用 SSE 传输指定 MCP 服务器配置。
必须是
"sse" 以指示 SSE 传输服务器的人类可读标识符
SSE 端点的 URL
建立 SSE 连接时包含的 HTTP 头
检查传输支持
在使用 HTTP 或 SSE 传输之前,客户端必须在初始化期间验证代理的功能:mcpCapabilities.http 为 false 或不存在,则代理不支持 HTTP 传输。
如果 mcpCapabilities.sse 为 false 或不存在,则代理不支持 SSE 传输。
代理应该连接到客户端指定的所有 MCP 服务器。
客户端可以使用此能力通过包含自己的 MCP 服务器直接向底层语言模型提供工具。