《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

MCP星球推出全新教程《MCP 从 0 到 1》,面向AI爱好者和开发者朋友,零基础友好,帮你系统掌握 MCP(Model Context Protocol,模型上下文协议)的核心原理、架构设计与实际应用。

MCP星球旨在提供最全最好用的中文MCP平台,官网MCPmarket.cn已超过2.3万个MCP Server,进入“MCP Chat”即可通过对话自动调用MCP。

备注:本系列内容参考翻译了 Hugging Face、DeepLearning.ai 、Anthropic、MCP官方等知名平台的优质内容,同时结合 MCP 最新的协议规范与生态发展,带你逐步掌握。

《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

上期课程

《MCP从0到1》第1课:MCP关键概念与术语详解,MCP的核心架构(应用端、客户端、服务器)以及能力类型(工具、资源、提示词)。

《MCP从0到1》第2课 通信消息类型、生命周期、与能力协商

MCP 定义了一种标准化的通信协议,使客户端和服务器能够以一致且可预测的方式交换消息。这种标准化对于社区内部的互操作性至关重要。

注:构建 MCP 服务器时无需掌握所有细节。本文探讨 MCP 协议通信的细节,可作为了解 MCP 运作方式的补充阅读。

1. 消息格式:JSON-RPC
MCP 协议使用 JSON-RPC 2.0 作为客户端和服务器之间所有通信的消息格式。JSON-RPC 是一种基于 JSON 编码的轻量级远程过程调用协议,具有以下特点:
易于阅读和调试
支持在任何编程环境中实现
规格清晰,应用广泛

2. 消息类型
MCP协议定义了三种类型的消息:请求(request)、回复(response)、通知(notification)
《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

1)请求(Request)
由 Client 发给 Server,用于发起某个操作。请求消息包含以下字段:
一个唯一的标识符(id)

要调用的方法名(如 "tools/call")

方法所需的参数(params,如果有)

{ "jsonrpc":"2.0", "id":1, "method":"tools/call", "params":{           "name":"天气",           "arguments":{                   "location":"上海"                 }           } } 

2)响应(Response)
由 Server 回复给 Client,用于响应前面发送的 Request。响应消息包含:

与对应 Request 相同的 id

要么是成功结果(result),要么是错误信息(error)

成功结果

{ "jsonrpc":"2.0", "id":1, "result":{     "temperature":20,     "conditions":"部分多云"   } } 

错误信息

{ "jsonrpc": "2.0", "id": 1, "error": {     "code": -32602,     "message": "Invalid location parameter"   } } 

3)通知(Notification)
通常由 Server 发送给 Client的单向消息,不需要响应。用于传递事件更新或进度通知等信息。

示例:

{ "jsonrpc":"2.0", "method":"progress", "params":{           "message":"Processing data...",           "percent":50           } } 

3. 通信的生命周期
客户端和服务器的通信生命周期包含三个阶段:初始化(Initialisation)、交换消息(Message Exchange)、终止(Termination)
《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

1)初始化(Initialisation)
Client 与 Server 建立连接,建立本本兼容性、交换和协商能力,分享实现的细节。
《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

客户端发送初始化请求(initialize request),包含:协议版本、客户端功能、客户端实现信息。例如:

{   "jsonrpc": "2.0",   "id":1,   "method":"initialize",   "params": {     "protocolVersion":"2025-03-26",     "capabilities": {       "roots": {         "listChanged": true       },       "sampling": {}     },     "clientInfo": {       "name":"ExampleClient",       "version":"1.0.0"     }   } } 

服务器回复(initialize response)自身的协议版本和功能信息:

{   "jsonrpc": "2.0",   "id": 1,   "result": {     "protocolVersion": "2025-03-26",      "capabilities": {       "logging": {},       "prompts": {         "listChanged": true       },       "resources": {         "subscribe": true,         "listChanged": true       },       "tools": {         "listChanged": true       }     },     "serverInfo": {       "name": "ExampleServer",       "version": "1.0.0"     },     "instructions": "Optional instructions for the client"   } } 

客户端发送初始化通知(initialized notification)作为确认,表示已经准备好开始正常消息交换(connection ready for use)

{   "jsonrpc": "2.0",   "method": "notifications/initialized" } 

2)交换消息(Message Exchange)
Client和Server之间进行正常的协议消息交换(请求、响应、通知等)。
客户端或服务端发送请求信息,另一方响应。这个过程可以针对每个工具、资源或提示类型重复进行。

3)终止(Termination)
在终止阶段,客户端通知服务器断开连接,服务器确认关闭请求。客户端发送退出后关闭连接。
《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

4. 能力协商
Capability Negotiation
在初始化阶段,客户端和服务器明确声明其支持的功能,决定了在会话期间可用哪些功能。
服务器声明其功能,例如资源订阅、工具支持和提示模板
客户端声明支持采样和通知处理等能力
双方必须在整个会话期间尊重声明的功能
可以通过协议扩展来协商额外的功能

关键能力包括:
《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

能力对象可以描述子能力,例如:

  • listChanged :支持列表变更通知(用于提示、资源和工具)
  • subscribe :支持订阅单个项目的变化(仅限资源)

以下是客户端和服务器之间能力协商的一个流程图:
《MCP从0到1》第2课:通信的消息类型、生命周期、与能力协商详解

每种能力都会在会话期间解锁特定的协议功能。例如:

  • 已实现的服务器功能必须在服务器的能力说明中进行宣传
  • 发出资源订阅通知需要服务器声明支持订阅
  • 工具调用需要服务器声明工具功能
  • 采样需要客户端在其功能中声明支持
    这种能力协商确保客户端和服务器对支持的功能有清晰的理解,同时保持协议的可扩展性。

掌握通信的消息类型和生命周期,将帮助你深入了解 MCP 的通信机制。

下一节,我们将进一步介绍 MCP 的三种通信机制,帮助你全面构建基于 MCP 的 AI 应用生态。

参考资料
https://huggingface.co/learn/mcp-course/unit1/introduction
https://huggingface.co/learn/mcp-course/unit1/architectural-components
https://learn.deeplearning.ai/courses/mcp-build-rich-context-ai-apps-with-anthropic/lesson/xtt6w/mcp-architecture

MCPmarket.cn , 全网最全的MCP中文平台,超过2.3万个MCP服务;热门MCP一键直连,无需API

Chat对话即可自动调用MCP

推荐阅读

最全MCP平台MCPmarket.cn:推出全新MCP教程《MCP从0到1》第1课:MCP的核心架构(应用端、客户端、服务器)以及能力类型(工具、资源、提示词)

最全MCP平台MCPmarket.cn:推出全新MCP教程《MCP从0到1》第3课:MCP通信传输机制(stdio、SSE、Streamable HTTP)最强详解

重磅功能上线!新增Chat:对话即可自动调用MCP

在Cursor中一键接入MiniMax图像生成服务 |极简教程,小白也能轻松上手

重磅升级!热门MCP Server一键直连正式上线,AI对话Playground即将登场

我们离Agent的“终局形态”又近了一步:首个支持谷歌A2A协议的智能体网站上线Product Hunt

A2A协议的核心理念,关键机制,以及与MCP的关系

a16z合伙人: 深入了解 MCP 和 AI Agent工具的未来

备注:本系列内容参考翻译了 Hugging Face、DeepLearning.ai 、Anthropic、MCP官方等知名平台的优质内容,同时结合 MCP 最新的协议规范与生态发展,带你逐步掌握。

发表评论

评论已关闭。

相关文章