常见类型
注释
描述此对象或数据的目标客户是谁。
它可以包含多个条目来指示对多类受众有用的内容(例如,[“user”, “assistant”])。
资源上一次被修改的时间,以ISO 8601格式的字符串表示。
应该是一个ISO 8601格式的字符串(例如"2025-01-12T15:00:58Z")。
示例:打开文件中的上一次活动时间戳、资源附加时间戳等。
描述了此数据对服务器操作的重要性。
值为1表示"最重要",表示数据实际上是必需的,而0表示"最不重要",表示数据完全是可选的。
AudioContent
_meta?: { [key: string]: unknown };
annotations?: Annotations;
data: string;
mimeType: string;
type: “audio”;
}
提供给大型语言模型或从模型接收的音频。
参见 通用字段: _meta 了解 _meta 的使用说明。
客户端的可选注解。
Base64编码的音频数据。
音频的MIME类型。不同的提供商可能支持不同的音频类型。
BlobResourceContents
_meta?: { [key: string]: unknown };
blob: string;
mimeType?: string;
uri: string;
}
特定资源或子资源的内容。
请参阅 通用字段:_meta 了解 _meta 的使用说明。
一个代表项目二进制数据的base64编码字符串。
该资源的MIME类型(如已知)。
此资源的统一资源标识符(URI)。
BooleanSchema
default?: boolean;
description?: string;
title?: string;
type: “boolean”;
}
ClientCapabilities
elicitation?: object;
experimental?: { [key: string]: object };
roots?: { listChanged?: boolean };
sampling?: object;
}
客户端可能支持的功能。已知功能在此模式中定义,但这并非封闭集合:任何客户端都可以定义自己的附加功能。
如果客户端支持从服务器引发请求时存在。
实验性、非标准的功能,客户端支持这些功能。
如果客户端支持列出根,则显示此选项。
OptionallistChanged?: boolean客户端是否支持根列表更改通知。
如果客户端支持从LLM进行采样,则会显示此信息。
ContentBlock
Cursor
用于表示分页游标的不透明令牌。
EmbeddedResource
_meta?: { [key: string]: unknown };
annotations?: Annotations;
resource: TextResourceContents | BlobResourceContents;
type: “resource”;
}
资源的内容,嵌入到提示或工具调用结果中。
客户端可以自主决定如何最好地呈现嵌入资源,以便LLM和/或用户受益。
参见 通用字段: _meta 了解 _meta 的使用说明。
客户端的可选注解。
EmptyResult
一个表示成功响应但不携带任何数据的响应。
EnumSchema
default?: string;
description?: string;
enum: string[];
enumNames?: string[];
title?: string;
type: “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。
图像内容
_meta?: { [key: string]: unknown };
annotations?: Annotations;
data: string;
mimeType: string;
type: “image”;
}
提供给大语言模型或从大语言模型接收的图像。
参见 通用字段: _meta 了解 _meta 的使用说明。
客户端的可选注解。
经过Base64编码的图像数据。
图像的MIME类型。不同提供商可能支持不同的图像类型。
实现
icons?: Icon[];
name: string;
title?: string;
version: string;
websiteUrl?: string;
}
描述 MCP 的实现
客户端可在用户界面中显示的一组可选尺寸图标。
支持渲染图标的客户端必须至少支持以下MIME类型:
image/png- PNG 图像(安全,通用兼容)image/jpeg(及image/jpg) - JPEG 图像 (安全, 广泛兼容)
支持渲染图标的客户端还应支持:
image/svg+xml- SVG图像(可缩放但需要注意安全预防措施)image/webp- WebP 图像(现代、高效格式)
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
此实现所属网站的一个可选URL。
@格式: uri
JSONRPC错误
指示出现错误的请求响应。
JSONRPCNotification
jsonrpc: “2.0”;
method: 字符串;
params?: { _meta?: { [key: string]: 未知 }; [key: string]: 未知 };
}
一个不期待回应的通知。
- [键: 字符串]: 未知
Optional_meta?: { [key: string]: unknown }查看 常规字段:
_meta了解关于_meta用法的说明。
JSONRPCRequest
id: RequestId;
jsonrpc: “2.0”;
method: string;
params?: {
_meta?: { progressToken?: ProgressToken; [key: string]: unknown };
[key: string]: unknown;
};
}
一个期望得到响应的请求。
- [key: string]: unknown
参见 通用字段:
_meta了解_meta的使用说明。如果指定此参数,调用方请求为该请求接收带外进度通知(以notifications/progress形式表示)。该参数的值是一个不透明令牌,将附加到任何后续通知中。接收方没有义务提供这些通知。
JSONRPC响应
对请求的成功(非错误)回应。
LoggingLevel
| “debug”
| “info”
| “notice”
| “warning”
| “error”
| “critical”
| “alert”
| “emergency”
日志消息的严重性。
这些映射到syslog消息严重性等级,如RFC-5424所规定:https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1
ModelHint
用于模型选择的提示。
此处未声明的键(Keys)当前在规范中未作规定,其含义由客户端自行解释。
一个关于模型名称的提示。
客户端应将其视为模型名称的子字符串;例如:
claude-3-5-sonnet应当匹配claude-3-5-sonnet-20241022sonnet应该匹配claude-3-5-sonnet-20241022,claude-3-sonnet-20240229等.claude应匹配任何克劳德模型
客户端可以(MAY)将该字符串映射到不同供应商的模型名称或不同的模型系列,只要它满足类似的定位;例如:
gemini-1.5-flash可以匹配claude-3-haiku-20240307
ModelPreferences
costPriority?: number;
hints?: ModelHint[];
intelligencePriority?: number;
speedPriority?: number;
}
服务端对模型选择的偏好,在采样时向客户端请求。
由于大语言模型(LLM)可能在多个维度上存在差异,选择“最佳”模型通常并不简单。不同模型在不同领域表现优异——有些速度更快但能力较弱,有些能力更强但成本更高,等等。该接口允许服务端通过多个维度表达其优先级,帮助客户端根据其使用场景做出合适的选择。
这些偏好始终是建议性的。客户端可以忽略它们。同样由客户端决定如何解释这些偏好,以及如何平衡它们与其他考量。
在选择模型时成本优化的优先级。值为0表示成本不重要,而值为1表示成本是最重要的因素。
用于模型选择的可选提示。
如果指定了多个提示信息,客户端必须按顺序评估它们 (这样会采用第一个匹配项)。
客户端应当优先考虑这些提示而非数值优先级,但依然可以使用优先级在模糊匹配中进行选择。
在选择模型时,将智能和能力赋予多高的优先级。值为0表示智能不重要,而值为1表示智能是最重要的因素。
当选择模型时,对采样速度(延迟)的优先程度进行设定。值为0表示速度不重要,而值为1表示速度是最重要的因素。
NumberSchema
default?: number;
description?: string;
maximum?: number;
minimum?: number;
title?: string;
type: “number” | “integer”;
}
PrimitiveSchemaDefinition
受限模式定义,只允许原始类型,不包含嵌套对象或数组。
ProgressToken
进度令牌,用于将进度通知与原始请求关联起来。
提示
_meta?: { [key: string]: unknown };
arguments?: PromptArgument[];
description?: string;
icons?: Icon[];
name: string;
title?: string;
}
服务器提供的一个提示或提示模板。
参见 通用字段: _meta 了解 _meta 的使用说明。
用于模板化提示的参数列表。
此提示所提供的可选描述
客户端可在用户界面中显示的一组可选尺寸图标。
支持渲染图标的客户端必须至少支持以下MIME类型:
image/png- PNG图像(安全,具备通用兼容性)image/jpeg(以及image/jpg) - JPEG 图像 (安全,具备通用兼容性)
支持渲染图标的客户端还应支持:
image/svg+xml- SVG 图像 (可扩展但需要安全预防)image/webp- WebP 图片(现代、高效格式)
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
PromptArgument
描述提示可以接受的参数。
参数的易于理解的描述。
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
该参数是否必须提供。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
PromptMessage
描述作为提示信息的一部分返回的消息。
这类似于 SamplingMessage,但也支持从MCP服务器嵌入资源。
提示参考
识别一个提示。
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
RequestId
JSON-RPC 请求的唯一标识 ID。
资源
_meta?: { [key: string]: unknown };
annotations?: Annotations;
description?: string;
icons?: Icon[];
mimeType?: string;
name: string;
size?: number;
title?: string;
uri: string;
}
服务器能读取的一个已知资源。
参见 通用字段: _meta 了解 _meta 的使用说明。
客户端的可选注解。
该资源所代表的描述内容。
客户端可使用此功能来提升LLM对可用资源的理解。可将其视为向模型提供的"提示"。
客户端可在用户界面中显示的一组可选尺寸图标。
支持渲染图标的客户端必须至少支持以下MIME类型:
image/png- PNG 图像(安全,具备普遍兼容性)image/jpeg(及image/jpg)- JPEG图像(安全、具备通用兼容性)
支持渲染图标的客户端还应支持:
image/svg+xml- SVG图像 (可缩放但需安全预防措施)image/webp- WebP 图像(现代、高效格式)
该资源的MIME类型(如已知)。
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
原始资源内容的大小(以字节为单位,即在进行base64编码或任何分词之前),如果已知的话。
这可供主机显示文件大小和估算上下文窗口使用量。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
此资源的统一资源标识符(URI)。
ResourceContents
特定资源或子资源的内容。
参见 通用字段: _meta 了解 _meta 的使用说明。
该资源的MIME类型(如已知)。
此资源的统一资源标识符(URI)。
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 了解 _meta 的使用说明。
客户端的可选注解。
该资源所代表的描述内容。
这可以被客户端用来提升LLM对可用资源的理解。可以将其视作对模型的“提示”。
客户端可在用户界面中显示的一组可选尺寸图标。
支持渲染图标的客户端必须至少支持以下MIME类型:
image/png- PNG 图像(安全,通用兼容)image/jpeg(andimage/jpg) - JPEG图像(安全,通用兼容性)
支持渲染图标的客户端还应支持:
image/svg+xml- SVG 图像(可缩放但需要采取安全预防措施)image/webp- WebP 图片(现代、高效的格式)
该资源的MIME类型(如已知)。
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
原始资源内容的字节大小(即在进行base64编码或任何标记化前),如果已知。
主机可使用此功能显示文件大小并评估上下文窗口使用情况。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
此资源的统一资源标识符(URI)。
ResourceTemplate
_meta?: { [key: string]: unknown };
annotations?: Annotations;
description?: string;
mimeType?: string;
name: string;
title?: string;
uriTemplate: string;
}
一个关于服务器上可用资源的模板描述。
参见 通用字段: _meta 了解 _meta 的使用说明。
客户端的可选注解。
此模板用途的描述。
智能体可以利用这一点来增强大语言模型对可用资源的理解。它可以被视作给模型的一个“提示”。
与此模板匹配的所有资源的 MIME 类型。仅当所有匹配此模板的资源具有相同类型时,才应包含此项。
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
一个可用于构造资源URI的URI模板(根据RFC 6570)。
ResourceTemplateReference
对某个资源或资源模板定义的引用。
资源的URI或URI模板。
结果
参见 通用字段: _meta 了解 _meta 的使用说明。
角色
会话中信息和数据的发送者或接收者。
根节点
表示服务器可操作的根目录或文件。
参见 通用字段: _meta 了解 _meta 的使用说明。
根节点的可选名称。这可用于为根提供一个人类可读的标识符,对于显示目的或在应用的其他部分引用根节点时可能有用。
标识根目录的URI。目前必须以 file:// 开头。 在协议的未来版本中,此限制可能会放宽以允许其他URI方案。
采样消息
描述一条发送给或从LLM API接收到的消息。
ServerCapabilities
completions?: object;
experimental?: { [key: string]: object };
logging?: object;
prompts?: { listChanged?: boolean };
resources?: { listChanged?: boolean; subscribe?: boolean };
tools?: { listChanged?: boolean };
}
服务器可能支持的能力。已知能力在此模式中定义,但这并不是一个封闭的集合:任何服务器都可以定义自己的额外能力。
若服务器支持参数自动补全建议,则此项存在。
服务器支持的实验性非标准功能。
如果服务器支持向客户端发送日志消息,则显示此内容。
如果服务器提供任何提示模板,则显示此内容。
OptionallistChanged?: boolean此服务器是否支持对提示列表变化的通知功能。
如果服务器提供任何可读取资源,则显示此项。
OptionallistChanged?: boolean此服务器是否支持资源列表变更通知。
Optionalsubscribe?: boolean该服务器是否支持订阅资源更新。
如果服务器提供任何要调用的工具时显示此内容。
OptionallistChanged?: boolean此服务器是否支持工具列表变更通知。
StringSchema
default?: string;
description?: string;
format?: “uri” | “email” | “date” | “date-time”;
maxLength?: number;
minLength?: number;
title?: string;
type: “string”;
}
文本内容
_meta?: { [key: string]: unknown };
annotations?: Annotations;
text: string;
type: “text”;
}
提供给大型语言模型的文本或由其返回的文本。
参见 通用字段: _meta 了解 _meta 的使用说明。
客户端的可选注解。
消息的文本内容。
TextResourceContents
_meta?: { [key: string]: unknown };
mimeType?: string;
text: string;
uri: string;
}
特定资源或子资源的内容。
参见 通用字段: _meta 了解 _meta 的使用说明。
该资源的MIME类型(如已知)。
项目的文本内容。只有当项目确实可以表示为文本(而非二进制数据)时,此项才必须设置。
此资源的统一资源标识符(URI)。
工具
_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 了解 _meta 的使用说明。
可选附加工具信息。
显示名称的优先级顺序为:title、annotations.title,然后是name。
工具的通俗易懂描述。
客户端可利用此功能提升LLM对可用工具的理解。可将其视为向模型提供的一种"提示"。
客户端可在用户界面中显示的一组可选尺寸图标。
支持渲染图标的客户端必须至少支持以下MIME类型:
image/png- PNG 图像(安全,通用兼容)image/jpeg(及image/jpg) - JPEG 图像 (安全, 广泛兼容)
支持渲染图标的客户端还应支持:
image/svg+xml- SVG 图像 (可缩放但需要安全预防措施)image/webp- WebP 图像(现代、高效格式)
属性?: { [键: 字符串]: 对象 };
必填项?: 字符串[];
类型: “object”;
}
定义工具预期参数的 JSON Schema 对象。
设计用于编程或逻辑用途,但在过去的规范中曾作为显示名称使用,或在缺少标题时作为备选显示名称。
properties?: { [key: string]: object };
required?: string[];
type: “object”;
}
一个可选的JSON Schema对象,用于定义结构化内容字段中返回工具输出的结构。
专为界面和最终用户场景设计——即使不熟悉领域特定术语的用户也能轻松阅读和理解,优化提升可读性和易理解性。
如未提供,名称应用于显示(Tool 除外,如果存在 annotations.title,应优先于使用 name)。
ToolAnnotations
destructiveHint?: boolean;
idempotentHint?: boolean;
openWorldHint?: boolean;
readOnlyHint?: boolean;
title?: string;
}
向客户端描述工具的额外属性。
注意: ToolAnnotations中的所有属性均为提示信息。
它们并不能保证对工具行为提供准确的描述
(包括描述性属性,如title)。
客户端永远不应基于从未经验证的服务器接收到的工具注解做出工具使用决定。
如果为 true,工具可能对其环境执行破坏性更新。 如果为 false,工具仅执行添加性更新。
(此属性仅在 readOnlyHint == false 时有效)
默认值:true
如果为 true,使用相同参数重复调用工具将不会对其环境产生额外影响。
(此属性仅在 readOnlyHint == false 时生效)
默认值: false
如果为 true,此工具可与外部实体的“开放世界”互动。如果为 false,该工具的互动领域是封闭的。例如,网络搜索工具的世界是开放的,而记忆工具的世界则不是。
默认:是
如果为真,该工具不会修改其环境。
默认值: false
该工具的可读标题。
completion/complete
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
_meta?: { [key: string]: unknown };
completion: { hasMore?: boolean; total?: number; values: string[] };
[key: string]: unknown;
}
参见 通用字段: _meta 了解 _meta 的使用说明。
OptionalhasMore?: boolean表示在当前响应之外,是否还有额外的完成选项,即使确切总数未知。
Optionaltotal?: number可用完成选项的总数。这可能超出响应中实际发送的值的数量。
- values: string[]
一个补全值数组。条目数量不得超过100个。
elicitation/create
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
_meta?: { [key: string]: unknown };
action: “accept” | “decline” | “cancel”;
content?: { [key: string]: string | number | boolean };
[key: string]: unknown;
}
客户端对启发式请求的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
用户针对提问做出的回应行为。
- “accept”: 用户提交了表单/确认了操作
- “decline”: 用户明确拒绝该操作
- “cancel”: 用户取消操作,未明确选择
提交的表单数据,仅当操作是"accept"时存在。 包含与请求模式匹配的值。
初始化
InitializeRequest
id: RequestId;
jsonrpc: “2.0”;
method: “initialize”;
params: {
capabilities: ClientCapabilities;
clientInfo: Implementation;
protocolVersion: string;
};
}
该请求是客户端首次连接时发送给服务器的,请求开始初始化。
- protocolVersion: string
客户端支持的 Model Context Protocol 最新版本。客户端也可以选择支持较早版本。
InitializeResult
_meta?: { [key: string]: unknown };
capabilities: ServerCapabilities;
instructions?: string;
protocolVersion: string;
serverInfo: Implementation;
[key: string]: unknown;
}
在接收到客户端的初始化请求后,服务器会发送此响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
关于如何使用服务器及其功能的说明。
这可以被客户端用来改进LLM对可用工具、资源等的理解。可以将其视为对模型的“提示”。例如,此信息可能会被添加到系统提示中。
服务器希望使用的Model Context Protocol版本。这可能与客户端请求的版本不匹配。如果客户端无法支持此版本,必须断开连接。
日志/设置级别
SetLevelRequest
id: RequestId;
jsonrpc: “2.0”;
method: “logging/setLevel”;
params: { level: LoggingLevel };
}
来自客户端的请求,用于启用或调整日志记录。
客户端希望从服务器接收的日志记录级别。服务器应当将此级别及以上(即更严重)的所有日志作为通知/消息发送给客户端。
notifications/cancelled
CancelledNotification
jsonrpc: “2.0”;
method: “notifications/cancelled”;
params: { reason?: string; requestId: RequestId };
}
任何一方都可以发送此通知,以表示它正在取消先前发出的请求。
请求应该仍在传输过程中,但由于通信延迟,该通知有可能在请求已经完成后才到达。
此通知表示结果将不被使用,因此任何关联的处理应停止。
一个客户端不得尝试取消其 initialize 请求。
Optionalreason?: string一个描述取消操作原因的可选字符串。该内容可选择被记录日志或向用户展示。
要取消的请求ID。
这必须对应于先前在同一方向上发出的请求的ID。
notifications/initialized
InitializedNotification
jsonrpc: “2.0”;
method: “notifications/initialized”;
params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}
初始化完成后,此通知从客户端发送至服务器。
- [key: string]: unknown
Optional_meta?: { [key: string]: unknown }查看 常规字段:
_meta了解关于_meta用法的说明。
notifications/message
LoggingMessageNotification
jsonrpc: “2.0”;
method: “notifications/message”;
params: { 数据: unknown; 级别: LoggingLevel; 记录器?: string };
}
服务器向客户端传递日志消息的JSONRPC通知。如果客户端未发送任何logging/setLevel请求,服务器可自行决定自动发送哪些消息。
- data: unknown
需要记录的数据,例如字符串消息或对象。允许任何可JSON序列化的类型。
此日志消息的严重程度。
Optionallogger?: string可选的日志记录器名称,用于标识发出此消息的日志记录器。
notifications/progress
ProgressNotification
jsonrpc: "2.0";
method: "notifications/progress";
params: {
message?: string;
progress: number;
progressToken: ProgressToken;
total?: number;
};
}
一个用于通知接收方关于长时间运行请求进度更新的带外通知。
Optionalmessage?: string描述当前进度的可选消息。
- progress: number
截至目前的进度。即使总量未知,每次取得进展时此值都应增加。
初始化请求中给出的进度令牌,用于将此通知与正在进行的请求关联起来。
Optional总计?: number要处理的项目总数(或所需的总进度),如果已知。
notifications/prompts/list_changed
PromptListChangedNotification
jsonrpc: “2.0”;
method: “notifications/prompts/list_changed”;
params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}
服务器向客户端发出的一项可选通知,告知其所提供的提示列表已发生变更。服务器可在客户端未预先订阅的情况下发出此通知。
- [key: string]: unknown
Optional_meta?: { [key: string]: unknown }查看 常规字段:
_meta了解关于_meta用法的说明。
notifications/resources/list_changed
ResourceListChangedNotification
jsonrpc: “2.0”;
method: “notifications/resources/list_changed”;
params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}
一个来自服务器到客户端的可选通知,用于告知客户端可读取的资源列表已发生变更。即使客户端之前未进行任何订阅,服务器也可以发出此通知。
- [key: string]: unknown
Optional_meta?: { [key: string]: unknown }查看 常规字段:
_meta了解关于_meta用法的说明。
notifications/resources/updated
ResourceUpdatedNotification
jsonrpc: “2.0”;
method: “notifications/resources/updated”;
params: { uri: string };
}
来自服务器到客户端的通知,告知其某个资源已更改,可能需要重新读取。仅当客户端先前发送了资源订阅请求时才会发送此通知。
- uri: string
已更新资源的统一资源标识符。这可能是客户端实际订阅资源的子资源。
notifications/roots/list_changed
RootsListChangedNotification
jsonrpc: “2.0”;
method: “notifications/roots/list_changed”;
params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}
客户端向服务器发出的通知,告知其根节点列表已发生变化。 每当客户端添加、移除或修改任何根节点时,都应发送此通知。 随后,服务器应使用ListRootsRequest请求更新后的根节点列表。
- [key: string]: unknown
Optional_meta?: { [key: string]: unknown }查看 常规字段:
_meta了解关于_meta用法的说明。
notifications/tools/list_changed
ToolListChangedNotification
jsonrpc: “2.0”;
method: “notifications/tools/list_changed”;
params?: { _meta?: { [key: string]: unknown }; [key: string]: unknown };
}
服务器向客户端发出的可选通知,告知其所提供的工具列表已变更。服务器可在客户端未事先订阅的情况下发出此通知。
- [key: string]: unknown
Optional_meta?: { [key: string]: unknown }查看 常规字段:
_meta了解关于_meta用法的说明。
ping
PingRequest
id: RequestId;
jsonrpc: “2.0”;
method: “ping”;
params?: {
_meta?: { progressToken?: ProgressToken; [key: string]: unknown };
[key: string]: unknown;
};
}
由服务器或客户端发出的ping指令,用于检查另一方是否仍然在线。接收方必须迅速回应,否则可能会被断开连接。
_meta?: { progressToken?: ProgressToken; [key: string]: unknown };
[key: string]: unknown;
}
- [key: string]: unknown
参见 通用字段:
_meta了解_meta的使用说明。如果指定此参数,调用方请求为该请求接收带外进度通知(以notifications/progress形式表示)。该参数的值是一个不透明令牌,将附加到任何后续通知中。接收方没有义务提供这些通知。
提示/获取
GetPromptRequest
id: RequestId;
jsonrpc: “2.0”;
method: “prompts/get”;
params: { arguments?: { [key: string]: string }; name: string };
}
由客户端用于获取服务器提供的提示。
Optional参数?: { [key: string]: string }用于模板化提示符的参数。
- name: string
提示词或提示词模板的名称。
GetPromptResult
_meta?: { [key: string]: unknown };
description?: string;
messages: PromptMessage[];
[key: string]: unknown;
}
服务器对客户端 prompts/get 请求的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
提示信息的可选描述。
prompts/list
ListPromptsRequest
id: RequestId;
jsonrpc: “2.0”;
method: “prompts/list”;
params?: { cursor?: string };
}
Optionalcursor?: string一个不透明的令牌,代表当前分页位置。 如果提供,服务器应返回此游标之后的结果。
ListPromptsResult
_meta?: { [key: string]: unknown };
nextCursor?: string;
prompts: Prompt[];
[key: string]: unknown;
}
服务器对来自客户端的 prompts/list 请求的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
表示上一页最后返回结果的分页位置的不透明令牌。 如果存在,可能还有更多可用结果。
resources/list
ListResourcesRequest
id: RequestId;
jsonrpc: “2.0”;
method: “resources/list”;
params?: { cursor?: string };
}
由客户端发送,请求服务器拥有的资源列表。
Optionalcursor?: string表示当前分页位置的不透明令牌。 如果提供此参数,服务器应返回从此游标之后开始的结果。
ListResourcesResult
_meta?: { [key: string]: unknown };
nextCursor?: string;
resources: Resource[];
[key: string]: unknown;
}
服务器对客户端资源/列表请求的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
一个不透明的token,代表最后结果返回后的分页位置。 如果存在,可能还有更多可用结果。
resources/read
ReadResourceRequest
id: RequestId;
jsonrpc: “2.0”;
method: “resources/read”;
params: { uri: string };
}
由客户端发送至服务器,以读取特定的资源URI。
- uri: string
要读取资源的URI。URI 可以使用任何协议;具体如何由服务器自行解析。
ReadResourceResult
_meta?: { [key: string]: unknown };
contents: (TextResourceContents | BlobResourceContents)[];
[key: string]: unknown;
}
服务器对客户端的资源/读取请求的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
resources/subscribe
订阅请求
id: RequestId;
jsonrpc: "2.0";
method: "resources/subscribe";
params: { uri: string };
}
客户端发送此请求,以便每当特定资源发生变化时,服务器可以通知资源更新。
- uri: string
要订阅资源的URI。URI可以使用任意协议;由服务器决定如何解释它。
resources/templates/list
ListResourceTemplatesRequest
id: RequestId;
jsonrpc: “2.0”;
method: “resources/templates/list”;
params?: { cursor?: string };
}
从客户端发出的请求,用于获取服务器上的资源模板列表。
Optionalcursor?: string一个不透明的令牌,表示当前分页位置。 如果提供,服务器应从此游标之后开始返回结果。
ListResourceTemplatesResult
_meta?: { [key: string]: unknown };
nextCursor?: string;
resourceTemplates: ResourceTemplate[];
[key: string]: unknown};
}
服务器对客户端 resources/templates/list 请求的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
表示上一页最后返回结果的分页位置的不透明令牌。 如果存在,可能还有更多可用结果。
resources/unsubscribe
UnsubscribeRequest
id: RequestId;
jsonrpc: “2.0”;
method: “resources/unsubscribe”;
params: { uri: string };
}
由客户端发送,用于请求取消来自服务器的资源/更新通知。这应跟随之前的资源/订阅请求。
- uri: string
要取消订阅的资源的URI。
roots/list
ListRootsRequest
id: RequestId;
jsonrpc: “2.0”;
method: “roots/list”;
params?: {
_meta?: { progressToken?: ProgressToken; [key: string]: unknown };
[key: string]: unknown;
};
}
从服务器发送,向客户端请求根 URI 列表。根目录允许 服务器请求特定的目录或文件进行操作。根目录的一个常见示例 是提供一组存储库或目录,服务器应在这些存储库或目录上操作。
此请求通常在服务器需要理解文件系统结构或访问客户具有读取权限的特定位置时使用。
_meta?: { progressToken?: ProgressToken; [key: string]: unknown };
[key: string]: unknown;
}
- [key: string]: unknown
参见 通用字段:
_meta了解_meta的使用说明。如果指定此参数,调用方请求为该请求接收带外进度通知(以notifications/progress形式表示)。该参数的值是一个不透明令牌,将附加到任何后续通知中。接收方没有义务提供这些通知。
ListRootsResult
_meta?: { [key: string]: unknown };
roots: Root[];
[key: string]: unknown;
}
客户端对服务器的roots/list请求的响应。 该结果包含一个Root对象数组,每个对象代表服务器可操作的根目录或文件。
参见 通用字段: _meta 了解 _meta 的使用说明。
sampling/createMessage
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
服务器请求采样的最大令牌数。客户端可以选择采样比请求更少的令牌。
OptionalMetadata?: Object可选元数据传递给LLM提供方。此元数据的格式由提供方指定。
服务端对模型选择的偏好设置。客户端可以选择忽略这些偏好。
OptionalstopSequences?: string[]OptionalsystemPrompt?: string一个可选的系统提示,服务器希望用于采样。客户端可以修改或忽略此提示。
Optionaltemperature?: number
CreateMessageResult
_meta?: { [key: string]: unknown };
content: TextContent | ImageContent | AudioContent;
model: string;
role: Role;
stopReason?: string;
[key: string]: unknown;
}
客户端对服务器采样的/create_message请求的响应。客户端在返回抽样信息前应通知用户,以便其检查响应(人工介入环节)并决定是否允许服务器查看该信息。
参见 通用字段: _meta 了解 _meta 的使用说明。
生成消息的模型名称。
如果知晓,抽样停止的原因。
工具/调用
CallToolRequest
id: RequestId;
jsonrpc: “2.0”;
method: “tools/call”;
params: { arguments?: { [key: string]: unknown }; name: string };
}
由客户端调用服务端提供的工具。
CallToolResult
_meta?: { [key: string]: unknown };
content: ContentBlock[];
isError?: boolean;
structuredContent?: { [key: string]: unknown };
[key: string]: unknown;
}
服务器对工具调用的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
一组表示工具调用非结构化结果的内容对象列表。
工具调用是否以错误结束。
如果未设置,则假定为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错误响应报告。
一个可选的 JSON 对象,用于表示工具调用的结构化结果。
工具/列表
ListToolsRequest
id: RequestId;
jsonrpc: “2.0”;
method: “tools/list”;
params?: { cursor?: string };
}
由客户端发送,用于请求服务器拥有的工具列表。
Optionalcursor?: string一个代表当前分页位置的不透明令牌。 如果提供此参数,服务器应返回该游标之后的结果。
ListToolsResult
_meta?: { [key: string]: unknown };
nextCursor?: string;
tools: Tool[];
[key: string]: unknown;
}
服务器对来自客户端的 tools/list 请求的响应。
参见 通用字段: _meta 了解 _meta 的使用说明。
一个不透明的token,代表最后返回结果之后的分页位置。 如果存在,可能还有更多可用结果。
客户端的可选注解。客户端可以使用注解来告知对象的使用方式或显示方式