Skip to content

10 · MCP 与外部工具

📚 系列导航:上一篇 09 AGENTS.md 指南 教你把项目规矩写进 Codex 的记忆。这一篇给 Codex 接上外部世界。


01 MCP 是什么

Codex 默认只能摸你本地的文件和命令。MCP(Model Context Protocol)就是那个统一外接口——接一次,一堆外部服务的工具就摆到了它面前。

判断标准: 当你发现自己从另一个工具复制数据到聊天中时,就该接 MCP 了。

MCP 不是 OpenAI 的私有协议,而是一套公开规范。同一个 MCP server,Codex 能用,Claude Code 也能用。只是配法不同——下面专门讲差异。

TIP

Codex 会读 server 初始化时返回的 instructions 字段,当成这个 server 的「使用须知」——好的 server 自带一份说明书,Codex 会一并读进去。


02 两种 server 形态

形态跑在哪怎么加适合
STDIO(本地进程)你机器上,作为子进程启动codex mcp add <name> -- <command>本地工具,需本地有对应环境
Streamable HTTP(远程托管)某个网址上codex mcp add --transport http <name> <url>云服务,推荐

STDIO 的精髓是那条「启动命令」——Codex 帮你在后台拉起一个进程。所以它能跑的前提是你机器上有对应环境(如 npx 需要 Node.js)。STDIO 还能单独传环境变量(--env 或配置里的 env)。

HTTP 的鉴权方式有两种:

  • Bearer token:在配置里指定存 token 的环境变量名(bearer_token_env_var),token 本身不进配置文件
  • OAuth:在终端跑 codex mcp login <server-name> 走授权流程

03 配置方式

Codex 所有 MCP 配置都在 config.toml 里。关键区别:Codex 没有 --scope 参数。 作用范围靠配置文件放在哪决定:

配置写在哪在哪些项目生效
~/.codex/config.toml(全局)你所有项目
项目里的 .codex/config.toml仅当前项目(且需是受信任项目)

NOTE

CLI 和 IDE 扩展共用这份配置。你在终端配好的 MCP server,切到 VS Code 里的 Codex 扩展直接用。

方式一:命令式(最快)

bash
codex mcp add <server-name> -- <stdio 启动命>
codex mcp add --transport http <name> <url>

方式二:手写 config.toml(更细)

toml
# STDIO server
[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]

# HTTP server with Bearer token
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"

04 收口一个 server

字段作用默认值
enabled临时禁用true
enabled_tools工具白名单不写则全放
disabled_tools工具黑名单(在白名单之后应用)
default_tools_approval_mode该 server 工具的默认审批行为auto / prompt / approve
startup_timeout_secserver 启动超时10
tool_timeout_sec单次工具调用超时60

白名单优先于黑名单: disabled_tools 是在 enabled_tools 之后应用。先圈出允许的工具,再从里剔掉个别危险的。

toml
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"]          # 最终只剩 open
default_tools_approval_mode = "prompt"   # 默认每次问我
startup_timeout_sec = 20                 # 启动慢的调大

05 安全

WARNING

MCP server 是第三方代码,OpenAI 不替你审计。接之前先验证信任。

几条土规矩:

  • 官方文档点名推荐的(Context7、Figma、Playwright)→ 相对放心
  • 大厂官方出的(GitHub、Sentry) → 相对放心
  • GitHub 上 star 不多的第三方 server → 先看源码再接入
  • 陌生 server 的工具默认设 prompt,危险工具用 disabled_tools 拦死
  • 给数据库只用只读账号
  • 抓外部内容的 server 当心提示注入——网页里可能藏恶意指令

06 动手:接 Context7 文档 server

bash
codex mcp add context7 -- npx -y @upstash/context7-mcp
codex mcp list

预期:context7 旁边标 ✓ Connected。在 Codex 会话里:

text
用 context7 查一下 TypeScript 5.0 的新特性

练完拆掉:codex mcp remove context7


07 小结

环节关键动作
加 serverSTDIO 给命令,HTTP 给 URL
作用域--scope,靠配置文件位置决定
收口enabled / enabled_tools / disabled_tools / default_tools_approval_mode
超时启动默认10s,工具调用默认60s
HTTP 鉴权Bearer token(只写变量名)或 OAuth
安全优先官方,数据库只读,陌生 server 收紧审批

NOTE

下一篇11 Subagent 与多 Agent 协作:派分身干脏活,让主会话保持清爽。

Codex 实战手册