本文结论
- MCP 采用 C-S 架构:Host 通过 Client 连接一个或多个 Server。
- Host 是用户直接使用的 AI 应用,Client 是 Host 内部的连接组件,Server 是暴露能力的外部程序。
- 一个 Host 可以同时连接多个 MCP Server,每个 Server 可以提供 Tools、Resources 和 Prompts。
- 传输方式会影响部署形态:本地 Server 常用 stdio,远程 Server 通常使用 HTTP 类传输。
适合谁读
- 已经知道 MCP 是什么,想进一步理解 Host、Client、Server 分工的人。
- 准备开发 MCP Server,想知道它和 AI 应用之间如何连接的人。
- 想把 MCP 放进 Agent 工具体系里的人。
MCP 的组成
MCP 采用 C-S 架构,常见的 MCP Host 如 Codex、Claude 会与多个 MCP Server 建立连接。例如,本地的 computer-use MCP Server 和在远端的 GitHub MCP Server,Host 会为每个 MCP Server 创建对应的 Client,来保持专用的连接。
如上面所说,MCP Server 可以在本地也可以在远程,可以通过使用不同的传输协议来实现。使用 STDIO 的本地 MCP Server 通常只服务于本地的 MCP 客户端,而使用 Streamable HTTP 的远程服务器则通常可以服务于多个 MCP 客户端。
通常 MCP 生态里还会包含:
- MCP 规范:定义协议和消息结构。
- MCP SDK:帮助开发者实现 Client 或 Server。
- MCP 开发工具:用于调试和测试 MCP Server。
- MCP Server 的参考实现:例如文件系统、GitHub、数据库等 Server。
Host、Client、Server 的区别
MCP 架构中主要组成部分包括 3 类:
- MCP Host:负责协调管理一个或多个 MCP Clients 的 AI 应用,例如 Codex。
- MCP Client:与 MCP Server 保持连接的组件,从 MCP Server 获取数据,供 MCP Host 使用。
- MCP Server:一种为 MCP Client 提供所需上下文的程序。
可以这样理解:
| 组件 | 更像什么 | 关注点 |
|---|---|---|
| MCP Host | 用户正在使用的 AI 应用 | 任务理解、模型调用、用户交互 |
| MCP Client | Host 内部的连接适配器 | 与某个 Server 建立连接、发送请求、接收响应 |
| MCP Server | 外部能力提供者 | 暴露工具、资源和提示模板 |
一个请求如何流动
一个简化的 MCP 调用过程大概是:
用户提出任务
-> Host 判断需要外部能力
-> Host 通过对应 Client 请求某个 Server
-> Server 返回工具列表、资源内容或工具执行结果
-> Host 把结果放回模型上下文
-> 模型继续生成或继续调用工具
这里最重要的是:Server 不直接替模型做所有决策。Server 提供能力,Host 和模型决定什么时候使用这些能力,而 Harness 或应用层负责权限、确认和审计。
常见误区
MCP Client 不是用户侧应用本身
用户通常看到的是 Host。Client 更像 Host 内部和某个 Server 通信的连接层。
一个 Host 不只连接一个 Server
实际使用中,一个 AI 应用可以同时连接文件系统、GitHub、浏览器、数据库等多个 MCP Server。
MCP 架构不自动等于安全架构
MCP 只是把连接标准化。是否允许写文件、是否允许调用某个 API、是否需要人工确认,仍然要由应用和 Server 共同设计。