backends

YAML-only 模式至少配置一个后端;管理模式允许从空数据库启动并在网页注册第一个后端。每个 id 必须匹配 [A-Za-z0-9_-]{1,32},并按大小写不敏感规则保持唯一;允许大写字母。

字段 默认值 说明
id 无 tool/prompt 名称使用的对外命名空间和配置 ID;不能包含点号。名称保留大写,而 resource/template URI authority 使用小写 ID。
url 无 必填绝对 URL。默认只接受 HTTPS;仅当 allow_insecure_http: true 且主机是 localhost、IPv4/IPv6 loopback 时才允许 HTTP。
required false required 后端影响 /readyz。运行中断线会使就绪变为 503;连接循环会继续重试。
require_client_grant false 对此 endpoint 强制客户端授权,需要启用用户门户。个人 Vault 账号必须显式设为 true。
credentials 无 Vault shared / personal 凭证来源;需要全局 vault,与此 backend 的服务 oauth 和冲突的静态认证头互斥。见 Vault 专题。
required_scopes [] 该后端所需的 JWT scope,按 all-of 判断;scope 不能含空白,也不能重复。
published_tools [] 获准发布的原始工具名,精确匹配并区分大小写,不支持通配符;留空不发布任何工具。
tool_rules [] 可选的后端本地 tool 策略。每条规则包含 match glob,以及 effect、approval、required_scopes、resource_rules 中至少一项。effect: read 可直接执行;write 或未分类需要审批。匹配基于原始后端 tool name,使用 Go path.Match,整串且区分大小写。
request_timeout 继承 server.request_timeout 该后端连接、目录发现、刷新和调用的超时;必须大于 0。
rate_limit {} Endpoint 共享速率、突发容量和并发限制;默认不限流。
allow_insecure_http false 仅为 loopback 本地 HTTP 开关;不会放宽 server.public_url 或任何 issuer 的 HTTPS 要求。
headers {} 每次后端 MCP HTTP 请求附加的静态头。值支持环境变量展开,不能含 CR/LF;名称大小写不敏感且不能重复。Accept、Content-Type、任意 Mcp-* 头,以及 Host、Content-Length、Connection、Proxy-Authorization、Proxy-Authenticate 等均由 HTTP/MCP transport 管理并被拒绝。
oauth 无 后端 OAuth 配置;目前唯一允许的 type 是 client_credentials。与静态 Authorization 头互斥。

oauth 字段如下:

字段 说明
type 必须为 client_credentials。
issuer 必填绝对 HTTPS OAuth issuer;metadata 的 issuer 必须与它精确一致。
client_id / client_secret 必填,建议只通过 ${...} 环境变量提供。
scopes 发给后端 OAuth token endpoint 的 scope 列表;它与 required_scopes(验证进入 MCPHub 的 JWT)是两套独立的 scope。

后端 OAuth discovery 和 token 请求不会带上该后端的静态 headers;数据面请求才会附加 headers 并自动复用/刷新 client-credentials token。Discovery 只从 RFC 8414/OIDC metadata 读取并精确校验 issuer 和 token_endpoint,不要求交互式 authorization 或 PKCE metadata。OAuth metadata 响应上限为 1 MiB。后端和 OIDC HTTP 客户端都不跟随重定向。

可选的服务账号 OAuth 片段,不属于基础模板:只有接入此类服务时才将以下条目放入 backends,并为这条目设置全部 4 个变量;required: false 只影响连接失败的处理。工具仍需审核后显式发布。

- id: crm
  url: ${MCPHUB_CRM_BACKEND_URL}
  required: false
  required_scopes: [mcp:crm.read]
  published_tools: []
  oauth:
    type: client_credentials
    issuer: ${MCPHUB_CRM_OAUTH_ISSUER}
    client_id: ${MCPHUB_CRM_CLIENT_ID}
    client_secret: ${MCPHUB_CRM_CLIENT_SECRET}
    scopes: [crm.read]