浏览 AI 知识库

MCP 是什么:看懂 Client、Server、工具和资源

理解 MCP,先分清谁发起请求、谁提供工具、数据从哪里来、权限落在哪里。把 Client、Server 和真实资源混在一起,配置与排错都会失去方向。

沿完整工作流推进

前一阶段的可检查结果,是下一阶段的输入;中间证据不足时停在当前阶段。

  1. 01在 Codex 里看见一个工具,不等于“装了一个插件”
  2. 02先确认这次任务的起点、边界和交付
  3. 03从“Client”走到“一次调用”
  4. 04用‘读取测试目录’看懂四个角色如何协作
  5. 05完成后的一张连接关系图
沿一件真实任务走到底

在 Codex 里看见一个工具,不等于“装了一个插件”

用户在 Codex 里看见一个文件工具,便说“我装了 MCP 插件”。排错时才发现 Client、Server、传输和真实文件系统被混成了一个东西。

  • Client、Server、传输和外部系统分开
  • 工具与资源的提供方明确
  • 第一次调用为最小只读任务
本例材料

先确认这次任务的起点、边界和交付

需要确认本例内容
现有材料本例 Client 为 Codex,Server 为本地文件服务,传输为 stdio;只允许读取 `D:/demo/docs`。
不能越过的边界连接图分别标客户端、Server 进程、工具/资源、传输和外部系统;能力以当前客户端和 Server 文档为准。
要交付的结果一张连接关系图
处理记录

从“Client”走到“一次调用”

当前阶段实际处理
Client发起连接、发现能力、展示授权和把调用结果交回模型,例如具体桌面或命令行客户端。
Server连接文件、数据库、浏览器或外部服务,并声明可调用的工具和可读取的资源。
工具与资源工具通常执行带参数的动作,资源用于读取内容;名称相似不代表权限或副作用相同。
传输与认证本地进程和远程服务的启动、网络、凭证、日志和风险不同,按具体实现核对。
一次调用Client 发现能力,模型选择调用,用户或客户端确认,Server 执行并返回结果;高风险动作应停在确认前。
一次只读调用

用‘读取测试目录’看懂四个角色如何协作

角色本例动作必须核对
ClientCodex 发起连接并展示可用工具配置文件位置、当前工作区和授权范围
Server文件系统 Server 暴露 `list_directory`启动命令、版本、日志和是否支持写入
资源测试目录中的 `README.md`路径是否在允许目录,内容是否敏感
工具调用 `list_directory` 读取文件名参数、返回结果与 Server 日志一致;不执行写操作

工具名和参数会随 Server 实现变化,表格只演示判断关系,不能直接复制命令。

边界排查

看到工具列表,不代表已经安全可用

能看到工具,但调用读到了目录外文件

原因
Server 启动参数或工作目录范围过宽,Client 只负责展示能力。
怎么改
停止调用,检查 Server 的根目录、账号和路径限制,重新用测试目录验证。

调用返回成功,但不知道是否改了外部状态

原因
把工具名称当成权限说明,没有阅读 Server 文档和日志。
怎么改
核对工具副作用、参数和日志;写入、删除、付款或外发操作必须先人工确认。
最终输出

完成后的一张连接关系图

连接图显示 Codex 发起工具调用,经 stdio 发送到 Server,Server 再读取白名单目录;API Key 不是 MCP 本身,工具也不等于 Server。第一次测试只列目录并读取一份教学文件。

验收方式

一张连接关系图通过哪些检查才算完成

进一步核对

连接关系:参考资料与核对入口