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
codex mcp add <server-name> --env VAR1=VALUE1 -- <stdio 启动命令>比如加 Context7:
codex mcp add context7 -- npx -y @upstash/context7-mcp其他常用指令:
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 可以是普通變數名,也可以指定來源:
env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }]字串條目和 source = "local" 從 Codex 本地環境取值; source = "remote" 從遠端執行器環境取值,需要遠端 MCP stdio。
Streamable HTTP 的選項:
| 選項 | 說明 |
|---|---|
url | 必需,伺服器地址 |
auth | oauth(預設,用已存的 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 每次現取就行。
幾個現成的伺服器
- OpenAI 文件 MCP:搜尋和閱讀 OpenAI 開發者文件
- Context7:連到各種庫的最新文件
- Playwright:控制和檢查瀏覽器
- Chrome 開發者工具
- Sentry:存取線上日誌
- GitHub:管 PR 和議題這些
git管不到的東西 - Figma:本地 / 遠端
安全上要想清楚的三件事
一、STDIO 伺服器是在你機器上跑的程序。 codex mcp add x -- npx -y some-package 等於同意在本地跑一個第三方包。裝之前看一眼這個包是誰維護的。
二、專案級配置只在受信任的專案里加載。 這個限制是有道理的: .codex/config.toml 是跟著倉庫來的,一個你 clone 下來的陌生倉庫不該有權在你機器上啟動程序。 別為了圖方便隨手把專案標成受信任。
三、MCP 工具返回的內容是資料,不是指令。 工單標題、日誌內容、 網頁正文都可能帶著「忽略之前的指令」這類東西。 Codex 的核准機制在這裡就是最後一道閘:如果一個動作會產生副作用, 它應該停下來問你——04 篇裡 approval_policy 的 mcp_elicitations 那一檔管的就是這個。
順帶一提,聲明瞭破壞性標註的應用/MCP 工具呼叫始終需要核准; 但如果該工具同時聲明瞭讀取標註,則以讀取標註為準。