MCP让Codex能够调用接入的工具、读取外部资料。日常使用的重点是接好工具、说清任务,并检查实际调用结果。
- 本文以使用现成MCP服务为主,不从头开发服务。
- 命令在终端执行,提示词在Codex对话中输入。
- 示例中的文件路径、服务名和业务编号需要替换为自己的内容。
一、MCP是什么?
MCP全称Model Context Protocol,可以理解成AI连接工具的一套通用约定。
比如,你想让Codex查询一张工单的最新状态。接入对应工具后,它可以发起查询、拿到结果,再向你解释,而不必等你手动复制工单内容。
你:查询这张工单的最新状态
↓
Codex通过MCP调用查询工具
↓
工具读取工单系统并返回结果
↓
Codex整理状态、处理人和最近更新
MCP本身不是一个模型,也不是安装后就拥有所有功能的软件。平时说的“装一个MCP”,通常是指接入一个提供具体能力的MCP服务。
这里的“服务”既可以是本机启动的程序,也可以是通过网址连接的远程服务。
二、可以用来做什么?
| 想做的事 | 接入的能力 | 可以得到什么 |
|---|---|---|
| 查询最新的开发文档 | 文档搜索与读取 | 当前用法、参数说明和来源链接 |
| 分析已有Go程序或APK | REA | 构建信息、业务逻辑线索和定位依据 |
| 整理工单或项目进度 | 对应业务系统的查询工具 | 状态、负责人、更新时间和待办事项 |
| 排查测试订单问题 | 团队提供的订单、日志查询工具 | 订单状态、相关记录和需要继续验证的问题 |
后两类需要团队已经提供相应服务,并且你的账号有权限。MCP不会自动绕过登录,也不会因为你说“查询数据库”就获得数据库访问能力。
已有命令行、源码搜索或内置工具能完成的任务,可以继续使用它们;需要接入外部系统或专用能力时,再考虑MCP。
三、和Skill、插件有什么区别?
| 名称 | 主要作用 | 例子 |
|---|---|---|
AGENTS.md |
记录项目长期规则 | 修改文章后需要验证构建 |
| Skill | 规定一类任务怎么做 | 按固定步骤分析APK,输出依据和未知项 |
| MCP服务 | 提供可调用的工具或资料 | 读取APK、搜索文档、查询工单 |
| 插件 | 把相关能力打包,方便安装 | 一起提供Skill和MCP连接,也可以只包含其中一种 |
以REA为例:MCP连接提供分析工具,配套Skill指导Codex如何调查。装了Skill但没连上工具,仍然无法完成相应分析;MCP也不要求必须搭配Skill才能使用。
Skill的具体用法可以看Codex Skills使用教程。
四、入门:让Codex查询官方文档
这个例子使用OpenAI提供的文档MCP,只查询文档,不代替你调用OpenAI API。
1、添加连接
已安装Codex CLI时,在终端执行:
codex mcp add openaiDeveloperDocs --url https://developers.openai.com/mcp
codex mcp list
openaiDeveloperDocs是这条连接的名称,后面可以在提示词中用它指定工具。
使用桌面端时,也可以在设置中的MCP servers添加:名称填openaiDeveloperDocs,类型选Streamable HTTP,URL填https://developers.openai.com/mcp。命令行和界面添加选择一种即可。
2、确认当前任务能使用
添加后重启对应客户端或连接。CLI对话中可以输入/mcp查看当前连接,再问Codex:
检查当前是否能使用openaiDeveloperDocs的文档查询工具。
如果不可用,说明具体缺少什么,不要把配置存在当成连接成功。
codex mcp list看到记录,只能说明配置存在;一次成功的查询才说明这条连接能实际工作。
3、提出具体问题
使用openaiDeveloperDocs查询Codex的MCP配置方法。
先搜索,再读取相关官方页面。
说明个人配置和项目配置放在哪里,给出最小示例及来源链接。
没有查到的内容明确说明。
可以得到配置位置、最小示例和官方链接。任务记录中应能看到实际查询;返回“我查了文档”这句话本身不算验证。
同一个任务里可以接着问:
继续查询这份官方文档:如果配置存在,但工具一直连接失败,应先检查什么?
不需要每次使用前重新添加连接。
五、再看两个实际场景
1、REA:分析已有APK
已经按REA教程完成接入后,直接在Codex中说:
使用REA分析 /absolute/path/shop-old.apk。
查找订单页如何得到运费:本地计算还是使用接口返回值。
只分析文件,不运行应用;输出相关类、方法、依据和待验证问题。
这里REA负责检查APK,Codex负责解释结果。完整安装和Go、Android案例见REA使用教程。
2、业务查询:排查测试订单
假设团队已经提供并接入了一个名为orderSupport的MCP服务,开放订单和支付记录查询:
使用orderSupport查询测试订单<ORDER_ID>。
核对订单状态、支付结果和最近更新时间,只读查询。
按“已确认事实、可能原因、下一步验证”整理结果,不修改订单。
希望得到的是一份有查询依据的排查记录,而不是只凭“支付成功但订单未更新”这句话猜原因。工具没提供日志或支付查询时,Codex应明确指出缺少哪些信息。
这个服务名和能力是示例,需要替换成团队实际提供的工具。
六、配置时需要知道什么?
1、本地和远程,接法不同
| 连接方式 | 配置什么 | 常见场景 |
|---|---|---|
本地程序,即STDIO |
启动命令和参数 | REA等在本机处理文件的工具 |
远程连接,即Streamable HTTP |
服务提供的网址 | 官方文档、团队业务系统 |
本地服务通常由Codex按配置启动,不需要手工给每个工具一直开着终端。远程服务则需要网络可达,并完成它要求的登录或授权。
普通网站地址不一定是MCP地址。 应使用服务方提供的端点,不要自行在网址后面加/mcp就认为能用。
2、配置存在哪里?
Codex通常使用个人配置~/.codex/config.toml;只想给某个项目使用时,可以配置项目内的.codex/config.toml,项目配置需要受到信任才会加载。
例如,手动配置官方文档服务只需要这一段,与前面的命令行添加是替代关系:
[mcp_servers.openaiDeveloperDocs]
url = "https://developers.openai.com/mcp"
不要覆盖整个配置文件;已有同名条目时修改原条目。同一台主机、同一套Codex配置下,客户端可以共享连接;换电脑或改用远程环境后,需要检查那里的配置和文件路径。
3、登录和移除
服务支持OAuth登录时,可以执行:
codex mcp login <服务名>
不再使用某条手动添加的连接时:
codex mcp remove <服务名>
移除连接不等于卸载本地服务程序。通过插件提供的连接,优先在对应插件中管理。
七、常见问题与使用建议
| 现象 | 先检查什么 |
|---|---|
| 配置了,但任务里没有工具 | 连接是否启用、是否重启,以及当前任务是否运行在同一台主机 |
| 本地服务启动失败 | 启动命令、依赖和文件路径是否在Codex所在环境可用 |
| 远程服务连不上 | MCP网址、网络和登录状态 |
| Codex没有使用指定工具 | 明确写“使用某某服务查询什么”,并检查调用记录 |
| 工具能调用,但查不到数据 | 账号权限、查询条件和工具实际支持范围 |
| 只有Skill,没有对应工具 | Skill是流程说明,还要接好它依赖的MCP服务 |
- 把问题说具体:写清服务名、目标和希望得到的结果,例如“查询测试订单状态”,而不只是“用一下MCP”。
- 说明操作范围:查询、修改、发送消息是不同操作;涉及修改时,把允许改什么写清楚。
- 凭据交给配置和授权流程:不要把真实Token、数据库密码或含凭据的连接串粘到对话和文章里;按服务文档使用登录授权或环境变量。
- 本地运行不等于结果只留在本地:工具结果会进入助手上下文,继续按团队的数据使用要求处理。
- 只接入当前需要的服务:工具返回的内容也需要核对,尤其不能把外部文档中的指令当成你的新要求。
参考资料
- MCP官方介绍:概念、用途和生态。
- Codex官方MCP文档:连接、配置和管理方式。
- OpenAI文档MCP入门:本文可直接照做的文档查询案例。