Skip to main content

概述

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 属于哪个上游,因此依次探测路由内已连接的候选服务器,返回首个成功响应。
普通已列出资源仍然可以读取,但在不符合条件的路由上会移除 Apps 专属元数据。

动态列表

MCPHub 会订阅上游的 tools/list_changed、resources/list_changed 和 prompts/list_changed 通知。收到通知后,它会刷新缓存、为模型可见工具更新 Smart Routing 向量索引,并通知已连接的下游客户端。