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 示例
MCP servers 列表仍在增长。下面是一些常见选择: