繁體中文

模型上下文協議(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 桌面應用中設定

  1. 開啟 Settings(設定),選擇 MCP servers
  2. 選擇 Add server
  3. 輸入名稱,選擇 STDIOStreamable HTTP,再填寫 server 的命令或 URL。
  4. 儲存 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 可讓可信的第一方 ChatGPT origin 使用當前 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 工具的預設審批行為。支援 autopromptwritesapprovewrites 會對未標記為只讀的工具請求審批。
  • 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 列表仍在持續增長,常見選項包括: