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
《MCP & A2A 前沿实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论