跳转到主要内容
你想让你的智能体使用一个 Model Context Protocol(MCP)服务器—— 你自己的远程服务器,或捆绑的那个——但你想让它暴露的每一次工具 调用都在一个单一的、受审计的咽喉点后运行。第一步是在你的工作区中 **注册(register)**该服务器:一个名字、一个端点、一个鉴权模式, 以及它的凭据。一旦注册, MCP 网关 就会在一个连接下声明它的工具, 并在每一次 tools/call 到达真实服务器之前,让它通过你的 防火墙策略 评估。 本页只涵盖那一个任务——连接并配置一条服务器记录。关于网关的 运行时行为和每次调用的判定,参见 MCP 参考;要看更全的图景,从 MCP 安全总览 开始。
注册是一个控制台操作(/api/workspace/firewall/* 路由用你的 会话/访问令牌鉴权,而不是中继 sk-orca-… 密钥)。写入需要 Developer+ 角色;任何成员都可以列出服务器。

1. 如何连接一个 MCP 服务器

在控制台打开 Firewall → MCP Servers 并添加一个服务器,或直接 调用工作区 API。一次注册携带四样要紧的东西:

name

每工作区唯一。它会成为 <server>.<tool> 命名空间前缀,因此 在同一工作区中的重名会被以 HTTP 409 拒绝。

endpoint

你的远程 MCP 服务器的 URL。留空以注册捆绑的进程内服务器, 使其可见且可治理。

auth_mode

网关如何向你的服务器鉴权:nonebeareroauthbasic

credentials

模式特定的密钥。静态加密存储并在读取时屏蔽——它永不到达 模型或客户端。
一个服务器以 enabled 起步,并在你禁用它的那一刻被完全从网关 中剔除——那是关闭开关,并且一个被禁用服务器的凭据永不被解密。

2. 一个具体例子

用一个 bearer 令牌注册一个远程 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 令牌发送到你的服务器。
{"access_token":"…"} —— 一个静态访问令牌,网关把它作为一个 bearer 头发送。自动的 client-credentials 交换尚不支持;如果 没有已存储的 access_token,oauth 模式的探测会失败而不是以 未鉴权方式连接。
{"username":"…","password":"…"}
一个空字符串。不附加任何凭据。
在读取时,凭据和端点都被屏蔽——API 返回哨兵占位符,而不是 原始值。当你更新一个服务器时,把那些占位符原样回传以保留已存储的 值;只有在你真的轮换密钥时才发送一个全新的 auth_json。参见 凭据轮换

3. 探测它的健康状况

在你能针对一个服务器的工具编写防火墙规则之前,你需要知道它们 可达,以及它们叫什么。**探测(Probe)**该服务器——网关使用解密后的 凭据运行一次 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 工具
  • 治理它触及哪里。 编写一条 出站规则,让一个工具无法抓取 任意主机。
  • 留意变化。 一个你曾信任的服务器可能事后改变它的工具定义; 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+注册一个服务器(重名时返回 409)。
PUT /api/workspace/firewall/mcp_serversDeveloper+更新一个服务器(id 在 body 中)。
DELETE /api/workspace/firewall/mcp_servers/:idDeveloper+软删除;释放名称。
POST /api/workspace/firewall/mcp_servers/:id/probeDeveloper+探测可达性 + 发现工具。
一个智能体的 SDK 代理用网关限定的令牌在 GET /api/v1/firewall/mcp_servers(仅已启用的服务器)读取运行时 注册表。关于如何在那一侧鉴权,参见 鉴权 MCP 网关
到底为什么要经过 OrcaRouter 连接? 这样就有一个地方能看到 每一次工具调用——一个连接、一条策略、一份受审计日志,以及在 派发时注入的凭据,而不是散落在各个智能体配置里。读 保护 AI 智能体MCP 工具投毒威胁 了解动机。

相关

MCP 安全总览

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

防火墙:MCP 服务器

网关的运行时行为和每次调用的判定。

鉴权网关

铸造并限定你的智能体连接所用的令牌的范围。

信任清单

在你信任一个新服务器之前要验证的一切。