《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》第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)

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)

1)初始化(Initialisation)

Client 与 Server 建立连接,建立本本兼容性、交换和协商能力,分享实现的细节。

客户端发送初始化请求(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)

在终止阶段,客户端通知服务器断开连接,服务器确认关闭请求。客户端发送退出后关闭连接。

4. 能力协商

Capability Negotiation

在初始化阶段,客户端和服务器明确声明其支持的功能,决定了在会话期间可用哪些功能。

服务器声明其功能,例如资源订阅、工具支持和提示模板

客户端声明支持采样和通知处理等能力

双方必须在整个会话期间尊重声明的功能

可以通过协议扩展来协商额外的功能

关键能力包括:

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

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

以下是客户端和服务器之间能力协商的一个流程图:

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

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

掌握通信的消息类型和生命周期,将帮助你深入了解 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 最新的协议规范与生态发展,带你逐步掌握。