SuperAPI AI 工具集

add-existing-mcp-servers

部署与运维

查看项目

更新于 11-02 22:48

技能介绍

用途

本技能用于在用户当前运行的智能体客户端中,把已经配置好的 MCP 服务器迁移到 Speakeasy AI 控制平面(AICP)项目,而无需手动编辑本地客户端配置;并可选地把这些服务器限制到组织的 Tailscale 私有网络。安装本身不授予访问权限,实际认证、授权、成员资格和管理员检查仍以平台为准。所有管理变更通过已认证的 Platform MCP 工具完成,不直接调用后端 API。

主要能力与流程

  1. 访问验证与发现许可:在本地发现之前,先通过本会话自己的 Speakeasy 连接调用 list_projects(limit: 100)验证访问权限。该调用仅接受 limit,最高 100,不支持 cursor 或搜索;若不可用或被拒绝,则停止并引导用户走常规 Speakeasy 登录/设置流程;若返回 truncated: true,说明项目发现不完整,须停止并交由 AICP 仪表板选择项目。若用户希望迁移后的服务器保留在 Tailscale 私有网络,可调用 get_network_ingress 了解当前状态;私有网络未就绪不会阻止导入,只影响后续步骤能否在本次会话完成。

  2. 客户端发现:明确当前所在客户端,只发现该客户端自身的 MCP 服务器。Claude Code 使用 claude mcp list;其他客户端仅使用其 --help 中明确记录的列表子命令。不得虚构子命令或参数。若客户端没有文档化的列表命令或无法判断所处客户端,则改用用户脱敏后的手工清单。禁止直接打开客户端的 MCP 配置文件,因为其中常含 header、令牌和环境变量值。

  3. 运行前明确同意:在执行 claude mcp list 或其他客户端的列表命令前,须获得明确知情同意,说明其副作用:该命令会对已批准/启用的服务器做健康检查,可能在过滤掉不受支持条目之前启动 stdio 进程并联系本地/私有网络端点,这些进程可能写文件或连接服务,不能承诺零进程副作用或纯只读发现。同意范围仅限当前 CLI 用户、工作目录和配置作用域。若用户拒绝或本地执行不可用,提供用户脱敏的手工清单方案(仅非敏感别名、安全端点、传输方式)。

  4. 脱敏与分类:仅保留非敏感别名、精确安全端点、声明的传输方式和选择所需的来源信息。将每个条目归入且仅归入一组:候选项(公开 HTTPS Streamable HTTP 端点,可添加)、保持不变的本地服务器(stdio 命令、localhost/回环、私有网络或链路本地端点,不能通过本流程变为 AICP 远程 MCP,不得迁移、包裹、隧道、禁用或删除)、被阻止项(不支持的传输(含旧版 SSE)、片段、内嵌凭据、类凭据查询参数及不确定 URL)。有意义的非敏感查询参数应保留,不得静默剥离凭据或改路径来伪造安全 URL。需排除当前连接的 Speakeasy 管理端点自身以防递归导入。

  5. 选择确认与现有清单比对:展示脱敏候选项、保留不变的本地服务器和被阻止项,确认候选项选择与目标项目(保持项目 ID 与 slug 配对,不得从本地别名或默认项目推断目标)。用 find_mcp(指定 project_id,limit: 100,不加查询或就绪过滤)跟随 next_cursor 完成全量分页,用 get_mcp 检查可能的匹配,比较精确上游 URL 与服务器签发的来源/注册证据,仅凭已证实身份去重,不按主机名或显示名去重。身份无法证明时阻止并请求人工处理,不得猜测或创建重复项。

  6. 检查缺失候选项:优先使用经审核的目录条目(即使端点与本地不同),但绝不按名称静默替换。先用安全完整端点作为 query 调用 search_mcp_catalog 按精确端点身份搜索(文本搜索,非 URL 精确查询,仅支持可选 query、provider_key 与 cursor,翻页需带同一 query 与 provider_key),用 inspect_mcp_candidate(使用返回的 provider_key 与 catalog_ref,不带 remote_url)检查可能结果;仅在返回证据证明端点一致时才认作精确匹配,缺失 canonical_url 视为未知而非匹配。再以非敏感别名/提供商/名称作次级搜索。目录替换需单独确认精确候选、差异与未知项、声明的非敏感配置及目标项目;替换后需重新比对现有注册。若用户拒绝、无合适匹配或目录搜索不可用,可提供原始安全直连远程路径,并说明搜索失败而非声称无匹配。

  7. 独立添加确认支持的条目:对每个确认缺失的目录目标调用 register_catalog_mcp(project_slug、精确返回的 provider_key 与 catalog_ref、仅声明的 non_secret_config、调用方生成的 idempotency_key);对每个确认缺失的直连远程条目调用 register_remote_mcp(project_slug、确认的 remote_url、可选 display_name、调用方生成的 idempotency_key)。每个逻辑操作保留一个键,重试(包括超时或写入结果不确定后)沿用同一键,不得因结果丢失而生成新键。应用返回的修复/重试建议与速率限制,不要原样重试永久拒绝。某项失败后继续处理其他独立条目。成功响应本身不代表完成。

  8. 逐项实时核验:用 find_mcp 分页加 get_mcp 重新读取目标项目的完整清单,对照有效确认的目标身份与项目核验所有选中项,包括已存在条目和写入结果不确定的条目。目录替换需匹配新清单 registration.id 与回执中的 registration_id,并核对同一项目、返回的 source.provider/source.reference 与已接受的 provider_key/catalog_ref 及返回端点。register_catalog_mcp、find_mcp 和 get_mcp 不暴露持久化配置值或配置指纹,因此不得声称已读回当前配置;在此约定下,配置等价性保持未验证状态,需人工解决而非自动复用,即使返回 ID 与回执匹配且状态为 registered、组件完整。并发注册、未知的现有注册或不确定的写入结果不得视为新建或配置正确,应保持未验证、不创建重复项并提供仪表板人工处理。

适用场景

用户希望把本地智能体客户端中已配置的 MCP 服务器集中登记到 Speakeasy AICP 项目,并可能将其限制在组织 Tailscale 私有网络内时使用。

限制

  • 仅公开 HTTPS Streamable HTTP 端点可作为候选项迁移;本地 stdio、localhost/回环、私有网络等服务器保持不变,不得迁移或包装。
  • 安装不授予任何访问权限;实际权限以平台认证与授权检查为准。
  • 部分配置等价性因工具不暴露持久化配置值而无法自动验证,需人工解决。
  • 不得编辑本地客户端配置、批准设置或凭据以促成发现。