浏览 AI 知识库
MCP 是什么:看懂 Client、Server、工具和资源
理解 MCP,先分清谁发起请求、谁提供工具、数据从哪里来、权限落在哪里。把 Client、Server 和真实资源混在一起,配置与排错都会失去方向。
沿完整工作流推进
前一阶段的可检查结果,是下一阶段的输入;中间证据不足时停在当前阶段。
在 Codex 里看见一个工具,不等于“装了一个插件”
用户在 Codex 里看见一个文件工具,便说“我装了 MCP 插件”。排错时才发现 Client、Server、传输和真实文件系统被混成了一个东西。
- Client、Server、传输和外部系统分开
- 工具与资源的提供方明确
- 第一次调用为最小只读任务
先确认这次任务的起点、边界和交付
| 需要确认 | 本例内容 |
|---|---|
| 现有材料 | 本例 Client 为 Codex,Server 为本地文件服务,传输为 stdio;只允许读取 `D:/demo/docs`。 |
| 不能越过的边界 | 连接图分别标客户端、Server 进程、工具/资源、传输和外部系统;能力以当前客户端和 Server 文档为准。 |
| 要交付的结果 | 一张连接关系图 |
从“Client”走到“一次调用”
| 当前阶段 | 实际处理 |
|---|---|
| Client | 发起连接、发现能力、展示授权和把调用结果交回模型,例如具体桌面或命令行客户端。 |
| Server | 连接文件、数据库、浏览器或外部服务,并声明可调用的工具和可读取的资源。 |
| 工具与资源 | 工具通常执行带参数的动作,资源用于读取内容;名称相似不代表权限或副作用相同。 |
| 传输与认证 | 本地进程和远程服务的启动、网络、凭证、日志和风险不同,按具体实现核对。 |
| 一次调用 | Client 发现能力,模型选择调用,用户或客户端确认,Server 执行并返回结果;高风险动作应停在确认前。 |
用‘读取测试目录’看懂四个角色如何协作
| 角色 | 本例动作 | 必须核对 |
|---|---|---|
| Client | Codex 发起连接并展示可用工具 | 配置文件位置、当前工作区和授权范围 |
| Server | 文件系统 Server 暴露 `list_directory` | 启动命令、版本、日志和是否支持写入 |
| 资源 | 测试目录中的 `README.md` | 路径是否在允许目录,内容是否敏感 |
| 工具 | 调用 `list_directory` 读取文件名 | 参数、返回结果与 Server 日志一致;不执行写操作 |
工具名和参数会随 Server 实现变化,表格只演示判断关系,不能直接复制命令。
看到工具列表,不代表已经安全可用
能看到工具,但调用读到了目录外文件
- 原因
- Server 启动参数或工作目录范围过宽,Client 只负责展示能力。
- 怎么改
- 停止调用,检查 Server 的根目录、账号和路径限制,重新用测试目录验证。
调用返回成功,但不知道是否改了外部状态
- 原因
- 把工具名称当成权限说明,没有阅读 Server 文档和日志。
- 怎么改
- 核对工具副作用、参数和日志;写入、删除、付款或外发操作必须先人工确认。
完成后的一张连接关系图
连接图显示 Codex 发起工具调用,经 stdio 发送到 Server,Server 再读取白名单目录;API Key 不是 MCP 本身,工具也不等于 Server。第一次测试只列目录并读取一份教学文件。
