Skip to content

02 · 用 MCP 接上你的工具 ​

它解決的問題 ​

Codex 能看到你的倉庫,但看不到你的 Jira、你的 Sentry、你的 Figma、你公司那套內部服務。 每次都靠你複製貼上,等於讓它隔著一層玻璃幹活。

MCP(模型上下文協議)就是把這層玻璃開啟——給它一組能調的工具, 讓它自己去查工單、翻日誌、讀設計稿。

兩種伺服器形態 ​

STDIO 伺服器:作為本地程序跑(用一條指令啟動)。支援環境變數。 大部分開源 MCP 伺服器是這種。

Streamable HTTP 伺服器:通過地址存取。支援:

  • Bearer Token 身份驗證
  • OAuth 身份驗證,包括客戶端 ID 後設資料文件(CIMD)和動態客戶端註冊(DCR)
  • 對受信任的第一方伺服器,可以用當前 ChatGPT 工作階段做身份驗證

另外 Codex 會讀取伺服器初始化時返回的 instructions 欄位, 當成適用於整個伺服器的指引。如果你自己維護 MCP 伺服器, 前 512 個字元要能獨立看懂——那是 Codex 決定怎麼用這個伺服器時最先看到的東西。

三種配置方式 ​

配置都存在 config.toml 裡,預設 ~/.codex/config.toml; 也可以放專案級的 .codex/config.toml(僅限受信任的專案)。 桌面應用、CLI 和 IDE 擴充功能共享這份配置,配一次三邊都能用。

CLI ​

bash
codex mcp add <server-name> --env VAR1=VALUE1 -- <stdio 启动命令>

比如加 Context7:

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

其他常用指令:

bash
codex mcp list                    # 看已配置的服务器
codex mcp login <server-name>     # OAuth 服务器登录
codex mcp --help                  # 全部命令

在 TUI 裡輸入 /mcp 看當前活動的伺服器。

桌面應用 / IDE 擴充功能 ​

桌面應用:設定 → MCP 伺服器 → 新增伺服器,填名字、選 STDIO 或 Streamable HTTP、 給指令或 URL,儲存後重新啟動。 IDE 擴充功能:齒輪圖示選單 → MCP 伺服器,流程一樣,最後重新啟動擴充功能。

列表裡會標出哪些已啟用、哪些需要 OAuth。需要登入時點身份驗證。

直接寫 config.toml ​

要更細的控制就自己寫。每個伺服器一個 [mcp_servers.<name>] 表。

STDIO 的選項:

選項說明
command必需,啟動伺服器的指令
args傳給伺服器的參數
env給伺服器設的環境變數
env_vars允許轉發的環境變數
cwd啟動時的工作目錄
experimental_environment設為 remote 時,若有遠端執行器環境就通過它啟動

env_vars 可以是普通變數名,也可以指定來源:

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

字串條目和 source = "local" 從 Codex 本地環境取值; source = "remote" 從遠端執行器環境取值,需要遠端 MCP stdio。

Streamable HTTP 的選項:

選項說明
url必需,伺服器地址
authoauth(預設,用已存的 MCP OAuth 憑據)或 chatgpt(對受信任的第一方源用當前 ChatGPT 工作階段,失敗回退到 OAuth)
bearer_token_env_var存 Bearer Token 的環境變數名,會放進 Authorization
http_headers標頭名 → 靜態值
env_http_headers標頭名 → 環境變數名(值從環境取)
http_headers_helper本地指令,輸出 {"X-Auth": "..."} 這樣的 JSON

http_headers_helper 是接內部系統時最有用的一個: 公司的令牌通常有有效期,靜態標頭寫死了會過期,讓 helper 每次現取就行。

幾個現成的伺服器 ​

安全上要想清楚的三件事 ​

一、STDIO 伺服器是在你機器上跑的程序。 codex mcp add x -- npx -y some-package 等於同意在本地跑一個第三方包。裝之前看一眼這個包是誰維護的。

二、專案級配置只在受信任的專案里加載。 這個限制是有道理的: .codex/config.toml 是跟著倉庫來的,一個你 clone 下來的陌生倉庫不該有權在你機器上啟動程序。 別為了圖方便隨手把專案標成受信任。

三、MCP 工具返回的內容是資料,不是指令。 工單標題、日誌內容、 網頁正文都可能帶著「忽略之前的指令」這類東西。 Codex 的核准機制在這裡就是最後一道閘:如果一個動作會產生副作用, 它應該停下來問你——04 篇裡 approval_policy 的 mcp_elicitations 那一檔管的就是這個。

順帶一提,聲明瞭破壞性標註的應用/MCP 工具呼叫始終需要核准; 但如果該工具同時聲明瞭讀取標註,則以讀取標註為準。

相關官方文件 ​

非官方社群教程 · 「官方文件」區為 learn.chatgpt.com 中文原文映象 · 以官方頁面為準