模型上下文協議(MCP)
讓 Codex 存取第三方工具和上下文
Model Context Protocol(MCP)把模型連線到工具和上下文。你可以用它讓 ChatGPT 或 Codex 存取第三方文件,也可以讓它們與瀏覽器、Figma 等開發工具互動。
ChatGPT Web 可以使用 plugins 提供的遠端 MCP 工具。本機 Codex 客戶端還可以直接連線 MCP server,並共享設定。
ChatGPT 桌面應用、Codex CLI 和 IDE 擴充套件均支援 MCP server,併為同一臺 Codex 主機共享 MCP 設定。
下面列出的 server 功能適用於設定在 Codex 主機上的 MCP server。託管 plugin 工具可能支援不同能力。
支援的 MCP 能力
- STDIO server:以本機程序執行,由命令啟動。
- 環境變數
- Streamable HTTP server:通過地址存取。
- Bearer token 認證
- OAuth 認證
- 可信第一方 server 的 ChatGPT 會話認證
- Server instructions:Codex 會讀取 MCP server 初始化時返回的
instructions欄位,並將其與 server 工具一起作為 server 級指導。
如果你為 Codex 建置或維護 MCP server,請使用 instructions 描述適用於整個 server 的跨工具工作流程、約束和速率限制。前 512 個字元應能獨立表達最重要的指導,以便 Codex 決定如何使用該 server 時直接獲得關鍵資訊。
將 Codex 連線到 MCP server
Codex 會把 MCP 設定與其他設定一起儲存在 config.toml 中。預設檔案是 ~/.codex/config.toml;在可信專案中,也可以通過 .codex/config.toml 把 MCP server 限定到專案範圍。
ChatGPT 桌面應用、Codex CLI 和 IDE 擴充套件共享該設定。完成設定後,可以在這些客戶端之間切換,無需重新設定。
在 ChatGPT 桌面應用中設定
- 開啟 Settings(設定),選擇 MCP servers。
- 選擇 Add server。
- 輸入名稱,選擇 STDIO 或 Streamable HTTP,再填寫 server 的命令或 URL。
- 儲存 server,然後選擇 Restart。
Server 列表會顯示哪些 server 已啟用,哪些需要 OAuth。OAuth server 需要登入時,選擇 Authenticate。在 composer(輸入框)中輸入 /mcp 可以檢視已連線的 server。
使用 config.toml 設定
需要更細粒度的控制時,編輯 ~/.codex/config.toml 或專案級 .codex/config.toml。每個 MCP 選項都可以在設定參考中搜索。
在設定檔中,使用 [mcp_servers.<server-name>] 表設定每個 MCP server。
STDIO server
command(必填):啟動 server 的命令。args(可選):傳給 server 的參數。env(可選):為 server 設定的環境變數。env_vars(可選):允許並轉發的環境變數。cwd(可選):啟動 server 時使用的工作目錄。experimental_environment(可選):設為remote後,在可用時通過遠端執行器環境啟動 STDIO server。
env_vars 可以包含普通變數名,也可以包含帶來源的物件:
env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }]字串條目和 source = "local" 從 Codex 本機環境讀取;source = "remote" 從遠端執行器環境讀取,並要求支援 remote MCP STDIO。
Streamable HTTP server
url(必填):server 地址。auth(可選):在已設定的 bearer token 和 authorization headers 之後嘗試的認證方式。使用oauth(預設)讀取已儲存的 MCP OAuth 憑據;使用chatgpt可讓可信的第一方 ChatGPTorigin使用當前 ChatGPT 會話,並把已儲存 OAuth 作為回退。bearer_token_env_var(可選):用於讀取 bearer token 並放入Authorization的環境變數名。http_headers(可選):靜態 header 名和值的對映。env_http_headers(可選):header 名與環境變數名的對映,值從環境讀取。
如果沒有可用憑據來源,Codex 仍可以嘗試在無認證狀態下連線。請單獨執行 codex mcp login <server-name> 來啟動 MCP OAuth 登入。
其他設定項
startup_timeout_sec(可選):server 啟動超時,單位為秒,預設10。tool_timeout_sec(可選):server 執行工具的超時,單位為秒,預設60。enabled(可選):設為false可以停用 server 而不刪除設定。required(可選):設為true後,如果已啟用 server 無法初始化,Codex 啟動也會失敗。enabled_tools(可選):工具允許列表。disabled_tools(可選):工具拒絕列表,在enabled_tools之後應用。default_tools_approval_mode(可選):此 server 工具的預設審批行為。支援auto、prompt、writes和approve。writes會對未標記為只讀的工具請求審批。tools.<tool>.approval_mode(可選):按工具覆蓋審批行為。
如果 OAuth 提供商要求固定 callback 埠,請在 config.toml 頂層設定 mcp_oauth_callback_port;未設定時,Codex 會繫結臨時埠。
如果 MCP OAuth 流程必須使用特定 callback URL,例如遠端 Devbox ingress URL 或自定義 callback 路徑,請設定 mcp_oauth_callback_url。Codex 會把它作為基礎 callback URL,再附加 server 專屬 callback ID,生成登入時使用的 OAuth redirect_uri。向 OAuth 提供商註冊時,應使用包含附加 callback ID、已設定路徑、查詢參數和埠的完整 redirect_uri,而不是沒有後綴的基礎 host 或路徑。本機 callback URL(例如 localhost)繫結本機介面;非本機 URL 繫結 0.0.0.0,使 callback 能到達主機。
如果 MCP server 聲明瞭 scopes_supported,Codex 會在 OAuth 登入時優先使用 server 宣告的 scopes;否則回退到 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 server
已安裝 plugin 可以在 plugin manifest 中打包 MCP server。這類 server 由 plugin 啟動,因此使用者設定不需要設定 transport 命令;使用者仍可通過 plugins.<plugin>.mcp_servers.<server> 控制啟用狀態和工具策略。
[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 server 範例
MCP server 列表仍在持續增長,常見選項包括:
- OpenAI Docs MCP:搜尋和讀取 OpenAI 開發者文件。
- Context7:連線最新開發者文件。
- Figma Local 和 Remote:存取 Figma 設計。
- Playwright:通過 Playwright 控制和檢查瀏覽器。
- Chrome Developer Tools:控制和檢查 Chrome。
- Sentry:存取 Sentry 日誌。
- GitHub:管理
git之外的 GitHub 功能,例如 pull request 和 issue。