跳轉到主要內容
你想讓你的代理使用一個 Model Context Protocol(MCP)伺服器——你 自己的遠端伺服器,或隨附的那個——但你想讓它公開的每一次工具 呼叫都在一個單一受稽核的咽喉要道後方執行。第一步是 在你的工作區中註冊該伺服器:一個 name、一個 endpoint、一個驗證 模式,以及它的憑證。一旦它被註冊, MCP 閘道會在一個連線下公告它的工具, 並在每一次 tools/call 抵達真正的伺服器之前,透過你的 防火牆政策評估它。 本頁涵蓋那一件任務——連接並設定一筆伺服器 記錄。關於閘道的執行期行為與每次呼叫的裁決,請見 MCP 參考;至於更大的圖景,從 MCP 安全總覽開始。
註冊是一個主控台動作(/api/workspace/firewall/* 路由以你的工作階段/存取權杖驗證,而非一個轉送 sk-orca-… 金鑰)。寫入需要 Developer+ 角色;任何成員皆可 列出伺服器。

1. 如何連接一個 MCP 伺服器

在主控台中開啟 Firewall → MCP Servers 並新增一個伺服器,或直接 呼叫工作區 API。一筆註冊攜帶四件重要的事:

name

每個工作區唯一。它會成為 <server>.<tool> 命名空間 前綴,所以在同一個工作區中重複的 name 會被拒絕並回傳 HTTP 409

endpoint

你的遠端 MCP 伺服器的 URL。留空以註冊 隨附的行程內伺服器,使它可見且可治理。

auth_mode

閘道如何向你的伺服器驗證:nonebeareroauthbasic

credentials

模式特定的密鑰。在靜態時加密儲存並在 讀取時遮罩——它永不會抵達模型或客戶端。
一個伺服器以 enabled 起始,並在你停用它的那一刻 完全從閘道中被丟棄——那就是關閉開關,而一個停用的伺服器的 憑證永不會被解密。

2. 一個具體範例

用一個 bearer token 註冊一個遠端 GitHub MCP 伺服器。這是一個 與主控台等效的 REST 呼叫;欄位名稱正是表單 所寫入的。
curl https://api.orcarouter.ai/api/workspace/firewall/mcp_servers \
  -H "Authorization: Bearer <your-session-or-access-token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "github",
    "endpoint": "https://api.githubcopilot.com/mcp",
    "auth_mode": "bearer",
    "auth_json": "{\"token\":\"ghp_x\"}",
    "enabled": true
  }'
憑證形狀取決於 auth_mode
{"token":"…"} —— 作為一個 bearer token 送往你的伺服器。
{"access_token":"…"} —— 一個閘道作為 bearer 標頭傳送的靜態 存取權杖。自動的 client-credentials 交換尚未 支援;若沒有已儲存的 access_token,一次 oauth 模式的探測會失敗 而非以未驗證方式連接。
{"username":"…","password":"…"}
一個空字串。不附加任何憑證。
在讀取時,憑證與端點都會被遮罩——API 回傳哨兵預留位置,而非原始值。當你更新一個 伺服器時,把那些預留位置原樣回送以保留已儲存的值; 只有當你實際在輪替密鑰時才送出一個全新的 auth_json。 請見憑證輪替

3. 探測它的健康狀態

在你能針對一個伺服器的工具撰寫防火牆規則之前,你需要 知道它們可觸及且它們叫什麼。探測該伺服器—— 閘道會使用解密後的憑證執行一次 MCP initialize + tools/list 握手、記錄可觸及性,並傳回所公告的工具:
curl -X POST \
  https://api.orcarouter.ai/api/workspace/firewall/mcp_servers/42/probe \
  -H "Authorization: Bearer <your-session-or-access-token>"
{
  "status": "ok",
  "last_checked_at": 1700000000,
  "tools": [
    { "name": "create_issue", "description": "…", "input_schema": {} }
  ]
}
status 會落入伺服器記錄並驅動健康指示器:
status意義
ok可觸及;工具由閘道服務。
degraded可觸及,但握手是部分的。
down在上一次探測時無法觸及;該伺服器被略過。
當閘道建構其工具集時,一個 down 伺服器會被排除在外,所以一次 暫時性的中斷會優雅地降級而非破壞派發。一次探測 無論結果如何都會傳回其結果——一次失敗的探測會作為 帶有 status: down 與一個被清洗過的原因的 200 回來,而非一個傳輸錯誤。
隨附的行程內伺服器(空 endpoint)在本地派發 且不可被探測——探測它會被拒絕並附上一個說明該 註冊沒有端點的錯誤。你只探測有 URL 的 BYO 伺服器。
每一次註冊變更都會立即使閘道的每工作區工具 快取失效,所以一個新連接的、被停用的,或被重新探測的伺服器會在 下次連線時生效,而不是在一個快取窗口之後。

4. 連接之後

一旦一個伺服器已註冊且探測為 ok,它的工具就受治理:
  • 每次呼叫都會被評估。 每一次 tools/call 在抵達你的伺服器之前, 都會在 mcp 表面上透過你的防火牆政策執行。既然你知道工具名稱, 就用 tool_name_glob: github.* 來限定範圍。
  • 鎖定表面。 預設拒絕你未明確允許的工具—— 請見允許清單 MCP 工具
  • 治理它觸及何處。 撰寫一條 egress 規則,讓一個工具不能擷取 任意主機。
  • 留意變更。 一個你信任的伺服器之後可能變更它的工具 定義;rug-pull 防禦 會標示那種漂移。

5. API 參考

所有主控台路由都是工作區限定的,並以你的 工作階段/存取權杖驗證。列表讀取對任何 Member 開放(密鑰 遮罩);每一次寫入都需要 Developer+
方法與路徑角色用途
GET /api/workspace/firewall/mcp_serversMember列出伺服器(密鑰 + 端點遮罩)。
GET /api/workspace/firewall/mcp_servers/:idMember單個伺服器,已遮罩。
POST /api/workspace/firewall/mcp_serversDeveloper+註冊一個伺服器(name 重複時回傳 409)。
PUT /api/workspace/firewall/mcp_serversDeveloper+更新一個伺服器(id 在主體中)。
DELETE /api/workspace/firewall/mcp_servers/:idDeveloper+軟刪除;釋放 name。
POST /api/workspace/firewall/mcp_servers/:id/probeDeveloper+探測可觸及性 + 探索工具。
一個代理的 SDK 代理會用閘道範圍的權杖在 GET /api/v1/firewall/mcp_servers 讀取執行期註冊表(僅限已啟用的伺服器)。關於 如何驗證那一側,請見 驗證 MCP 閘道
到底為什麼要透過 OrcaRouter 連接? 這樣就有一個地方能看見每一次工具 呼叫——一個連線、一個政策、一份受稽核的日誌,以及在派發時 注入的憑證,而非散落在各個代理設定中。閱讀 保護 AI 代理MCP 工具下毒威脅以了解 動機。

相關

MCP 安全總覽

完整的 MCP 治理模型,端到端。

防火牆:MCP 伺服器

閘道的執行期行為與每次呼叫的裁決。

驗證閘道

鑄造並限定範圍你的代理連接所用的權杖。

信任檢查清單

在你信任一個新伺服器之前需要驗證的一切。