工具组与托管 HTTP API tool
工具组是管理 API 中的对象,不是 YAML 配置。每个组统一持有其 tool 使用的 HTTPS Base URL、静态 Header 或 OAuth 2.0 client_credentials、JWT required scope 和请求 timeout;不要在每个 tool 中重复配置凭证。Header 值和 OAuth client secret 加密存储在所选数据库,API 只返回“已配置/未配置”标记。工具组 scope 仍采用 backend 相同的 all-of 语义;可选的组内 tool 规则可以为选定 tool 追加 scope。
一个工具组可以包含手工定义的 HTTP tool,以及多个 OpenAPI 3.0 或 3.1 import。OpenAPI import 可以先 inspect 再保存。两类对象都只作为 MCP capability,经配置的 /mcp Streamable HTTP 入口列出和调用;MCPHub 不提供 raw HTTP proxy 或任意 method/path 透传路由。
稳定的管理路径如下:
| 操作 | 路径 |
|---|---|
| 列出/创建工具组 | GET/POST /api/v1/tool-groups |
| 读取/更新/删除工具组;探测工具组 | GET/PUT/DELETE /api/v1/tool-groups/{groupID}、POST .../{groupID}/probe |
| 列出/创建或读取/更新/删除手工 tool | GET/POST .../{groupID}/tools、GET/PUT/DELETE .../{groupID}/tools/{toolName} |
| inspect、列出/创建或读取/更新/删除 OpenAPI import | POST .../{groupID}/imports/inspect、GET/POST .../{groupID}/imports、GET/PUT/DELETE .../{groupID}/imports/{importID} |
| 刷新 OpenAPI import | POST .../{groupID}/imports/{importID}/refresh |
工具组、手工 tool 和 import 资源各自返回 ETag;更新和删除必须提交匹配的 If-Match,revision 过期时返回 409 revision_conflict。这些资源只能通过 admin API 管理并持久化到所选数据库;有意不提供 tool_groups(或同类)YAML schema,SIGHUP 也不会导入它们。
工具组 Base URL 和 OpenAPI source URL 必须使用 HTTPS;工具组 HTTP 请求和 source 抓取都不跟随重定向。若 source 与工具组是不同 origin,抓取时绝不会发送该组的静态 Header 或 OAuth secret。OpenAPI 文档上限为 5 MiB,携带文档的请求 body 上限为 6 MiB,HTTP tool 响应默认上限为 1 MiB;响应上限可配置为 64 KiB 至 16 MiB。URL-backed import 默认每 15 分钟自动刷新(可设为 1 分钟至 24 小时);刷新失败时保留 last-known-good 文档和 tools,并采用退避重试。