MCP (Model Context Protocol) 技术理解 - 第二篇

作者:想用offer打牌日期:2026/2/8

引言

我们第一篇讲了MCP的基础概念、MCP解决的问题以及MCP的架构,我相信大家已经对MCP有了一定的了解,那么接下来让我们深入MCP具体是如何实现的,这一篇我们的重点放在通信协议和数据传输上,让我们一起来看看吧

如果你对前面的内容感兴趣,可以点击这里跳转

MCP (Model Context Protocol) 技术理解 - 第一篇

MCP的层级

MCP由两层组成:

  • 数据层:定义了基于 JSON-RPC 的客户端-服务器通信协议,包括生命周期管理和核心原语,如工具、资源、提示和通知。
  • 传输层:定义了客户端和服务器之间进行数据交换的通信机制和通道,包括特定于传输的连接建立、消息帧和授权。

从概念上讲,数据层是内层,而传输层是外层。

MCP的数据层

数据层实现了基于JSON-RPC 2.0交换协议,该协议定义了消息结构和语义。该层包括:

  • 生命周期管理:处理客户端和服务器之间的连接初始化、能力协商和连接终止。
  • 服务器功能:使服务器能够提供核心功能,包括用于 AI 操作的工具、上下文数据资源以及来自客户端和与客户端交互的模板提示。
  • 客户端功能:使服务器能够请求客户端从主机LLM进行采样、获取用户输入以及向客户端记录消息。
  • 实用功能:支持实时更新通知和长时间运行操作的进度跟踪等附加功能

该协议支持实时通知,从而实现服务器和客户端之间的动态更新。例如,当服务器的可用工具发生变化时(当新功能上线或现有工具被修改时),服务器可以发送工具更新通知,告知已连接的客户端这些变化。通知以 JSON-RPC 2.0 通知消息的形式发送(无需响应),使 MCP 服务器能够向已连接的客户端提供实时更新。

简单来说,就和我们配置中心Nacos、Apollo通过订阅-推送机制实现配置热更新差不多

MCP的传输层

传输层管理客户端和服务器之间的通信通道和身份验证。它处理连接建立、消息帧构建以及MCP参与者之间的安全通信。MCP支持两种传输机制:

  • Stdio 传输:使用标准输入/输出流在同一台机器上的本地进程之间进行直接进程通信,提供最佳性能,且无网络开销。
  • 可流式 HTTP 传输:使用 HTTP POST 请求进行客户端到服务器的消息通信,并可选使用服务器通过SSE来实现流式传输功能。此传输方式支持远程服务器通信,并支持包括持有者令牌、API 密钥和自定义标头在内的标准 HTTP 身份验证方法。MCP 建议使用 OAuth 获取身份验证令牌。

传输层将通信细节从协议层中抽象出来,从而实现所有传输机制都采用相同的 JSON-RPC 2.0 消息格式。

ok,这就覆盖到我们上一篇的知识了,为什么MCP可以统一数据格式和传输,同时可以预制模板,原因就在于传输层抽象成了统一的标准,无论是什么传输机制,大家只要按照这一标准来传输数据即可实现互通。

通信协议与数据传输在MCP里面是什么样子的

我们来一个图来展示通信协议与数据传输在MCP的充当的角色

image.png

展示一下数据格式,我们以STDIO (标准输入/输出)为例子

连接建立后,客户端可以通过发送tools/list请求来发现可用的工具。此请求是 MCP 工具发现机制的基础——它允许客户端在尝试使用工具之前了解服务器上有哪些工具可用

然后服务端就返回可调用的tools(包括名称、描述、数据格式等)给客户端

1// Request
2{
3  "jsonrpc": "2.0",
4  "id": 1,
5  "method": "tools/list",
6  "params": {}
7}
8
9// Response
10{
11  "jsonrpc": "2.0",
12  "id": 1,
13  "result": {
14    "tools": [
15      {
16        "name": "search_flights",
17        "description": "Search for available flights",
18        "inputSchema": {
19          "type": "object",
20          "properties": {
21            "origin": {"type": "string"},
22            "destination": {"type": "string"},
23            "date": {"type": "string", "format": "date"}
24          },
25          "required": ["origin", "destination", "date"]
26        }
27      }
28    ]
29  }
30}
31

小结

在这一篇中,我们主要讲解了MCP它实现的通信协议和数据格式,这就给我们前面MCP如何实现的抽象和数据如何传输的问题解了惑。

下一篇我们讲讲MCP的三大核心原语、生命周期等问题


MCP (Model Context Protocol) 技术理解 - 第二篇》 是转载文章,点击查看原文


相关推荐


type-challenges(ts类型体操): 11 - 元组转换为对象
fxss2026/1/30

11 - 元组转换为对象 by sinoon (@sinoon) #简单 #object-keys 题目 将一个元组类型转换为对象类型,这个对象类型的键/值和元组中的元素对应。 例如: const tuple = ['tesla', 'model 3', 'model X', 'model Y'] as const type result = TupleToObject<typeof tuple> // expected { 'tesla': 'tesla', 'model 3': 'mode


Flutter艺术探索-Flutter国际化:多语言支持实现
kirk_wang2026/1/20

Flutter 国际化:从原理到实践的多语言支持方案 引言:为什么你的 Flutter 应用需要国际化? 如今,开发一款成功的应用就不得不考虑全球市场。国际化(i18n)和本地化(l10n)不再是可选项,而是连接不同文化用户的桥梁。对于使用 Flutter 的开发者来说,框架本身提供了强大的国际化支持,这不仅能显著提升用户体验,更是扩大应用市场份额的关键一步。想想看,当你的应用能够用用户的母语与其沟通时,下载量和用户留存率的提升是显而易见的。 Flutter 的国际化体系基于 Dart 的 in


mongodb的基本命令
豆浆粉牛奶2026/1/12

大家好我是小帅,今天学习mongodb的简单认识和基本命令。 本章内容: 理解MongoDB的业务场景、熟悉MongoDB的简介、特点和体系结构、数据类型等。能够在Windows和Linux下安装和启动MongoDB、图形化管理界面Compass的安装使用掌握MongoDB基本常用命令实现数据的CRUD 掌握MongoDB的索引类型、索引管理、执行计划。使用Spring DataMongoDB完成文章评论业务的开发 文章目录 1. MongoDB认识1.1 业务场景1.2 结构体系


AI 有你想不到,也它有做不到 | 2025 年深度使用 Cursor/Trae/CodeX 所得十条经验
Piper蛋窝2026/1/4

去年的今天,我还在奋笔疾书地写着 VS Code + Roo Cline 的评测心得:个人评测 | Cursor 免费平替:Roo Cline + DeepSeek-v3/Gemini-2.0 + RepoPrompt AI 辅助编程 。当时的我没有想过:在 2025 年, Roo Cline 会被我迅速淘汰,我也成为了 Cursor 这类 Vibe Coding 工具的稳定用户之一。 站在 2026 年伊始的节点上,审视自己的工作流,发现已经完全被锚定在了如下工具链上: 对话工具: Chat


别再让 AI 直接写页面了:一种更稳的中后台开发方式
月亮有石头2025/12/26

本文讨论的不是 Demo 级别的 AI 编码体验,而是面向真实团队、长期维护的中后台工程实践。 AI 能写代码,但不意味着它适合直接“产出页面”。 最近一年,大模型在前端领域的讨论几乎都围绕一个问题: “能不能让 AI 直接把页面写出来?” 在真实的中后台项目中,我的答案是: 不但不稳,而且很危险。 这篇文章想分享一种我在真实项目中实践过、可长期使用、可规模化的方式: 不是让 AI 写页面,而是把 AI 纳入中后台前端的工程体系中。 把 AI 的不确定性关进了笼子里,用工程流程保证可控性


小程序项目之驾校报名小程序源代码(java+vue+小程序+mysql)
风月歌2025/12/17

大家好我是风歌,曾担任某大厂java架构师,如今专注java毕设领域。今天要和大家聊的是一款java小程序项目——驾校报名小程序。项目源码以及远程配置部署相关请联系风歌,文末附上联系信息 。 项目简介: (1)管理员功能需求 管理员登陆后,主要包括首页、个人中心、用户管理、驾校教练管理、驾校信息管理、驾校报名管理、驾校车辆管理、预约教练管理、车辆预约管理、驾校考试管理、考试报名管理、课程安排管理、课程进度管理、系统管理等功能。 (2)用户功能需求 用户登陆后进入小程序首页,可以实现首页、通知


【云计算】云平台权限治理(六):企业项目的管理结构
大数据与AI实验室2025/12/9

《云平台权限治理》系列,共包含以下文章: 1️⃣ 云平台权限治理(一):虚拟数据中心 VDC2️⃣ 云平台权限治理(二):VDC 与企业项目3️⃣ 云平台权限治理(三):为什么公有云没有 VDC ?4️⃣ 云平台权限治理(四):VDC、企业项目、用户组5️⃣ 云平台权限治理(五):VDC 的树形管理结构6️⃣ 云平台权限治理(六):企业项目的管理结构 😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持


浅谈C++与C语言二进制文件差异(从一次链接错误说起)
码事漫谈2025/11/29

"undefined reference to `func' ",这个看似简单的链接错误背后,隐藏着C与C++二进制文件的根本差异。很多开发者认为C++只是"C with Classes",却不知这对"亲密兄弟"在二进制层面早已分道扬镳。 在软件开发的演进历程中,C++作为C语言的延伸,始终保持着高度的语法兼容性。这种表面上的相似性却掩盖了两者在编译产物层面的深刻差异。本文将从二进制文件的视角,深入剖析C++与C语言在目标代码生成机制上的本质区别,揭示面向对象、泛型编程等高级特性在机器层面的实现


WebMCP 时代:在浏览器中释放 AI 的工作能力
CharlesYu012026/2/16

随着 AI Agent 的广泛应用,传统的 Web 自动化与 Web 交互模式正在迎来根本性变化。WebMCP 是一个未来派的技术提案,它不仅改变了 AI 访问 Web 的方式,还为 AI 与前端应用之间建立起了 协议级的交互通道。本文从WebMCP架构分层解析这项技术及其工程意义。 面对 GEO 与 Agent 应用逐步弱化浏览器入口价值的趋势,浏览器厂商必须主动跟进,通过技术升级与生态重构来守住自身核心阵地。 一、WebMCP 是什么? WebMCP(Web Model Context P


告别死板流程:OpenSpec OPSX 如何重塑 SDD 开发工作流
fundroid2026/2/25

引言:SDD 与 OpenSpec 规范驱动开发(SDD)是什么? 近两年,AI 编码助手已经能“听懂人话”,从一段自然语言描述里生成大段代码。但很多团队也发现:如果需求只是散落在聊天记录里、脑补在每个人的心里,AI 很容易“发挥过度”——代码写出来了,却不是你真正想要的系统行为。 规范驱动开发(Spec-Driven Development,SDD)试图解决的,就是这个问题。它把规范(spec)而不是代码当成系统的“单一事实来源”:先用结构化、机器可读的方式,把系统应该做什么、有哪些边界和不变

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客