Skip to main content
初始化阶段允许客户端代理协商协议版本、功能和身份验证方法。

在创建会话之前,客户端必须通过调用 initialize 方法来初始化连接,并提供: 它们应该还向代理提供名称和版本。
{
  "jsonrpc": "2.0",
  "id": 0,
  "method": "initialize",
  "params": {
    "protocolVersion": 1,
    "clientCapabilities": {
      "fs": {
        "readTextFile": true,
        "writeTextFile": true
      },
      "terminal": true
    },
    "clientInfo": {
      "name": "my-client",
      "title": "My Client",
      "version": "1.0.0"
    }
  }
}
代理必须用选定的协议版本和它支持的功能进行响应。它应该也向客户端提供名称和版本:
{
  "jsonrpc": "2.0",
  "id": 0,
  "result": {
    "protocolVersion": 1,
    "agentCapabilities": {
      "loadSession": true,
      "promptCapabilities": {
        "image": true,
        "audio": true,
        "embeddedContext": true
      },
      "mcp": {
        "http": true,
        "sse": true
      }
    },
    "agentInfo": {
      "name": "my-agent",
      "title": "My Agent",
      "version": "1.0.0"
    },
    "authMethods": []
  }
}

协议版本

出现在 initialize 请求和响应中的协议版本是一个标识主要协议版本的单个整数。此版本仅在引入重大变更时才会递增。 客户端和代理必须就协议版本达成一致,并根据其规范进行操作。 请参阅功能了解如何引入非破坏性特性。

版本协商

initialize 请求必须包含客户端支持的最新协议版本。 如果代理支持请求的版本,它必须用相同的版本进行响应。否则,代理必须用它支持的最新版本进行响应。 如果客户端不支持代理在 initialize 响应中指定的版本,客户端应该关闭连接并通知用户。

功能

功能描述了客户端和代理支持的特性。 initialize 请求中包含的所有功能都是可选的。客户端和代理应该支持其对等方功能的所有可能组合。 引入新功能不被视为破坏性变更。因此,客户端和代理必须initialize 请求中省略的所有功能视为不支持 功能是高级别的,不附加到特定的基础协议概念。 功能可以指定协议方法、通知的可用性,或其参数的子集。它们还可以信号代理或客户端实现的行为。 实现还可以使用 _meta 字段宣告自定义功能来指示对协议扩展的支持。

客户端功能

客户端应该指定是否支持以下功能:

文件系统

readTextFile
boolean
fs/read_text_file 方法可用。
writeTextFile
boolean
fs/write_text_file 方法可用。

了解更多关于文件系统方法

终端

terminal
boolean
所有 terminal/* 方法都可用,允许代理执行和管理 shell 命令。

了解更多关于终端

代理功能

代理应该指定是否支持以下功能:
loadSession
boolean
session/load 方法可用。
promptCapabilities
PromptCapabilities Object
指示 session/prompt 请求中可能包含的不同类型的内容的对象。

提示功能

作为基线,所有代理必须session/prompt 请求中支持 ContentBlock::TextContentBlock::ResourceLink 可选地,它们可以通过指定以下功能来支持更丰富的内容类型:
image
boolean
提示可以包含 ContentBlock::Image
audio
boolean
提示可以包含 ContentBlock::Audio
embeddedContext
boolean
提示可以包含 ContentBlock::Resource

MCP 功能

http
boolean
代理支持通过 HTTP 连接到 MCP 服务器。
sse
boolean
代理支持通过 SSE 连接到 MCP 服务器。注意:此传输已被 MCP 规范弃用。

会话功能

作为基线,所有代理必须支持 session/newsession/promptsession/cancelsession/update 可选地,它们可以通过指定附加功能来支持其他会话方法和通知。
session/load 仍由顶级 load_session 功能处理。 这将在未来版本的协议中统一。

实现信息

客户端和代理应该分别在 clientInfoagentInfo 字段中提供关于其实现的信息。两者都包含以下三个字段:
name
string
用于编程或逻辑使用,但如果 title 不存在,可用作显示名称回退。
title
string
用于 UI 和最终用户场景 — 优化为易于阅读和理解的格式。如果未提供,名称应用于显示。
version
string
实现的版本。可以显示给用户或用于调试或指标目的。
注意:在未来版本的协议中,此信息将是必需的。

连接初始化完成后,您就可以创建会话并开始与代理对话了。