理解 MCP -读《这就是 MCP》

一、序言
最近读完了一本讲解 MCP 实现原理的书:《这就是 MCP》,它帮助我更好地理解了 MCP,以下是一些笔记。
二、什么是 MCP
MCP 的全称是 Model Context Protocol,之所以叫这个名字,是因为它可以成为大模型调用外部工具的协议,让大模型能够补充自己的上下文(即 Context)。
在没有 MCP 之前,每个大模型都在为自己扩展调用外部工具的能力,最常见的能力就是调用搜索引擎。但是这就会造成一个麻烦:每个大模型都需要自己开发一遍调用工具(重复造轮子),而且由于协议不开放,第三方开发者无法为大模型提供更多工具。
在有了 MCP 之后,整个开发流程变成了:
- 大模型都适配 MCP 协议
- 各种工具都适配 MCP 协议
这样,一个新的工具出来,立刻可以为所有大模型可用,而一个新的大模型也可以立刻调用市面上公开的 MCP(下图)。

有人把这个比作 “AI 时代的 HTTP 协议”,我是比较认同的。
三、MCP 的实现细节
3.1 角色
不同于 HTTP协议的浏览器 / 服务器(B/S)架构,MCP 的协议多了一个 “主机” 的角色,一共包含三个角色,分别是:主机,客户端,服务器。
主机:创建和管理多个客户端。负责鉴权相关工作。负责多个客户端内容的聚合,
客户端:一个客户端是一个进程,负责与对应的 MCP 服务器交互数据,管理会话的状态。
服务器:为客户端提供服务。可以部署成本地服务或远程服务。
3.2 协议
MCP 使用 JSON-RPC 作为客户端与服务器通信的基础。
当服务器部署在本地的时候,它允许客户端用 stdio 的方式来传输 JSON 编码的数据。
当服务器部署在远程的时候,它使用 HTTP 来传输 JSON。
鉴权方面, 基于 stdio 传输实现的服务器直接从环境变量中读取授权凭证,而基于 HTTP 协议的服务器,基于 OAuth 2.1 实现授权。
四、如何开发 MCP
开发 SDK:MCP 支持任意语言开发 MCP 服务器,我们可以使用官方提供的 SDK 快速生成代码框架。
调试工具:官方提供的调试工具名为 MCP Inspector,用它连接对应 MCP 之后就可以在面板中调试功能。
发布 MCP:我们可以把开发好的服务发布到 MCP 市场上面供开发者检索到。
MCP 市场。市面上比较有名的市场包括:
- Anthropic 官方的 MCP Servers 仓库
- Smithery
- Glama
五、MCP 的问题
MCP 发布才一年时间,所以还有很多细节未来需要完善,包括:
- 协议对多模态内容支持不够友好
- 鉴权机制不完善,很多 MCP 服务还未支持 25 年 3 月引入的 OAuth 鉴权协议
- 安全防护能力弱。攻击者可以构造恶意的 MCP 服务来诱导用户执行恶意命令,从而实现信息窃取,执行恶意命令等攻击。
以上。