文章详细介绍了MCP(Model Context Protocol)协议架构、核心概念及工作原理。MCP包含Host、Servers和Protocol三部分,使用JSON-RPC 2.0通信协议,核心概念包括Resources(数据)、Prompts(模板)和Tools(函数)。文章解释了MCP交互流程:握手、资源发现和操作执行。MCP作为应用和模型间的桥梁,弥补了模型无法获取最新和私有数据的缺点,为AI应用开发提供了清晰工作流,是企业标准化AI能力的有效工具。
本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。
今天再聊一聊MCP(Model Context Protocol),相比《一文了解MCP服务》 更深入一些。
首先通过下图了解 MCP 全貌:
很明显 Host 协调 AI 工作流,并不关心数据细节;Servers 暴露自身能力,并不感知模型;Protocol 处理通信,和互联网协议并无两样。
MCP 流行的原因之一在于其通信协议 JSON-RPC 2.0 很早就存在了,支持两种传输机制:
- • stdio:适合在同一台机器上运行 MCP Server,MCP Client 通过本地进程调用它。
- • HTTP:通过 HTTP 协议传输,支持 SSE Stream。
MCP 有三个核心概念,从而提供灵活性,仔细理解下图内容:
Resources 代表模型可以读取的数据,每种资源采用 URL 来区别不同的数据,比如 file:// 表示文件系统、postgres:// 表示数据库。Server 通过 resources/list 列出可用资源,而 Host 通过 resources/read 获取数据。
Prompts 为常见任务提供可复用的模板,包含了特定领域知识,采取最合适的指令。比如数据库 MCP 服务提供慢查询调试、数据迁移等 Prompt,每个 Prompt 都包含任务的上下文信息。
Tools 是模型可调用的函数,用于执行特定计算,它会修改状态,通过 Tools 模型能够主动执行,每个 Tool 通过 JSON 定义参数、类型、约束,模型发送符合特定模式 JSON 对象,Server 验证执行后返回结果。
比如 GitHub MCP 包含 create_issue、merge_pull_request、add_comment 等 Tools,每个 Tool 有明确的规范。
请注意,这三个概念中,不管是 Client 还是 Server 两个维度都有 Resources、Prompts、Tools,需要仔细理解。
最后理解 MCP 协议交互细节,具体见下图:
首先 Host 上的 MCP Client 和 MCP Sserver 完成握手,交换协议信息,这和传统通信协议是一样的。
其次是最关键的发现,Host 通过 resources/list 获取 MCP Server 的 Respurces 信息、通过 prompts/list 获取可用的 Prompt 和参数、通过 tools/list 获取 Tools以及对应的 JSON 模式。
通过发现机制,MCP Server 能够自我描述,而且发现机制也是动态的。
第三步就是执行操作,比如 Client 通过 resources/read 请求获取 Resource。
对于 Tools,首先 Model 通过内在能力构建了一个包含 Tools 名称和参数的 JSON 对象,然后 Client 发送 tools/call 请求,Server 验证后返回给 Host。
Prompt 稍微有点不同,Host 要检索一个 Prompt,Client 使用 Prompt 名称和参数调用 prompts/get,Server 返回处理过的 Prompt,包含了参数和上下文,最后 Host 将处理过的 Prompt 传递给 Model 执行。
最后 MCP 的作用是全方面的,它是应用和模型之间的工具,弥补了模型的一些先天缺点,比如无法获取最新和私有数据。其次对于开发者来说,MCP 为构建AI应用提供了清晰的工作流;对于企业来说,通过MCP标准化形式暴露企业能力,避免受制于特定厂商指定的标准。
更多AI大模型应用开发学习视频及资料,在智泊AI。