常见类型

注释

interface Annotations {
  audience?: Role[];
  lastModified?: string;
  priority?: number;
}

客户端的可选注解。客户端可以使用注解来告知对象的使用方式或显示方式

受众?: Role[]

描述此对象或数据的目标客户是谁。

它可以包含多个条目来指示对多类受众有用的内容(例如,[“user”, “assistant”])。

最后修改时间?: 字符串

资源上一次被修改的时间,以ISO 8601格式的字符串表示。

应该是一个ISO 8601格式的字符串(例如"2025-01-12T15:00:58Z")。

示例:打开文件中的上一次活动时间戳、资源附加时间戳等。

优先级?: 数字

描述了此数据对服务器操作的重要性。

值为1表示"最重要",表示数据实际上是必需的,而0表示"最不重要",表示数据完全是可选的。

数字

AudioContent

interface AudioContent {
  _meta?: { [key: string]: unknown };
  annotations?: Annotations;
  data: string;
  mimeType: string;
  type: “audio”;
}

提供给大型语言模型或从模型接收的音频。

_元数据?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

注释?: Annotations

客户端的可选注解。

数据: 字符串

Base64编码的音频数据。

MIME类型: 字符串

音频的MIME类型。不同的提供商可能支持不同的音频类型。

BlobResourceContents

interface BlobResourceContents {
  _meta?: { [key: string]: unknown };
  blob: string;
  mimeType?: string;
  uri: string;
}

特定资源或子资源的内容。

_meta?: { [key: string]: unknown }

请参阅 通用字段:_meta 了解 _meta 的使用说明。

blob: 字符串

一个代表项目二进制数据的base64编码字符串。

mime类型?: string

该资源的MIME类型(如已知)。

uri: 字符串

此资源的统一资源标识符(URI)。

BooleanSchema

interface BooleanSchema {
  default?: boolean;
  description?: string;
  title?: string;
  type: “boolean”;
}

ClientCapabilities

interface ClientCapabilities {
  elicitation?: object;
  experimental?: { [key: string]: object };
  roots?: { listChanged?: boolean };
  sampling?: object;
}

客户端可能支持的功能。已知功能在此模式中定义,但这并非封闭集合:任何客户端都可以定义自己的附加功能。

启发?: 对象

如果客户端支持从服务器引发请求时存在。

实验性的?: { [key: string]: 对象 }

实验性、非标准的功能,客户端支持这些功能。

roots?: { listChanged?: boolean }

如果客户端支持列出根,则显示此选项。

类型声明
  • OptionallistChanged?: boolean

    客户端是否支持根列表更改通知。

采样?: 对象

如果客户端支持从LLM进行采样,则会显示此信息。

ContentBlock

ContentBlock:
  | TextContent
  | ImageContent
  | AudioContent
  | ResourceLink
  | EmbeddedResource

Cursor

智能体: 字符串

用于表示分页游标的不透明令牌。

EmbeddedResource

interface EmbeddedResource {
  _meta?: { [key: string]: unknown };
  annotations?: Annotations;
  resource: TextResourceContents | BlobResourceContents;
  type: “resource”;
}

资源的内容,嵌入到提示或工具调用结果中。

客户端可以自主决定如何最好地呈现嵌入资源,以便LLM和/或用户受益。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

标注信息?: Annotations

客户端的可选注解。

EmptyResult

空结果 Result

一个表示成功响应但不携带任何数据的响应。

EnumSchema

interface EnumSchema {
default?: string;
description?: string;
enum: string[];
enumNames?: string[];
title?: string;
type: “string”;
}

错误

interface Error {
  code: number;
  data?: unknown;
  message: string;
}
代码: 数字

发生的错误类型。

数据?: 未知

关于错误的附加信息。此成员的值是由发送方定义的(例如,详细的错误信息、嵌套错误等)。

消息 字符串

错误的简短描述。该消息应限于简洁的单句话。

图标

interface Icon {
mimeType?: string;
sizes?: string;
src: string;
}

一个可选择尺寸的图标,可在用户界面中显示。

媒体类型?: 字符串

如果源MIME类型缺失或通用时的可选MIME类型覆盖。 例如:“image/png”“image/jpeg”“image/svg+xml”

尺寸?: 字符串

可选字符串,用于指定图标可以使用的一个或多个尺寸。 例如:“48x48”“48x48 96x96”,或对于可缩放格式如SVG使用“any”

如果没有提供,客户端应当假定该图标可在任何尺寸下使用。

: 字符串

指向图标资源的标准 URI。可以是 HTTP/HTTPS URL,也可以是带有 Base64 编码图像数据的 data: URI。

消费者应该采取措施确保提供图标的URL来自与客户端/服务器相同的域名或受信任的域名。

消费者在消费SVG时应当采取适当的预防措施,因为它们可能包含可执行的JavaScript。

图像内容

接口 ImageContent {
  _meta?: { [key: string]: unknown };
  annotations?: Annotations;
  data: string;
  mimeType: string;
  type: “image”;
}

提供给大语言模型或从大语言模型接收的图像。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

注释?: Annotations

客户端的可选注解。

数据 string

经过Base64编码的图像数据。

媒体类型 字符串

图像的MIME类型。不同提供商可能支持不同的图像类型。

实现

interface Implementation {
icons?: Icon[];
name: string;
title?: string;
version: string;
websiteUrl?: string;
}

描述 MCP 的实现

图标?: Icon[]

客户端可在用户界面中显示的一组可选尺寸图标。

支持渲染图标的客户端必须至少支持以下MIME类型:

  • image/png - PNG 图像(安全,通用兼容)
  • image/jpeg (及 image/jpg) - JPEG 图像 (安全, 广泛兼容)

支持渲染图标的客户端还应支持:

  • image/svg+xml - SVG图像(可缩放但需要注意安全预防措施)
  • image/webp - WebP 图像(现代、高效格式)
名称 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

标题?: 字符串

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

网站网址?: 字符串

此实现所属网站的一个可选URL。

@格式: uri

JSONRPC错误

interface JSONRPCError {
  error: Error;
  id: RequestId;
  jsonrpc: “2.0”;
}

指示出现错误的请求响应。

JSONRPCNotification

接口 JSONRPCNotification {
  jsonrpc: “2.0”;
  method: 字符串;
  params?: { _meta?: { [key: string]: 未知 }; [key: string]: 未知 };
}

一个不期待回应的通知。

参数?: { _meta?: { [: string]: unknown }; [: string]: unknown }
类型声明
  • [: 字符串]: 未知
  • Optional_meta?: { [key: string]: unknown }

    查看 常规字段:_meta 了解关于 _meta 用法的说明。

JSONRPCRequest

interface JSONRPCRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: string;
  params?: {
    _meta?: { progressToken?: ProgressToken; [key: string]: unknown };
    [key: string]: unknown;
  };
}

一个期望得到响应的请求。

参数?: {
  元数据?: { 进度标记?: ProgressToken; [: string]: unknown };
  [: string]: unknown;
}
类型声明
  • [key: string]: unknown
  • Optional_meta?: { progressToken?: ProgressToken; [key: string]: unknown }

    参见 通用字段: _meta 了解 _meta 的使用说明。

    • OptionalprogressToken?: ProgressToken

      如果指定此参数,调用方请求为该请求接收带外进度通知(以notifications/progress形式表示)。该参数的值是一个不透明令牌,将附加到任何后续通知中。接收方没有义务提供这些通知。

JSONRPC响应

interface JSONRPCResponse {
  id: RequestId;
  jsonrpc: “2.0”;
  result: Result;
}

对请求的成功(非错误)回应。

LoggingLevel

LoggingLevel:
  | “debug”
  | “info”
  | “notice”
  | “warning”
  | “error”
  | “critical”
  | “alert”
  | “emergency”

日志消息的严重性。

这些映射到syslog消息严重性等级,如RFC-5424所规定:https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1

ModelHint

interface ModelHint {
  name?: string;
}

用于模型选择的提示。

此处未声明的键(Keys)当前在规范中未作规定,其含义由客户端自行解释。

名称?: 字符串

一个关于模型名称的提示。

客户端应将其视为模型名称的子字符串;例如:

  • claude-3-5-sonnet 应当匹配 claude-3-5-sonnet-20241022
  • sonnet 应该匹配 claude-3-5-sonnet-20241022, claude-3-sonnet-20240229 等.
  • claude 应匹配任何克劳德模型

客户端可以(MAY)将该字符串映射到不同供应商的模型名称或不同的模型系列,只要它满足类似的定位;例如:

  • gemini-1.5-flash 可以匹配 claude-3-haiku-20240307

ModelPreferences

interface ModelPreferences {
  costPriority?: number;
  hints?: ModelHint[];
  intelligencePriority?: number;
  speedPriority?: number;
}

服务端对模型选择的偏好,在采样时向客户端请求。

由于大语言模型(LLM)可能在多个维度上存在差异,选择“最佳”模型通常并不简单。不同模型在不同领域表现优异——有些速度更快但能力较弱,有些能力更强但成本更高,等等。该接口允许服务端通过多个维度表达其优先级,帮助客户端根据其使用场景做出合适的选择。

这些偏好始终是建议性的。客户端可以忽略它们。同样由客户端决定如何解释这些偏好,以及如何平衡它们与其他考量。

成本优先级?: 数字

在选择模型时成本优化的优先级。值为0表示成本不重要,而值为1表示成本是最重要的因素。

数字

提示?: ModelHint[]

用于模型选择的可选提示。

如果指定了多个提示信息,客户端必须按顺序评估它们 (这样会采用第一个匹配项)。

客户端应当优先考虑这些提示而非数值优先级,但依然可以使用优先级在模糊匹配中进行选择。

智能优先级?: 数字

在选择模型时,将智能和能力赋予多高的优先级。值为0表示智能不重要,而值为1表示智能是最重要的因素。

数字

speedPriority?: number

当选择模型时,对采样速度(延迟)的优先程度进行设定。值为0表示速度不重要,而值为1表示速度是最重要的因素。

数字

NumberSchema

interface NumberSchema {
  default?: number;
  description?: string;
  maximum?: number;
  minimum?: number;
  title?: string;
  type: “number” | “integer”;
}

PrimitiveSchemaDefinition

PrimitiveSchemaDefinition:
  | StringSchema
  | NumberSchema
  | BooleanSchema
  | EnumSchema

受限模式定义,只允许原始类型,不包含嵌套对象或数组。

ProgressToken

进度令牌: string | number

进度令牌,用于将进度通知与原始请求关联起来。

提示

interface Prompt {
  _meta?: { [key: string]: unknown };
  arguments?: PromptArgument[];
  description?: string;
  icons?: Icon[];
  name: string;
  title?: string;
}

服务器提供的一个提示或提示模板。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

arguments?: PromptArgument[]

用于模板化提示的参数列表。

描述?: string

此提示所提供的可选描述

图标?: Icon[]

客户端可在用户界面中显示的一组可选尺寸图标。

支持渲染图标的客户端必须至少支持以下MIME类型:

  • image/png - PNG图像(安全,具备通用兼容性)
  • image/jpeg (以及 image/jpg) - JPEG 图像 (安全,具备通用兼容性)

支持渲染图标的客户端还应支持:

  • image/svg+xml - SVG 图像 (可扩展但需要安全预防)
  • image/webp - WebP 图片(现代、高效格式)
名称 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

标题?: string

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

PromptArgument

interface PromptArgument {
  description?: string;
  name: string;
  required?: boolean;
  title?: string;
}

描述提示可以接受的参数。

描述?: 字符串

参数的易于理解的描述。

名称: 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

必填项?: 布尔型

该参数是否必须提供。

标题?: string

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

PromptMessage

interface PromptMessage {
  content: ContentBlock;
  role: Role;
}

描述作为提示信息的一部分返回的消息。

这类似于 SamplingMessage,但也支持从MCP服务器嵌入资源。

提示参考

interface PromptReference {
name: string;
title?: string;
type: “ref/prompt”;
}

识别一个提示。

名称 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

标题?: string

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

RequestId

RequestId: string | number

JSON-RPC 请求的唯一标识 ID。

资源

interface Resource {
  _meta?: { [key: string]: unknown };
  annotations?: Annotations;
  description?: string;
  icons?: Icon[];
  mimeType?: string;
  name: string;
  size?: number;
  title?: string;
  uri: string;
}

服务器能读取的一个已知资源。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

注释?: Annotations

客户端的可选注解。

描述?: string

该资源所代表的描述内容。

客户端可使用此功能来提升LLM对可用资源的理解。可将其视为向模型提供的"提示"。

图标?: Icon[]

客户端可在用户界面中显示的一组可选尺寸图标。

支持渲染图标的客户端必须至少支持以下MIME类型:

  • image/png - PNG 图像(安全,具备普遍兼容性)
  • image/jpeg(及image/jpg)- JPEG图像(安全、具备通用兼容性)

支持渲染图标的客户端还应支持:

  • image/svg+xml - SVG图像 (可缩放但需安全预防措施)
  • image/webp - WebP 图像(现代、高效格式)
媒体类型?: 字符串

该资源的MIME类型(如已知)。

名称 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

大小?: 数值

原始资源内容的大小(以字节为单位,即在进行base64编码或任何分词之前),如果已知的话。

这可供主机显示文件大小和估算上下文窗口使用量。

标题?: string

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

uri: 字符串

此资源的统一资源标识符(URI)。

ResourceContents

interface ResourceContents {
_meta?: { [key: string]: unknown };
mimeType?: string;
uri: string;
}

特定资源或子资源的内容。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

媒体类型?: 字符串

该资源的MIME类型(如已知)。

uri: 字符串

此资源的统一资源标识符(URI)。

interface ResourceLink {
_meta?: { [key: string]: unknown };
annotations?: Annotations;
description?: string;
icons?: Icon[];
mimeType?: string;
name: string;
size?: number;
title?: string;
type: "resource_link";
uri: string;
}

服务器能够读取的资源,包含在提示或工具调用结果中。

注意:工具返回的资源链接不保证会出现在resources/list请求结果中。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

注释?: Annotations

客户端的可选注解。

描述?: 字符串

该资源所代表的描述内容。

这可以被客户端用来提升LLM对可用资源的理解。可以将其视作对模型的“提示”。

图标?: Icon[]

客户端可在用户界面中显示的一组可选尺寸图标。

支持渲染图标的客户端必须至少支持以下MIME类型:

  • image/png - PNG 图像(安全,通用兼容)
  • image/jpeg (and image/jpg) - JPEG图像(安全,通用兼容性)

支持渲染图标的客户端还应支持:

  • image/svg+xml - SVG 图像(可缩放但需要采取安全预防措施)
  • image/webp - WebP 图片(现代、高效的格式)
媒体类型?: 字符串

该资源的MIME类型(如已知)。

名称 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

大小?: 数量

原始资源内容的字节大小(即在进行base64编码或任何标记化前),如果已知。

主机可使用此功能显示文件大小并评估上下文窗口使用情况。

标题?: string

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

uri: 字符串

此资源的统一资源标识符(URI)。

ResourceTemplate

Interface ResourceTemplate {
_meta?: { [key: string]: unknown };
annotations?: Annotations;
description?: string;
mimeType?: string;
name: string;
title?: string;
uriTemplate: string;
}

一个关于服务器上可用资源的模板描述。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

注释?: Annotations

客户端的可选注解。

描述?: 字符串

此模板用途的描述。

智能体可以利用这一点来增强大语言模型对可用资源的理解。它可以被视作给模型的一个“提示”。

媒体类型?: 字符串

与此模板匹配的所有资源的 MIME 类型。仅当所有匹配此模板的资源具有相同类型时,才应包含此项。

名称 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

标题?: string

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

uri模板 字符串

一个可用于构造资源URI的URI模板(根据RFC 6570)。

ResourceTemplateReference

interface ResourceTemplateReference {
type: “ref/resource”;
uri: string;
}

对某个资源或资源模板定义的引用。

uri: 字符串

资源的URI或URI模板。

结果

interface Result {
_meta?: { [key: string]: unknown };
[key: string]: unknown;
}
_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

角色

角色 “用户” | “智能体”

会话中信息和数据的发送者或接收者。

根节点

interface Root {
  _meta?: { [key: string]: unknown };
  name?: string;
  uri: string;
}

表示服务器可操作的根目录或文件。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

名称?: 字符串

根节点的可选名称。这可用于为根提供一个人类可读的标识符,对于显示目的或在应用的其他部分引用根节点时可能有用。

uri: 字符串

标识根目录的URI。目前必须以 file:// 开头。 在协议的未来版本中,此限制可能会放宽以允许其他URI方案。

采样消息

interface SamplingMessage {
  content: TextContent | ImageContent | AudioContent;
  role: Role;
}

描述一条发送给或从LLM API接收到的消息。

ServerCapabilities

interface ServerCapabilities {
  completions?: object;
  experimental?: { [key: string]: object };
  logging?: object;
  prompts?: { listChanged?: boolean };
  resources?: { listChanged?: boolean; subscribe?: boolean };
  tools?: { listChanged?: boolean };
}

服务器可能支持的能力。已知能力在此模式中定义,但这并不是一个封闭的集合:任何服务器都可以定义自己的额外能力。

completions?: object

若服务器支持参数自动补全建议,则此项存在。

实验性的?: { [key: string]: 对象 }

服务器支持的实验性非标准功能。

日志记录?: 对象

如果服务器支持向客户端发送日志消息,则显示此内容。

提示?: { listChanged?: boolean }

如果服务器提供任何提示模板,则显示此内容。

类型声明
  • OptionallistChanged?: boolean

    此服务器是否支持对提示列表变化的通知功能。

资源?: { listChanged?: boolean; subscribe?: boolean }

如果服务器提供任何可读取资源,则显示此项。

类型声明
  • OptionallistChanged?: boolean

    此服务器是否支持资源列表变更通知。

  • Optionalsubscribe?: boolean

    该服务器是否支持订阅资源更新。

工具?: { listChanged?: boolean }

如果服务器提供任何要调用的工具时显示此内容。

类型声明
  • OptionallistChanged?: boolean

    此服务器是否支持工具列表变更通知。

StringSchema

interface StringSchema {
  default?: string;
  description?: string;
  format?: “uri” | “email” | “date” | “date-time”;
  maxLength?: number;
  minLength?: number;
  title?: string;
  type: “string”;
}

文本内容

interface TextContent {
  _meta?: { [key: string]: unknown };
  annotations?: Annotations;
  text: string;
  type: “text”;
}

提供给大型语言模型的文本或由其返回的文本。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

注释?: Annotations

客户端的可选注解。

文本: 字符串

消息的文本内容。

TextResourceContents

interface TextResourceContents {
_meta?: { [key: string]: unknown };
mimeType?: string;
text: string;
uri: string;
}

特定资源或子资源的内容。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

媒体类型?: 字符串

该资源的MIME类型(如已知)。

文字: 字符串

项目的文本内容。只有当项目确实可以表示为文本(而非二进制数据)时,此项才必须设置。

uri: 字符串

此资源的统一资源标识符(URI)。

工具

interface Tool {
_meta?: { [key: string]: unknown };
annotations?: ToolAnnotations;
description?: string;
icons?: Icon[];
inputSchema: {
properties?: { [key: string]: object };
required?: string[];
type: “object”;
};
name: string;
outputSchema?: {
properties?: { [key: string]: object };
required?: string[];
type: “object”;
};
title?: string;
}

客户可以调用的工具定义。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

可选附加工具信息。

显示名称的优先级顺序为:title、annotations.title,然后是name。

描述?: string

工具的通俗易懂描述。

客户端可利用此功能提升LLM对可用工具的理解。可将其视为向模型提供的一种"提示"。

图标?: Icon[]

客户端可在用户界面中显示的一组可选尺寸图标。

支持渲染图标的客户端必须至少支持以下MIME类型:

  • image/png - PNG 图像(安全,通用兼容)
  • image/jpeg (及 image/jpg) - JPEG 图像 (安全, 广泛兼容)

支持渲染图标的客户端还应支持:

  • image/svg+xml - SVG 图像 (可缩放但需要安全预防措施)
  • image/webp - WebP 图像(现代、高效格式)
inputSchema: {
  属性?: { [: 字符串]: 对象 };
  必填项?: 字符串[];
  类型: “object”;
}

定义工具预期参数的 JSON Schema 对象。

名称 字符串

设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。

outputSchema?: {
  properties?: { [key: string]: object };
  required?: string[];
  type: “object”;
}

一个可选的JSON Schema对象,用于定义结构化内容字段中返回工具输出的结构。

标题?: string

专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。

如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。

ToolAnnotations

interface ToolAnnotations {
  destructiveHint?: boolean;
  idempotentHint?: boolean;
  openWorldHint?: boolean;
  readOnlyHint?: boolean;
  title?: string;
}

向客户端描述工具的额外属性。

注意: ToolAnnotations中的所有属性均为提示信息。 它们并不能保证对工具行为提供准确的描述 (包括描述性属性,如title)。

客户端永远不应基于从未经验证的服务器接收到的工具注解做出工具使用决定。

destructiveHint?: boolean

如果为 true,工具可能对其环境执行破坏性更新。 如果为 false,工具仅执行添加性更新。

(此属性仅在 readOnlyHint == false 时有效)

默认值:true

idempotentHint?: boolean

如果为 true,使用相同参数重复调用工具将不会对其环境产生额外影响。

(此属性仅在 readOnlyHint == false 时生效)

默认值: false

openWorldHint?: boolean

如果为 true,此工具可与外部实体的“开放世界”互动。如果为 false,该工具的互动领域是封闭的。例如,网络搜索工具的世界是开放的,而记忆工具的世界则不是。

默认:是

readOnlyHint?: boolean

如果为真,该工具不会修改其环境。

默认值: false

标题?: string

该工具的可读标题。

completion/complete

CompleteRequest

interface CompleteRequest {
  id: RequestId;
  jsonrpc: "2.0";
  method: "completion/complete";
  params: {
    parameter: { name: string; value: string };
    context?: { parameter?: { [key: string]: string } };
    reference: PromptReference | ResourceTemplateReference;
  };
}

一个从客户端向服务器发出的请求,用于请求补全选项。

参数: {
  argument: { 名称: string; : string };
  context?: { arguments?: { [: string]: string } };
  引用: PromptReference | ResourceTemplateReference;
}
类型声明
  • argument: { name: string; value: string }

    参数的详细信息

    • name: string

      参数名称

    • value: string

      用于完成匹配的参数值。

  • Optional上下文?: { arguments?: { [key: string]: string } }

    用于补全任务的额外、可选上下文

    • Optionalarguments?: { [key: string]: string }

      URI 模板或提示中先前已解析的变量。

CompleteResult

interface CompleteResult {
  _meta?: { [key: string]: unknown };
  completion: { hasMore?: boolean; total?: number; values: string[] };
  [key: string]: unknown;
}
服务器对完成请求的响应
_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

completion: { hasMore?: boolean; total?: number; values: string[] }
类型声明
  • OptionalhasMore?: boolean

    表示在当前响应之外,是否还有额外的完成选项,即使确切总数未知。

  • Optionaltotal?: number

    可用完成选项的总数。这可能超出响应中实际发送的值的数量。

  • values: string[]

    一个补全值数组。条目数量不得超过100个。

elicitation/create

ElicitRequest

Interface ElicitRequest {
  id: RequestId;
  jsonrpc: "2.0";
  method: "elicitation/create";
  params: {
    message: string;
    requestedSchema: {
      properties: { [key: string]: PrimitiveSchemaDefinition };
      required?: string[];
      type: "object";
    };
  };
}

服务器通过客户端向用户请求获取更多信息。

参数 {
  消息 string;
  请求的模式 {
    属性 { [ string]: PrimitiveSchemaDefinition };
    必需?: string[];
    类型 “object”;
  };
}
类型声明
  • message: string

    呈现给用户的消息。

  • requestedSchema: {
    properties: { [key: string]: PrimitiveSchemaDefinition };
    required?: string[];
    type: “object”;
    }

    JSON Schema 的一个受限子集。 仅允许顶层属性,不包含嵌套。

ElicitResult

interface ElicitResult {
  _meta?: { [key: string]: unknown };
  action: “accept” | “decline” | “cancel”;
  content?: { [key: string]: string | number | boolean };
  [key: string]: unknown;
}

客户端对启发式请求的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

action “accept” | “decline” | “cancel”

用户针对提问做出的回应行为。

  • “accept”: 用户提交了表单/确认了操作
  • “decline”: 用户明确拒绝该操作
  • “cancel”: 用户取消操作,未明确选择
内容?: { [key: string]: string | number | boolean }

提交的表单数据,仅当操作是"accept"时存在。 包含与请求模式匹配的值。

初始化

InitializeRequest

interface InitializeRequest {
id: RequestId;
jsonrpc: “2.0”;
method: “initialize”;
params: {
capabilities: ClientCapabilities;
clientInfo: Implementation;
protocolVersion: string;
};
}

该请求是客户端首次连接时发送给服务器的,请求开始初始化。

参数: {
  能力: ClientCapabilities;
  客户端信息: Implementation;
  协议版本: string;
}
类型声明
  • clientInfo: Implementation
  • protocolVersion: string

    客户端支持的 Model Context Protocol 最新版本。客户端也可以选择支持较早版本。

InitializeResult

interface InitializeResult {
  _meta?: { [key: string]: unknown };
  capabilities: ServerCapabilities;
  instructions?: string;
  protocolVersion: string;
  serverInfo: Implementation;
  [key: string]: unknown;
}

在接收到客户端的初始化请求后,服务器会发送此响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

指令?: 字符串

关于如何使用服务器及其功能的说明。

这可以被客户端用来改进LLM对可用工具、资源等的理解。可以将其视为对模型的“提示”。例如,此信息可能会被添加到系统提示中。

协议版本 string

服务器希望使用的Model Context Protocol版本。这可能与客户端请求的版本不匹配。如果客户端无法支持此版本,必须断开连接。

日志/设置级别

SetLevelRequest

interface SetLevelRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “logging/setLevel”;
  params: { level: LoggingLevel };
}

来自客户端的请求,用于启用或调整日志记录。

参数: { level: LoggingLevel }
类型声明
  • 客户端希望从服务器接收的日志记录级别。服务器应当将此级别及以上(即更严重)的所有日志作为通知/消息发送给客户端。

notifications/cancelled

CancelledNotification

interface CancelledNotification {
  jsonrpc: “2.0”;
  method: “notifications/cancelled”;
  params: { reason?: string; requestId: RequestId };
}

任何一方都可以发送此通知,以表示它正在取消先前发出的请求。

请求应该仍在传输过程中,但由于通信延迟,该通知有可能在请求已经完成后才到达。

此通知表示结果将不被使用,因此任何关联的处理应停止。

一个客户端不得尝试取消其 initialize 请求。

params: { reason?: string; requestId: RequestId }
类型声明
  • Optionalreason?: string

    一个描述取消操作原因的可选字符串。该内容可选择被记录日志或向用户展示。

  • requestId: RequestId

    要取消的请求ID。

    这必须对应于先前在同一方向上发出的请求的ID。

notifications/initialized

InitializedNotification

interface InitializedNotification {
jsonrpc: “2.0”;
method: “notifications/initialized”;
params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}

初始化完成后,此通知从客户端发送至服务器。

params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown }
类型声明
  • [key: string]: unknown
  • Optional_meta?: { [key: string]: unknown }

    查看 常规字段:_meta 了解关于 _meta 用法的说明。

notifications/message

LoggingMessageNotification

interface LoggingMessageNotification {
  jsonrpc: “2.0”;
  method: “notifications/message”;
  params: { 数据: unknown; 级别: LoggingLevel; 记录器?: string };
}

服务器向客户端传递日志消息的JSONRPC通知。如果客户端未发送任何logging/setLevel请求,服务器可自行决定自动发送哪些消息。

参数: { 数据: 未知类型; 级别: LoggingLevel; 记录器?: 字符串 }
类型声明
  • dataunknown

    需要记录的数据,例如字符串消息或对象。允许任何可JSON序列化的类型。

  • 此日志消息的严重程度。

  • Optionallogger?: string

    可选的日志记录器名称,用于标识发出此消息的日志记录器。

notifications/progress

ProgressNotification

interface ProgressNotification {
  jsonrpc: "2.0";
  method: "notifications/progress";
  params: {
    message?: string;
    progress: number;
    progressToken: ProgressToken;
    total?: number;
  };
}

一个用于通知接收方关于长时间运行请求进度更新的带外通知。

参数: {
消息?: string;
进度: number;
进度令牌: ProgressToken;
总计?: number;
}
类型声明
  • Optionalmessage?: string

    描述当前进度的可选消息。

  • progress: number

    截至目前的进度。即使总量未知,每次取得进展时此值都应增加。

    number

  • progressToken: ProgressToken

    初始化请求中给出的进度令牌,用于将此通知与正在进行的请求关联起来。

  • Optional总计?: number

    要处理的项目总数(或所需的总进度),如果已知。

    数字

notifications/prompts/list_changed

PromptListChangedNotification

interface PromptListChangedNotification {
jsonrpc: “2.0”;
method: “notifications/prompts/list_changed”;
params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}

服务器向客户端发出的一项可选通知,告知其所提供的提示列表已发生变更。服务器可在客户端未预先订阅的情况下发出此通知。

params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown }
类型声明
  • [key: string]: unknown
  • Optional_meta?: { [key: string]: unknown }

    查看 常规字段:_meta 了解关于 _meta 用法的说明。

notifications/resources/list_changed

ResourceListChangedNotification

interface ResourceListChangedNotification {
  jsonrpc: “2.0”;
  method: “notifications/resources/list_changed”;
  params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}

一个来自服务器到客户端的可选通知,用于告知客户端可读取的资源列表已发生变更。即使客户端之前未进行任何订阅,服务器也可以发出此通知。

params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown }
类型声明
  • [key: string]: unknown
  • Optional_meta?: { [key: string]: unknown }

    查看 常规字段:_meta 了解关于 _meta 用法的说明。

notifications/resources/updated

ResourceUpdatedNotification

interface ResourceUpdatedNotification {
  jsonrpc: “2.0”;
  method: “notifications/resources/updated”;
  params: { uri: string };
}

来自服务器到客户端的通知,告知其某个资源已更改,可能需要重新读取。仅当客户端先前发送了资源订阅请求时才会发送此通知。

参数: { uri: 字符串 }
类型声明
  • uri: string

    已更新资源的统一资源标识符。这可能是客户端实际订阅资源的子资源。

notifications/roots/list_changed

RootsListChangedNotification

interface RootsListChangedNotification {
  jsonrpc: “2.0”;
  method: “notifications/roots/list_changed”;
  params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}

客户端向服务器发出的通知,告知其根节点列表已发生变化。 每当客户端添加、移除或修改任何根节点时,都应发送此通知。 随后,服务器应使用ListRootsRequest请求更新后的根节点列表。

params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown }
类型声明
  • [key: string]: unknown
  • Optional_meta?: { [key: string]: unknown }

    查看 常规字段:_meta 了解关于 _meta 用法的说明。

notifications/tools/list_changed

ToolListChangedNotification

interface ToolListChangedNotification {
  jsonrpc: “2.0”;
  method: “notifications/tools/list_changed”;
  params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}

服务器向客户端发出的可选通知,告知其所提供的工具列表已变更。服务器可在客户端未事先订阅的情况下发出此通知。

params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown }
类型声明
  • [key: string]: unknown
  • Optional_meta?: { [key: string]: unknown }

    查看 常规字段:_meta 了解关于 _meta 用法的说明。

ping

PingRequest

interface PingRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “ping”;
  params?: {
    _meta?: { progressToken?: ProgressToken; [key: string]: unknown };
    [key: string]: unknown;
  };
}

由服务器或客户端发出的ping指令,用于检查另一方是否仍然在线。接收方必须迅速回应,否则可能会被断开连接。

params?: {
  _meta?: { progressToken?: ProgressToken; [key: string]: unknown };
  [key: string]: unknown;
}
类型声明
  • [key: string]: unknown
  • Optional_meta?: { progressToken?: ProgressToken; [key: string]: unknown }

    参见 通用字段: _meta 了解 _meta 的使用说明。

    • OptionalprogressToken?: ProgressToken

      如果指定此参数,调用方请求为该请求接收带外进度通知(以notifications/progress形式表示)。该参数的值是一个不透明令牌,将附加到任何后续通知中。接收方没有义务提供这些通知。

提示/获取

GetPromptRequest

interface GetPromptRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “prompts/get”;
  params: { arguments?: { [key: string]: string }; name: string };
}

由客户端用于获取服务器提供的提示。

参数: { arguments?: { [key: string]: string }; 名称: string }
类型声明
  • Optional参数?: { [key: string]: string }

    用于模板化提示符的参数。

  • name: string

    提示词或提示词模板的名称。

GetPromptResult

interface GetPromptResult {
  _meta?: { [key: string]: unknown };
  description?: string;
  messages: PromptMessage[];
  [key: string]: unknown;
}

服务器对客户端 prompts/get 请求的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

描述?: string

提示信息的可选描述。

prompts/list

ListPromptsRequest

interface ListPromptsRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “prompts/list”;
  params?: { cursor?: string };
}
客户端发送请求,以获取服务器所拥有的提示词(prompts)和提示模板(prompt templates)列表。
参数 { cursor?: string }
类型声明
  • Optionalcursor?: string

    一个不透明的令牌,代表当前分页位置。 如果提供,服务器应返回此游标之后的结果。

ListPromptsResult

interface ListPromptsResult {
_meta?: { [key: string]: unknown };
nextCursor?: string;
prompts: Prompt[];
[key: string]: unknown;
}

服务器对来自客户端的 prompts/list 请求的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

下一个游标?: 字符串

表示上一页最后返回结果的分页位置的不透明令牌。 如果存在,可能还有更多可用结果。

resources/list

ListResourcesRequest

interface ListResourcesRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “resources/list”;
  params?: { cursor?: string };
}

由客户端发送,请求服务器拥有的资源列表。

params?: { cursor?: string }
类型声明
  • Optionalcursor?: string

    表示当前分页位置的不透明令牌。 如果提供此参数,服务器应返回从此游标之后开始的结果。

ListResourcesResult

interface ListResourcesResult {
  _meta?: { [key: string]: unknown };
  nextCursor?: string;
  resources: Resource[];
  [key: string]: unknown;
}

服务器对客户端资源/列表请求的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

下一个光标?: 字符串

一个不透明的token,代表最后结果返回后的分页位置。 如果存在,可能还有更多可用结果。

resources/read

ReadResourceRequest

interface ReadResourceRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “resources/read”;
  params: { uri: string };
}

由客户端发送至服务器,以读取特定的资源URI。

参数: { uri: 字符串 }
类型声明
  • uri: string

    要读取资源的URI。URI 可以使用任何协议;具体如何由服务器自行解析。

ReadResourceResult

interface ReadResourceResult {
  _meta?: { [key: string]: unknown };
  contents: (TextResourceContents | BlobResourceContents)[];
  [key: string]: unknown;
}

服务器对客户端的资源/读取请求的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

resources/subscribe

订阅请求

interface SubscribeRequest {
  id: RequestId;
  jsonrpc: "2.0";
  method: "resources/subscribe";
  params: { uri: string };
}

客户端发送此请求,以便每当特定资源发生变化时,服务器可以通知资源更新。

参数: { uri: 字符串 }
类型声明
  • uri: string

    要订阅资源的URI。URI可以使用任意协议;由服务器决定如何解释它。

resources/templates/list

ListResourceTemplatesRequest

interface ListResourceTemplatesRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “resources/templates/list”;
  params?: { cursor?: string };
}

从客户端发出的请求,用于获取服务器上的资源模板列表。

参数 { cursor?: string }
类型声明
  • Optionalcursor?: string

    一个不透明的令牌,表示当前分页位置。 如果提供,服务器应从此游标之后开始返回结果。

ListResourceTemplatesResult

interface ListResourceTemplatesResult {
  _meta?: { [key: string]: unknown };
  nextCursor?: string;
  resourceTemplates: ResourceTemplate[];
  [key: string]: unknown};
}

服务器对客户端 resources/templates/list 请求的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

下一个游标?: 字符串

表示上一页最后返回结果的分页位置的不透明令牌。 如果存在,可能还有更多可用结果。

resources/unsubscribe

UnsubscribeRequest

接口 UnsubscribeRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “resources/unsubscribe”;
  params: { uri: string };
}

由客户端发送,用于请求取消来自服务器的资源/更新通知。这应跟随之前的资源/订阅请求。

参数: { uri: 字符串 }
类型声明
  • uri: string

    要取消订阅的资源的URI。

roots/list

ListRootsRequest

interface ListRootsRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “roots/list”;
  params?: {
    _meta?: { progressToken?: ProgressToken; [key: string]: unknown };
    [key: string]: unknown;
  };
}

从服务器发送,向客户端请求根 URI 列表。根目录允许 服务器请求特定的目录或文件进行操作。根目录的一个常见示例 是提供一组存储库或目录,服务器应在这些存储库或目录上操作。

此请求通常在服务器需要理解文件系统结构或访问客户具有读取权限的特定位置时使用。

params?: {
  _meta?: { progressToken?: ProgressToken; [key: string]: unknown };
  [key: string]: unknown;
}
类型声明
  • [key: string]: unknown
  • Optional_meta?: { progressToken?: ProgressToken; [key: string]: unknown }

    参见 通用字段: _meta 了解 _meta 的使用说明。

    • OptionalprogressToken?: ProgressToken

      如果指定此参数,调用方请求为该请求接收带外进度通知(以notifications/progress形式表示)。该参数的值是一个不透明令牌,将附加到任何后续通知中。接收方没有义务提供这些通知。

ListRootsResult

interface ListRootsResult {
  _meta?: { [key: string]: unknown };
  roots: Root[];
  [key: string]: unknown;
}

客户端对服务器的roots/list请求的响应。 该结果包含一个Root对象数组,每个对象代表服务器可操作的根目录或文件。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

sampling/createMessage

CreateMessageRequest

interface CreateMessageRequest {
  id: RequestId;
  jsonrpc: “2.0”;
  method: “sampling/createMessage”;
  params: {
    includeContext?: “none” | “thisServer” | “allServers”;
    maxTokens: number;
    messages: SamplingMessage[];
    metadata?: object;
    modelPreferences?: ModelPreferences;
    stopSequences?: string[];
    systemPrompt?: string;
    temperature?: number;
  };
}

服务器发起的通过客户端对大型语言模型进行采样的请求。客户端有权自主选择使用哪个模型。客户端在开始采样前也应通知用户,以便其检查请求(人工介入)并决定是否批准。

参数: {
  includeContext?: “none” | “thisServer” | “allServers”;
  maxTokens: number;
  messages: SamplingMessage[];
  metadata?: object;
  modelPreferences?: ModelPreferences;
  stopSequences?: string[];
  systemPrompt?: string;
  temperature?: number;
}
类型声明
  • OptionalincludeContext?: “none” | “thisServer” | “allServers”

    一个请求,用于从一个或多个MCP服务器(包括调用者)包含上下文,并将其附加到提示中。客户端可以忽略此请求。

  • maxTokens: number

    服务器请求采样的最大令牌数。客户端可以选择采样比请求更少的令牌。

  • 消息: SamplingMessage[]
  • OptionalMetadata?: Object

    可选元数据传递给LLM提供方。此元数据的格式由提供方指定。

  • OptionalmodelPreferences?: 模型偏好设置

    服务端对模型选择的偏好设置。客户端可以选择忽略这些偏好。

  • OptionalstopSequences?: string[]
  • OptionalsystemPrompt?: string

    一个可选的系统提示,服务器希望用于采样。客户端可以修改或忽略此提示。

  • Optionaltemperature?: number

    数值类型

CreateMessageResult

interface CreateMessageResult {
  _meta?: { [key: string]: unknown };
  content: TextContent | ImageContent | AudioContent;
  model: string;
  role: Role;
  stopReason?: string;
  [key: string]: unknown;
}

客户端对服务器采样的/create_message请求的响应。客户端在返回抽样信息前应通知用户,以便其检查响应(人工介入环节)并决定是否允许服务器查看该信息。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

模型 字符串

生成消息的模型名称。

停止原因?: 字符串

如果知晓,抽样停止的原因。

工具/调用

CallToolRequest

interface CallToolRequest {
id: RequestId;
jsonrpc: “2.0”;
method: “tools/call”;
params: { arguments?: { [key: string]: unknown }; name: string };
}

由客户端调用服务端提供的工具。

CallToolResult

interface CallToolResult {
  _meta?: { [key: string]: unknown };
  content: ContentBlock[];
  isError?: boolean;
  structuredContent?: { [key: string]: unknown };
  [key: string]: unknown;
}

服务器对工具调用的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

内容: ContentBlock[]

一组表示工具调用非结构化结果的内容对象列表。

是错误?: 布尔型

工具调用是否以错误结束。

如果未设置,则假定为false(调用成功)。

Any errors that originate from the tool SHOULD be reported inside the result object, with isError set to true, as an MCP protocol-level error response. Otherwise, the LLM would not be able to see that an error occurred and self-correct.

然而,在查找工具中的任何错误、表明服务器不支持工具调用的错误,或其他任何异常情况,都应作为MCP错误响应报告。

structuredContent?: { [key: string]: unknown }

一个可选的 JSON 对象,用于表示工具调用的结构化结果。

工具/列表

ListToolsRequest

interface ListToolsRequest {
id: RequestId;
jsonrpc: “2.0”;
method: “tools/list”;
params?: { cursor?: string };
}

由客户端发送,用于请求服务器拥有的工具列表。

params?: { cursor?: string }
类型声明
  • Optionalcursor?: string

    一个代表当前分页位置的不透明令牌。 如果提供此参数,服务器应返回该游标之后的结果。

ListToolsResult

interface ListToolsResult {
  _meta?: { [key: string]: unknown };
  nextCursor?: string;
  tools: Tool[];
  [key: string]: unknown;
}

服务器对来自客户端的 tools/list 请求的响应。

_meta?: { [key: string]: unknown }

参见 通用字段: _meta 了解 _meta 的使用说明。

nextCursor?: string

一个不透明的token,代表最后返回结果之后的分页位置。 如果存在,可能还有更多可用结果。