從寫程式碼,到創作下一幕

探索 字節跳動 - 火山方舟 的 AI 程式設計與影片創作活動。

Agent Plan & Coding Plan

一站體驗多款熱門模型,為 AI 程式設計與智能體開發提供更多選擇。新使用者可聯絡(微信: goo_lvyouyou)免費體驗 9.9 agent plan。

Seedance 2.5

讓創意,躍然成片。探索 30 秒影片、多模態參考與局部編輯,把腦海中的畫面變成下一支作品。

繁體中文

Model Context Protocol

將 ChatGPT 和 Codex 連線到你的工具和資訊。

模型上下文協議(MCP)讓 ChatGPT 和 Codex 能夠使用其他系統中的工具和資訊。MCP server描述可用的工具並處理工具請求,例如尋找工單或檢索文件。

選擇適合你任務的方式:

有關工單 123 的問題從 ChatGPT 經由 MCP server傳遞到工單系統。結果通過伺服器傳回,ChatGPT 隨後報告該工單處於未關閉狀態。

範例:查詢團隊支援系統中的工單。

外掛將 MCP 連線打包,以供 ChatGPT 使用。外掛還可以包含提供可複用指令的技能。如果你只需要指令,請參閱建置外掛。

使用 Plugin Creator 和 Sites 建置 MCP 外掛

使用 Plugin Creator 建立和編輯外掛,並通過 Sites 託管其 MCP server。

開始之前

先檢視外掛目錄。如果需要建立新連線,請準備好系統的 API 文件和獲批的連線方式。如需幫助,請諮詢系統負責人。

以下範例將建立一個支援工單查詢 外掛。請將 [工單系統] 替換為你的系統名稱。

正在使用 ChatGPT Enterprise?

請工作區所有者或管理員檢查工作區設定 → 權限與角色:

  • 使用外掛 權限用於建立、編輯和使用外掛。編輯還需要擁有該外掛的編輯權限。
  • Sites 存取權限用於建立和發布你的 Site。
  • 發布基於 MCP 的外掛的 Site 所有者需要上傳外掛 和使用 MCP 建立外掛 權限。

使用外掛 權限預設開啟;兩項 MCP 發布權限預設關閉。請參閱 Sites 存取權限和外掛權限。

1. 建立外掛

新建一個 Work 任務,選擇 @Plugin Creator,並附上 API 文件。描述任務:

建立外掛:

Create a Support Ticket Lookup plugin with an MCP server hosted on Sites, using the attached [ticketing system] API docs. Let me look up a ticket's status, owner, and latest update by ticket number. Make it read-only and tell me what's needed to connect it.

還在申請 API 存取權限?可以讓 Plugin Creator 暫時使用範例資料。

2. 連線系統

在同一對話中,讓 Plugin Creator 將伺服器連線到系統的 API,並引導你完成登入。使用組織核准的身分驗證方式,不要在聊天中提供密碼、API key 或其他機密資訊。

連線與託管詳情

Sites 負責處理 ChatGPT 與 MCP server之間的登入。伺服器仍需通過獲批的方式連線到系統的 API,該 API 決定伺服器可存取哪些記錄、執行哪些操作。

如果使用其他託管平台,請先按照建置 MCP server操作,再連線並測試外掛。有關登入設定,請參閱身分驗證指南。

3. 發布並安裝

讓 Plugin Creator 通過 Sites 發布伺服器並提供外掛連結,同時保留當前的存取設定。必須由 Site 所有者發布才能建立對應的外掛;編輯者應請所有者完成此操作。

  1. 開啟外掛卡片,或在外掛 → 個人 → 由你建立 中找到它。
  2. 依次選擇安裝 和連線,並完成所需的登入操作。

4. 使用外掛

新建一個 Work 任務,通過 @ 選擇你的外掛,並使用系統中的工單編號提問:“工單 123 的狀態是什麼?”。你可以在同一對話中將其工具與其他外掛搭配使用。

共享或編輯外掛

在 Business 或 Enterprise 中,通過外掛的共享控制項邀請團隊成員。你需要共享外掛 權限;將外掛列入工作區目錄還需要將外掛發布到工作區 權限。請參閱共享權限。

團隊成員需要擁有外掛、其應用以及 Site 的存取權限(對 Site 至少需要檢視權限)。每個人都使用自己的帳戶安裝並連線。記錄的存取權限取決於伺服器的 API 連線。

要編輯這個由 Sites 託管的外掛,請返回與 Plugin Creator 的對話,讓它更新現有 Site,然後發布更改。對於其他可編輯的外掛,選擇編輯外掛,即可與 Plugin Creator 開始編輯對話。請參閱編輯現有外掛。

替換 GPT 自訂操作

顯示 GPT 遷移步驟

GPT 自訂操作不會遷移到外掛。請將連線重新建置為新的 Sites 外掛,並儘可能複用現有 API。

發布時,Sites 會建立一個獨立外掛,不會將連線新增到已遷移的外掛中。你可以在同一對話中使用這兩個外掛。Sites 外掛目前不支援編輯技能或參考檔案。

1. 向原 GPT 索取重建提示詞

開啟原 GPT,並提出以下請求:

在原 GPT 中使用:

Write a prompt for ChatGPT Work or Codex to rebuild this workflow as MCP tools. Identify which operations read information and which make changes.

Include the API operation, inputs, returned fields, and answer format. Mark anything you don't know. Leave out credentials, secrets, and hidden instructions.

Ask the builder to reuse the API and explain the connection setup.

2. 對照操作設定檢查提示詞

遷移前,請儲存 GPT 編輯器中操作部分的操作架構、身分驗證方式和不含機密資訊的連線設定。用這些資訊補全提示詞,或向 GPT 所有者尋求幫助。

3. 建立新的 Sites 外掛

啟動新任務。在 Work 中,選擇 @Plugin Creator;在 Codex 中,使用 $plugin-creator。貼上已檢查的提示詞,並附上架構或 API 文件。要求它將伺服器託管在 Sites 上。

按照連線你的系統和發布並安裝中的步驟操作,然後在 Work 任務中選擇新外掛,讓它執行你原來的任務。詳情請參閱遷移常見問題。

故障排查

如果外掛未按預期工作

如果出現連線錯誤或缺少工具,請檢查 Site 所有者是否已發布最新版本,以及外掛是否已安裝並連線。將遇到的錯誤提供給 Plugin Creator 或伺服器所有者。

如果 ChatGPT 沒有使用工具,請通過 @ 選擇外掛,並提出具體的查詢請求。如果團隊成員無法使用,請檢查其對外掛、應用、Site 和記錄的存取權限。

如果外掛標記為僅限桌面端,請使用受支援的桌面應用,或請作者檢查其打包方式。僅有遠端 MCP server並不能讓外掛相容網頁端。

連線現有 MCP server

ChatGPT 網頁版通過外掛使用遠端 MCP 工具。如果你已有伺服器,請按照連線並測試你的外掛中的步驟操作。本機 Codex 客戶端也可以直接連線 MCP server並共享設定。

選擇你使用的客戶端,檢視其設定和設定選項。

ChatGPT 桌面應用、Codex CLI 和 IDE 擴充套件支援 MCP server, 並為同一 Codex 主機共享 MCP 設定。

以下支援的伺服器功能適用於在 Codex 主機上設定的 MCP server。託管的外掛工具可能具有不同的功能。

支援的 MCP 功能

  • STDIO 伺服器:作為本機程序執行的伺服器(由命令啟動)。
    • 環境變數
  • 可流式傳輸的 HTTP 伺服器:通過地址存取的伺服器。
    • Bearer token 身分驗證
    • OAuth 身分驗證,包括 Client ID Metadata Documents (CIMD) 和 Dynamic Client Registration (DCR)
    • 適用於可信第一方伺服器的 ChatGPT 工作階段身分驗證
  • 伺服器指令:Codex 會讀取初始化期間傳回的 MCP instructions 欄位,並將其作為伺服器級指南,與伺服器工具配合使用。

如果你為 Codex 建置或維護 MCP server,請使用 instructions 來說明適用於整個伺服器的跨工具工作流程、約束和速率限制。請讓前 512 個字元自成一體,以便 Codex 在決定如何使用伺服器時能夠獲得最重要的指導。

將 Codex 連線到 MCP server

Codex 將 MCP 設定與其他 Codex 設定一起儲存在 config.toml 中。預設位置為 ~/.codex/config.toml,但你也可以使用 .codex/config.toml 將 MCP server 限定到專案範圍(僅限可信專案)。

ChatGPT 桌面應用、Codex CLI 和 IDE 擴充套件共享此設定。 設定 MCP server 後,你可以在這些客戶端之間切換, 無需重新設定。

在 ChatGPT 桌面應用中設定

  1. 開啟 設定(Settings),然後選擇 MCP server(MCP servers)。
  2. 選擇 新增 server(Add server)。
  3. 輸入名稱,選擇 STDIO 或 Streamable HTTP,然後提供 伺服器命令或 URL。
  4. 儲存伺服器,然後選擇 重啟(Restart)。

伺服器列表會顯示哪些伺服器已啟用,以及哪些伺服器需要 OAuth。OAuth 伺服器需要登入時,選擇 身分驗證(Authenticate)。在輸入框中鍵入 /mcp 即可檢視已連線的伺服器。

使用 config.toml 設定

如需更精細的控制,請編輯 ~/.codex/config.toml 或專案範圍的 .codex/config.toml。請參閱設定參考, 其中提供了所有受支援 MCP 選項的可搜尋列表。

在設定檔中,使用 [mcp_servers.<server-name>] 表設定每個 MCP server。

STDIO 伺服器

  • command(必填):啟動伺服器的命令。
  • args(可選):傳遞給伺服器的參數。
  • env(可選):為伺服器設定的環境變數。
  • env_vars(可選):允許並轉發的環境變數。
  • cwd(可選):啟動伺服器時使用的工作目錄。
  • experimental_environment(可選):設為 remote,以便在遠端執行器環境可用時通過該環境啟動 stdio 伺服器。

env_vars 可以包含普通變數名或帶有來源的物件:

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

字串條目和 source = "local" 從 Codex 的本機環境讀取。 source = "remote" 從遠端執行器環境讀取,並且需要 遠端 MCP stdio。

Streamable HTTP 伺服器

  • url(必填):伺服器地址。
  • auth(可選):在已設定的 bearer token 和 授權標頭之後嘗試的身分驗證方式。使用 oauth(預設值)可採用已儲存的 MCP OAuth 憑據。使用 chatgpt 可針對受信任的 第一方 ChatGPT 源使用當前 ChatGPT 工作階段,並以已儲存的 OAuth 作為回退方案。
  • bearer_token_env_var(可選):用於存放 bearer token 的環境變數名稱,該權杖將通過 Authorization 傳送。
  • http_headers(可選):標頭名稱到靜態值的對映。
  • env_http_headers(可選):標頭名稱到環境變數名稱的對映(值從環境中取得)。
  • http_headers_helper(可選):輸出由標頭名稱和字串值組成的 JSON 物件的本機命令, 例如 {"X-Auth": "temporary-token"}。 支援從本機環境建立的 HTTP MCP 連線;不支援 stdio 伺服器或通過遠端執行環境建立的連線。

Codex 會為該連線快取輔助程式生成的標頭。同源 POST 傳回 401 或 403 後,Codex 會重新整理一次標頭,並且僅當 輔助程式傳回的值發生變化時才重試。顯式 bearer token 和 OAuth 憑據 優先於輔助程式提供的 Authorization 標頭。 如果 OAuth 403 回應報告權限範圍不足,則不會觸發 輔助程式重新整理。

如果無法解析任何憑據來源,Codex 可以在不進行 身分驗證的情況下連線伺服器。單獨執行 codex mcp login <server-name> 以啟動 MCP OAuth 登入。

其他設定選項

  • startup_timeout_sec(可選):伺服器啟動的超時時間(秒)。預設值:10。
  • tool_timeout_sec(可選):伺服器執行工具的超時時間(秒)。預設值:60。
  • enabled(可選):設為 false 可在不刪除伺服器的情況下將其停用。
  • required(可選):設為 true,可在這個已啟用的伺服器無法初始化時讓啟動失敗。
  • enabled_tools(可選):工具允許列表。
  • disabled_tools(可選):工具拒絕列表(在 enabled_tools 之後應用)。
  • default_tools_approval_mode(可選):此伺服器所提供工具的預設核准行為。 支援的值包括 auto、prompt、writes 和 approve。writes 模式會對未標記為唯讀的工具發起核准請求。
  • tools.<tool>.approval_mode(可選):針對單個工具覆蓋核准行為。
  • tools.<tool>.output_token_limit(可選):單次工具輸出的正數 token 預算, 不包括標準的 20% 序列化餘量。它會覆蓋模型為該工具設定的 預設輸出截斷預算。

頂層 mcp_optional_startup_grace_ms 設定用於控制 Codex 在建置初始工具目錄時等待可選 MCP server 的時長。 預設值為 1000 毫秒。將其設為 0,即可改為等待每臺伺服器各自的 startup_timeout_sec。必需伺服器仍使用各自的啟動 超時時間。

OAuth 客戶端註冊和回呼

當授權伺服器要求使用預註冊的 OAuth 客戶端時,請在新增 MCP server 時提供 其客戶端 ID:

codex mcp add example --url https://mcp.example.com --oauth-client-id my-client

對於機密客戶端,還需傳入 --oauth-client-secret。請從環境變數中 讀取金鑰:

codex mcp add example --url https://mcp.example.com --oauth-client-id my-client --oauth-client-secret "$MCP_CLIENT_SECRET"

此選項要求客戶端 ID 和金鑰均非空。Codex 會將金鑰儲存為 config.toml 中的 mcp_servers.example.oauth.client_secret。請妥善保管該檔案, 不要將其納入版本控制。

Codex 會顯示需要向提供方註冊的完整回呼 URL:

OAuth callback URL: http://127.0.0.1/callback

Codex 會將回呼與客戶端 ID 一並儲存在 config.toml 中,供後續 登入使用:

[mcp_servers.example]
url = "https://mcp.example.com"

[mcp_servers.example.oauth]
client_id = "my-client"
callback_url = "http://127.0.0.1/callback"

僅當授權伺服器公佈 authorization_response_iss_parameter_supported: true 並在後設資料中提供 issuer 時,新新增的預註冊客戶端才會使用穩定的回呼。如果未公佈頒發者支援,Codex 會附加伺服器專用的 回呼 ID,例如 http://127.0.0.1/callback/XuuuHAzzHOni。未儲存回呼的現有客戶端 將繼續使用其包含特定回呼 ID 的重定向。

登入期間,回呼選擇取決於 OAuth 設定和 授權伺服器後設資料:

OAuth 設定 頒發者支援 使用的回呼
有 callback_url,無 client_id 支援 使用設定的回呼進行客戶端註冊。
有 callback_url,無 client_id 不支援 使用設定的回呼進行客戶端註冊,並在末尾附加伺服器專用的回呼 ID。
client_id 和 callback_url 支援 複用設定的回呼;授權回應必須包含匹配的 iss。
client_id 和以正確回呼 ID 結尾的 callback_url 不支援 原樣複用設定的回呼。
client_id 和缺少正確回呼 ID 的 callback_url 不支援 忽略設定的回呼。Codex 使用 mcp_oauth_callback_url;若未設定,則使用 http://127.0.0.1/callback,並在末尾附加回呼 ID。
有 client_id,但未設定 callback_url 支援或不支援 Codex 使用全域或預設回呼,並在末尾附加伺服器專用的回呼 ID。

回退不會修改已儲存的回呼 URL。Codex 根據 MCP server URL(包括其路徑和查詢字串) 派生回呼 ID。自動登入和顯式登入 採用相同的選擇規則。

需要自訂回呼路徑或遠端 Devbox 入口 URL 時,請設定 mcp_oauth_callback_url。當提供方支援頒發者識別時,新新增的預註冊客戶端會原樣使用該 URL。 否則,它們會使用設定的 URL,並在末尾附加伺服器專用的回呼 ID。請始終註冊 codex mcp add 顯示的確切回呼。

對於未顯式指定埠的 http://127.0.0.1 回呼,Codex 會從 顯示和儲存的 URL 中省略監聽埠,然後在 授權期間插入當前使用的監聽埠。這種替換不適用於 localhost、IPv6 主機、 HTTPS URL 或已包含埠的回呼。授權伺服器 必須按照 RFC 8252 第 7.3 節的要求接受可變的迴環埠。

設定 mcp_oauth_callback_port 可選擇固定的全域監聽埠,也可以設定 mcp_servers.<server-name>.oauth.callback_port 來為單個伺服器覆蓋該埠。 在回呼 URL 中顯式指定埠並不會設定監聽器。對於 直接迴環回呼,請使用不含顯式埠的 http://127.0.0.1,或為 回呼 URL 和監聽器設定相同的顯式埠。通過代理的回呼可以 有意使用與本機監聽埠不同的外部 URL 埠。本機回呼 URL 繫結到本機介面;非本機回呼 URL 繫結到 0.0.0.0。

Codex 會在交換授權碼之前驗證傳回的所有 iss。如果 iss 不匹配,始終會拒絕該回應。公佈頒發者支援後, 缺少 iss 也會導致回應被拒絕。上述兩種失敗均不會交換授權碼,也不會 回退到其他回呼。回呼 URL 格式錯誤,或者公佈頒發者支援卻未在後設資料中提供頒發者, 也會直接導致失敗。請參閱 對使用者進行身分驗證。

在 config.toml 中設定 mcp_servers.<server-name>.scopes,以選擇伺服器的 OAuth 作用域。如需在某次登入時覆蓋這些作用域,請執行codex mcp login <name> --scopes read,write。如果兩者均未設定,Codex 會在可用時使用伺服器宣告的 OAuth 作用域。

空列表(scopes = [])仍會讓 OAuth 庫自行選擇作用域。當授權伺服器支援時,該庫還可能新增 offline_access。

OAuth 客戶端註冊

Codex 支援 OAuth Client ID Metadata Documents (CIMD) 和 Dynamic Client Registration (DCR)。預設情況下,當授權伺服器通告 client_id_metadata_document_supported: true、在 token_endpoint_auth_methods_supported 中包含 none,且回呼使用受支援的 迴環 URL 時,Codex 會自動選擇 CIMD。否則,Codex 會在 DCR 可用時使用 DCR。已設定的 OAuth 客戶端 ID 始終具有優先權,並會跳過客戶端註冊。

對於不使用頒發者繫結回應的 CIMD,Codex CLI 會使用由 ChatGPT 託管、 針對該 MCP server 的後設資料文件:

https://chatgpt.com/oauth/codex/<callback_id>/client.json

Codex 會根據 MCP server URL 派生 <callback_id>,並將其包含在 迴環重定向 URI 中,例如 http://127.0.0.1:<port>/callback/<callback_id>。後設資料文件會註冊 不含埠的匹配迴環 URI。按照 RFC 8252 的要求,授權伺服器必須接受登入時選擇的 埠,同時精確匹配主機和路徑。自訂 回呼主機、路徑或查詢參數需要使用 DCR 或已設定的 OAuth 客戶端 ID。

Codex CLI 還支援一個穩定的共享 CIMD 文件:

https://chatgpt.com/oauth/codex/client.json

當授權伺服器滿足以下條件時,Codex CLI 會使用帶有共享 /callback 路徑的穩定文件:宣告 authorization_response_iss_parameter_supported: true,在後設資料中提供有效的 issuer,並在授權回應中包含匹配的 iss。 不使用頒發者繫結回應的伺服器會使用 針對特定回呼的文件。

要為單次 CLI 登入選擇註冊方式,請使用 --oauth-client-registration:

codex mcp login <server-name> --oauth-client-registration cimd
codex mcp login <server-name> --oauth-client-registration dcr

預設值為 auto。註冊方式選擇僅適用於當前登入, 不會儲存在 config.toml 中。

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"
output_token_limit = 30000

外掛提供的 MCP server

已安裝的外掛可以在其外掛清單中捆綁 MCP server。這些 伺服器從外掛啟動,因此使用者設定不設定其 傳輸命令。使用者設定仍可在 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"

外掛提供的 HTTP MCP server 也可以在 .mcp.json 中宣告 OAuth 設定。 外掛清單使用駝峰式欄位名 clientId、callbackUrl 和 callbackPort:

{
  "mcpServers": {
    "sample": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "clientId": "my-pre-registered-client",
        "callbackUrl": "http://127.0.0.1/callback/registered"
      }
    }
  }
}

外掛提供的 MCP server 與其他 MCP server 採用相同的回呼選擇規則。如果外掛提供了 clientId,其提供方不支援 與頒發者繫結的回呼,並且 callbackUrl 缺少伺服器專用的回呼 ID,Codex 會在登入時忽略該 URL,改用 mcp_oauth_callback_url;若未設定, 則使用 http://127.0.0.1/callback,並在末尾附加回呼 ID。 設定的 callbackUrl 保持不變。

外掛的 oauth.callbackPort 會覆蓋全域 mcp_oauth_callback_port;如果兩者均未設定,Codex 會選擇臨時埠。 嵌入 callbackUrl 的埠不會選擇監聽埠。對於使用固定埠的 直接迴環回呼,請將這兩個值設定為一致:

{
  "callbackUrl": "http://127.0.0.1:4321/callback/registered",
  "callbackPort": 4321
}

對於遠端入口或其他代理,如果代理將請求轉發到設定的 監聽器,回呼 URL 埠可以有意與本機監聽器埠不同。

實用 MCP server 範例

MCP server 列表仍在不斷增長。以下是一些常見範例:

  • OpenAI Docs MCP:搜尋和閱讀 OpenAI 開發者文件。
  • Context7:連線最新的開發者文件。
  • Figma Local 和 Remote:存取你的 Figma 設計。
  • Playwright:使用 Playwright 控制和檢查瀏覽器。
  • Chrome Developer Tools:控制和檢查 Chrome。
  • Sentry:存取 Sentry 日誌。
  • GitHub:管理 git 所支援範圍之外的 GitHub 功能(例如 PR 和問題單)。