客户端向服务端发送 initialize 请求,包含协议版本号(protocolVersion,如 2025-06-18)、客户端能力声明(capabilities)和客户端信息(clientInfo)。服务端回应其支持的协议版本和能力。若双方无法协商出共同兼容的版本,应终止连接。
初始化完成后,客户端通过调用 tools/list、resources/list、prompts/list 等方法,动态发现服务端可用的工具、资源和提示词。list 方法的设计允许结果是动态的,服务端可在会话期间更新可用原语列表。
客户端根据用户请求或 AI 模型的决策,调用服务端原语:对工具执行 tools/call,对资源执行 resources/read,对提示词执行 prompts/get。服务端执行对应逻辑后返回结果,结果以内容对象数组的形式返回,支持文本、图像、资源等多种内容类型。
协议支持单向通知消息(不需要响应),用于服务端向客户端推送实时更新。对于长时间运行的操作,协议支持进度跟踪原语,使客户端能够了解服务端处理进度。
当会话结束或发生不可恢复的错误时,任一方可发起连接终止流程,清理会话状态并释放相关资源。