跳到主要内容

本文为非官方中文翻译,内容以 OpenAI 官方英文文档为准。
官方来源:https://developers.openai.com/codex/mcp

Model Context Protocol

为 Codex 提供对第三方工具和上下文的访问

Model Context Protocol (MCP) 将模型连接到工具和上下文。使用它可以让 Codex 访问第三方文档,或让它与开发者工具交互,例如你的浏览器或 Figma。

Codex 在 CLI 和 IDE 扩展中都支持 MCP 服务器。

支持的 MCP 功能

  • STDIO 服务器:作为本地进程运行的服务器(由命令启动)。
    • 环境变量
  • 可流式传输的 HTTP 服务器:通过某个地址访问的服务器。
    • Bearer token 身份验证
    • OAuth 身份验证(对于支持 OAuth 的服务器,运行 codex mcp login

将 Codex 连接到 MCP 服务器

Codex 将 MCP 配置与其他 Codex 配置设置一起存储在 config.toml 中。默认路径是 ~/.codex/config.toml,但你也可以通过 .codex/config.toml 将 MCP 服务器限定到某个项目(仅限受信任项目)。

CLI 和 IDE 扩展共享此配置。配置好 MCP 服务器后,你可以在这两个 Codex 客户端之间切换,而无需重新设置。

要配置 MCP 服务器,请选择以下一种方式:

  1. 使用 CLI:运行 codex mcp 以添加和管理服务器。
  2. 编辑 config.toml:直接更新 ~/.codex/config.toml(或受信任项目中的项目级 .codex/config.toml)。

使用 CLI 配置

添加 MCP 服务器

codex mcp add <server-name> --env VAR1=VALUE1 --env VAR2=VALUE2 -- <stdio server-command>

例如,要添加 Context7(一个免费的开发者文档 MCP 服务器),你可以运行以下命令:

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

其他 CLI 命令

要查看所有可用的 MCP 命令,可以运行 codex mcp --help

终端 UI (TUI)

codex TUI 中,使用 /mcp 查看你的活动 MCP 服务器。

使用 config.toml 配置

若要更细粒度地控制 MCP 服务器选项,请编辑 ~/.codex/config.toml(或项目级 .codex/config.toml)。在 IDE 扩展中,可从齿轮菜单选择 MCP settings > Open config.toml

在配置文件中,使用一个 [mcp_servers.] 表来配置每个 MCP 服务器。

STDIO 服务器

  • command(必填):启动服务器的命令。
  • args(可选):传递给服务器的参数。
  • env(可选):为服务器设置的环境变量。
  • env_vars(可选):允许并转发的环境变量。
  • cwd(可选):启动服务器时使用的工作目录。
  • experimental_environment(可选):设置为 remote 时,会在可用的情况下通过远程执行器环境启动 stdio 服务器。

env_vars 可以包含普通变量名,或带有来源的对象:

env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }]

字符串条目和 source = "local" 会从 Codex 的本地环境中读取。 source = "remote" 会从远程执行器环境中读取,并且需要 远程 MCP stdio。

可流式传输的 HTTP 服务器

  • url(必填):服务器地址。
  • bearer_token_env_var(可选):Bearer token 所在的环境变量名,会在 Authorization 中发送。
  • http_headers(可选):从 header 名到静态值的映射。
  • env_http_headers(可选):从 header 名到环境变量名的映射(值从环境中获取)。

其他配置选项

  • startup_timeout_sec(可选):服务器启动超时时间(秒)。默认值:10
  • tool_timeout_sec(可选):服务器运行工具的超时时间(秒)。默认值:60
  • enabled(可选):设置为 false 可在不删除服务器的情况下禁用它。
  • required(可选):设置为 true 时,如果此已启用服务器无法初始化,启动将失败。
  • enabled_tools(可选):工具允许列表。
  • disabled_tools(可选):工具拒绝列表(在 enabled_tools 之后应用)。
  • default_tools_approval_mode(可选):此服务器工具的默认审批行为。支持的值有 autopromptapprove
  • tools..approval_mode(可选):按工具覆盖审批行为。

如果你的 OAuth 提供方要求固定的回调端口,请在 config.toml 中设置顶层的 mcp_oauth_callback_port。如果未设置,Codex 会绑定到一个临时端口。

如果你的 MCP OAuth 流程必须使用特定的回调 URL(例如远程 Devbox 入口 URL 或自定义回调路径),请设置 mcp_oauth_callback_url。Codex 会将此值用作 OAuth 的 redirect_uri,同时仍使用 mcp_oauth_callback_port 作为回调监听端口。本地回调 URL(例如 localhost)会绑定到本地接口;非本地回调 URL 会绑定到 0.0.0.0,以便回调可以到达主机。

如果 MCP 服务器声明了 scopes_supported,Codex 在 OAuth 登录期间会优先使用这些 由服务器声明的作用域。否则,Codex 会回退到 config.toml 中配置的作用域。

config.toml 示例

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
env_vars = ["LOCAL_TOKEN"]

[mcp_servers.context7.env]
MY_ENV_VAR = "MY_ENV_VALUE"
# 可选的 MCP OAuth 回调覆盖项(由 `codex mcp login` 使用)
mcp_oauth_callback_port = 5555
mcp_oauth_callback_url = "https://devbox.example.internal/callback"
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
http_headers = { "X-Figma-Region" = "us-east-1" }
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"] # 在 enabled_tools 之后应用
default_tools_approval_mode = "prompt"
startup_timeout_sec = 20
tool_timeout_sec = 45
enabled = true

[mcp_servers.chrome_devtools.tools.open]
approval_mode = "approve"

插件提供的 MCP 服务器

已安装的插件可以在其插件清单中捆绑 MCP 服务器。这些 服务器从插件中启动,因此用户配置不会设置它们的 传输命令。用户配置仍然可以在 plugins..mcp_servers. 下控制开关状态和工具策略。

[plugins."sample@test".mcp_servers.sample]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["read", "search"]

[plugins."sample@test".mcp_servers.sample.tools.search]
approval_mode = "approve"

有用的 MCP 服务器示例

MCP 服务器列表仍在不断增长。以下是一些常见示例:

  • OpenAI Docs MCP:搜索和阅读 OpenAI 开发者文档。
  • Context7:连接到最新的开发者文档。
  • Figma LocalRemote:访问你的 Figma 设计。
  • Playwright:使用 Playwright 控制和检查浏览器。
  • Chrome Developer Tools:控制和检查 Chrome。
  • Sentry:访问 Sentry 日志。
  • GitHub:管理 git 不支持的 GitHub 功能(例如 pull request 和 issue)。