概述
MCPHub 支持将 MCP Apps 作为透明代理转发。它会转发关联 UI 的工具元数据、仅 App 可用的工具、ui:// 资源和上游列表变更通知。MCPHub 仪表板本身不负责渲染 App UI。
无需增加 MCPHub 配置开关。下游 Host 声明 io.modelcontextprotocol/ui 扩展,并支持 text/html;profile=mcp-app MIME 类型时,该能力会自动启用。旧版客户端在初始化时声明,新版 2026-07-28 客户端在每次请求的 params._meta["io.modelcontextprotocol/clientCapabilities"] 中声明。参见 协议兼容矩阵。
路由要求
请求路由解析到至少一个已连接的 MCP 上游服务器时,MCP Apps 透明代理才会启用:/mcp/{server}/mcp/{group},分组内可以有一个或多个对调用方可见的 MCP 服务器/mcp,且调用方至少能看到一个 MCP 服务器
$smart 路由仍按普通 MCP 路由工作。在该路由上,MCPHub 会:
- 隐藏
_meta.ui.visibility: ["app"]等仅 App 可用的工具 - 移除 Apps 专属的
_meta.ui和旧版_meta["ui/resourceUri"]字段 - 拒绝直接调用仅 App 可用的工具
- 拒绝读取未列出的
ui://资源
工具名称
普通 MCPHub 路由使用带服务器前缀的工具名称,例如weather::forecast,分隔符取决于您的配置。
符合条件且仅配置一个上游服务器的 MCP Apps 路由会保留上游原始工具名,例如 forecast。这样 App iframe 发起的调用无需改写即可直接转发。
配置多个上游服务器的 Apps 路由继续使用带服务器前缀的名称,避免同名工具冲突。OpenAPI 上游和使用个人凭据的上游也计入路由成员,即使它们在当前请求中没有已连接的 MCP 客户端。连接状态变化或仅获取目标上游的个人运行时,不会改变聚合路由的工具名称;Apps 元数据和仅 App 可用的工具仍会透传。此类路由上的组件应读取工具列表或宿主上下文中的带前缀名称,不应假定可使用原始名称。
UI 资源
MCP Apps 服务器可以不在resources/list 中列出仅供 UI 使用的资源。在符合条件的 Apps 路由上,MCPHub 支持读取未列出的 ui:// URI:
- 单服务器路由直接将请求转发给该上游。
- 多服务器路由无法预先确定未列出的 URI 属于哪个上游,因此依次探测路由内已连接的候选服务器,返回首个成功响应。
动态列表
MCPHub 会订阅上游的tools/list_changed、resources/list_changed 和 prompts/list_changed 通知。收到通知后,它会刷新缓存、为模型可见工具更新 Smart Routing 向量索引,并通知已连接的下游客户端。