MCP & A2A 前沿实战
15
15
1.0x
00:00/00:00
登录|注册

06|底层架构(上):MCP 协议协议层(Protocol layer)详解

你好,我是黄佳。
这节课开始,我们一起来深入剖析 MCP 的底层架构。这节课和下一课都比较偏重协议的设计,MCP 内部代码细节有点多。因此如果你的目标只是搭建 MCP 应用,可以速读,作为知识性的了解即可。
在传统的大模型应用中,模型本身只能被动地接收输入、产生输出,要让它调用外部工具或访问自定义的上下文,就需要在代码里逐条写好 API 调用、认证、错误处理的逻辑,既繁琐又难以维护。MCP(Model Context Protocol)的初衷,就是将这些“上下文管理”和“工具调用”能力抽象成一个标准化的通信协议,让大模型应用只需关注“我想用什么资源”,由专门的 MCP 服务端来真正执行调用、管理状态、返回结果。

MCP 架构中的 Host、Client 和 Server

在 MCP 架构中,“Host” 指的是最终承载大模型和用户界面的应用,比如桌面端的 Claude 客户端、IDE 插件或自研的聊天机器人后台。一个 Host 启动时,会在内部创建一个 MCP Client 实例,这个 Client 负责与外部的 MCP Server 建立一对一的连接(通常通过 stdio、HTTP+SSE 或其他支持的传输层)。
接入层面的 “Client” 正是这个 MCP 客户端,它把上层业务或大模型交互中产生的“请求”(例如“列出可用工具”“执行代码分析”)打包成符合 JSON-RPC 2.0 的消息,再通过底层传输通道发给 Server;同时,它也能接收来自 Server 的 Notification(如“工具状态更新”),并把所得数据交回给 Host,以便拼接到模型的 Prompt 中或做二次处理。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Session 类是 MCP SDK 在底层对“JSON-RPC 消息收发”的统一封装,由框架内部创建和管理。 2. 在编写 Server 代码时,只需关注声明工具函数、调用 mcp.run(...) 启动即可,不需要也看不到 Session 的具体实现。 3. BaseSession 统一完成了所有 JSON-RPC 的帧处理、ID 管理、并发流控、超时与错误处理,开发者只需在 Server 或 ClientSession 外层注册相应的回调。 4. 设计既保证了 MCP 核心协议的稳定性,也为业务进展预留了无限的可扩展空间。 5. Session 是框架内部件,日常构建 MCP Server 时无需关注它的源码,只需使用高层的 @mcp.tool、list_resources()、mcp.run() 这些接口即可。 6. 了解底层构造能够让你对为什么需要MCP以及它是怎么构建出来的有个更清晰的认知。 7. 如果要在 BaseSession 之外引入一个新的消息优先级机制,可以在 _receive_loop 中插入优先级判断的思路。 8. 考虑一种场景:在 ClientSession 中统计所有发出的请求和收到的响应的往返时延(RTT),并在超过阈值时发出告警通知。 9. 思考如何在 MCP 的协议层之上做增量扩展,又能保持与框架核心逻辑的解耦。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MCP & A2A 前沿实战》
新⼈⾸单¥59
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)