Configuration

MCP

MCP 让 Codex 按授权连接外部系统和私有知识,而不是依赖复制粘贴上下文。

Model Context Protocol (MCP) 将模型连接到 tools 和 context。可以用它让 Codex 访问 third-party documentation,或让 Codex 与你的 browser、Figma 等 developer tools 交互。

Codex 在 CLI 和 IDE extension 中都支持 MCP servers。

支持的 MCP 功能

STDIO servers:以 local process 形式运行的 servers(由 command 启动)。支持 environment variables。

Streamable HTTP servers:通过地址访问的 servers。支持 bearer token authentication,也支持 OAuth authentication(对支持 OAuth 的 servers,运行 codex mcp login <server-name>)。

Server instructions:Codex 会读取初始化期间返回的 MCP instructions field,并把它作为 server-wide guidance,与该 server 的 tools 一起使用。

如果你为 Codex 构建或维护 MCP server,请用 instructions 描述跨工具 workflows、constraints,以及适用于整个 server 的 rate limits。前 512 个字符应自包含,确保 Codex 判断如何使用该 server 时能拿到最重要的 guidance。

将 Codex 连接到 MCP server

Codex 会把 MCP configuration 与其他 Codex configuration settings 一起存储在 config.toml 中。默认位置是 ~/.codex/config.toml;你也可以用 .codex/config.toml 将 MCP servers 限定到某个项目(仅 trusted projects)。

CLI 和 IDE extension 共享这份 configuration。配置 MCP servers 后,可以在两个 Codex clients 之间切换,无需重新 setup。

要配置 MCP servers,请选择一种方式:

使用 CLI:运行 codex mcp 来添加和管理 servers。

编辑 config.toml:直接更新 ~/.codex/config.toml,或在 trusted projects 中更新项目级 .codex/config.toml。

使用 CLI 配置

添加 MCP server

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

例如,要添加 Context7(一个面向 developer documentation 的免费 MCP server),可以运行以下 command:

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

其他 CLI commands

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

Terminal UI (TUI)

在 codex TUI 中,使用 /mcp 查看 active MCP servers。

使用 config.toml 配置

如果需要更细粒度地控制 MCP server options,请编辑 ~/.codex/config.toml(或项目级 .codex/config.toml)。在 IDE extension 中,可以从 gear menu 选择 MCP settings > Open config.toml。

在 configuration file 中,用 [mcp_servers.<server-name>] table 配置每个 MCP server。

STDIO servers

command(必填):启动 server 的 command。

args(可选):传递给 server 的 arguments。

env(可选):为 server 设置的 environment variables。

env_vars(可选):允许并转发的 environment variables。

cwd(可选):启动 server 时使用的 working directory。

experimental_environment(可选):设为 remote 时,在可用的情况下通过 remote executor environment 启动 stdio server。

env_vars 可以包含普通 variable names,也可以包含带 source 的 objects:

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

String entries 和 source = "local" 会从 Codex 的 local environment 读取。source = "remote" 会从 remote executor environment 读取,并且需要 remote MCP stdio。

Streamable HTTP servers

url(必填):server address。

bearer_token_env_var(可选):用于发送 Authorization bearer token 的 environment variable name。

http_headers(可选):header names 到 static values 的 map。

env_http_headers(可选):header names 到 environment variable names 的 map(values 从 environment 中读取)。

其他 configuration options

startup_timeout_sec(可选):server 启动的 timeout(秒)。默认值:10。

tool_timeout_sec(可选):server 运行 tool 的 timeout(秒)。默认值:60。

enabled(可选):设为 false 可禁用 server,而不删除它。

required(可选):设为 true 时,如果这个已启用 server 无法初始化,则 startup 失败。

enabled_tools(可选):tool allow list。

disabled_tools(可选):tool deny list(在 enabled_tools 之后应用)。

default_tools_approval_mode(可选):来自这个 server 的 tools 的默认 approval behavior。支持的值为 auto、prompt 和 approve。

tools.<tool>.approval_mode(可选):per-tool approval behavior override。

如果你的 OAuth provider 要求固定 callback port,请在 config.toml 中设置 top-level mcp_oauth_callback_port。如果未设置,Codex 会绑定到 ephemeral port。

如果你的 MCP OAuth flow 必须使用特定 callback URL(例如 remote Devbox ingress URL 或 custom callback path),请设置 mcp_oauth_callback_url。Codex 会把这个值作为 base callback URL,然后追加 server-specific callback ID,生成登录期间发送的 OAuth redirect_uri。请向 OAuth provider 注册完整派生出的 redirect_uri,包括追加的 callback ID,以及任何已配置的 path、query 或 port,而不是只注册 base host 或不带 suffix 的 path。Local callback URLs(例如 localhost)会绑定到 local interface;non-local callback URLs 会绑定到 0.0.0.0,以便 callback 能到达 host。

如果 MCP server advertises scopes_supported,Codex 在 OAuth login 期间会优先使用这些 server-advertised scopes。否则,Codex 会 fallback 到 config.toml 中配置的 scopes。

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"
# Optional MCP OAuth callback overrides (used by `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"] # applied after 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"

Plugin 提供的 MCP servers

已安装 plugins 可以在 plugin manifest 中打包 MCP servers。这些 servers 从 plugin 启动,因此 user config 不会设置它们的 transport command。User config 仍然可以在 plugins.<plugin>.mcp_servers.<server> 下控制开关状态和 tool policy。

[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 servers 示例

站内延伸阅读