推出 Virtual MCP Server:多MCP工作流的统一网关

发布: (2025年12月11日 GMT+8 23:59)
8 min read
原文: Dev.to

Source: Dev.to

问题:连接过载

想象一下:你是平台团队的工程师。你的 AI 助手需要访问 GitHub(代码)、Jira(工单)、Slack(通知)、PagerDuty(事件)、Datadog(指标)、AWS(基础设施)、Confluence(文档)以及内部知识库。这是 8 条独立的 MCP 服务器连接,每条连接又暴露 10‑20+ 个工具。现在 AI 的上下文窗口被 80+ 个工具描述塞满,消耗大量 token,导致性能下降,因为大模型在一长串工具中挑选合适的工具时力不从心。

每条 MCP 服务器连接都需要:

  • 在 AI 客户端中单独配置
  • 单独的身份验证凭证
  • 当任务跨多个系统时需要手动协调
  • 重复输入参数(相同的仓库、相同的频道、相同的数据库)
  • 为避免上下文膨胀和 token 浪费而进行工具过滤

想要调查一次生产事故?你需要手动在 4 个不同的系统上运行命令并自行拼凑结果。部署应用?你要编排一系列操作:合并 PR、等待 CI、获取批准、部署、通知团队。过程繁琐、易出错且不可复用。

解决方案:统一聚合

vMCP 将这 8 条连接合并为一条。你只需配置一个聚合所有后端服务器的 MCP 端点。

vMCP 之前:

{
  "servers": {
    "github": { "url": "..." },
    "jira": { "url": "..." },
    "slack": { "url": "..." },
    "pagerduty": { "url": "..." },
    "datadog": { "url": "..." },
    "aws": { "url": "..." },
    "confluence": { "url": "..." },
    "docs": { "url": "..." }
  }
}

使用 vMCP:

{
  "servers": {
    "company-tools": {
      "url": "http://vmcp.company.com/mcp"
    }
  }
}

一条连接。一次身份验证。所有工具均可使用。

你可以根据需要运行任意数量的 vMCP 实例。前端团队连接到带有其特定工具的 vMCP;平台团队连接到另一个带有基础设施访问的 vMCP。每个 vMCP 只聚合该团队所需的后端,并配以相应的安全策略和权限。这提升了安全性(不再让所有人访问所有资源),也提升了效率(工具更少,上下文窗口更小,token 成本更低,AI 性能更佳)。

vMCP 的功能

vMCP 是 ToolHive Kubernetes Operator 的一部分。它充当智能聚合层,位于 AI 客户端与后端 MCP 服务器之间。

基本 vMCP 架构图

1. 多服务器聚合与工具过滤

所有 MCP 工具通过单一端点呈现,但你可以精准挑选要暴露的工具

  • 示例:ToolHive 团队的工程师获得一个 vMCP 连接,包含:
    • GitHub 的 search_code 工具(仅限 stacklok/toolhive 仓库)
    • ToolHive 文档 MCP 服务器
    • 连接到 Google Drive 并过滤至 ToolHive 设计文档的内部文档服务器
    • Slack(仅 #toolhive-team 频道)

无关工具不会占用 LLM 的上下文,也不会在未使用的工具描述上浪费 token。

当多个 MCP 服务器拥有同名工具(例如 GitHub 与 Jira 都有 create_issue)时,vMCP 会自动加前缀(github_create_issuejira_create_issue),并可根据需要自定义名称。

2. 声明式多系统工作流

真实任务往往需要跨多个系统协同。vMCP 让你定义确定性的工作流,支持并行执行、条件分支、错误处理和审批门。

事故调查工作流

→ 从日志系统查询日志
→ 从监控平台获取指标
→ 从追踪服务拉取追踪数据
→ 从云提供商检查基础设施状态
→ 手动将所有信息合并成报告
→ 使用 Jira 创建包含调查结果的工单

vMCP 并行运行查询,聚合数据并创建工单。工作流只需定义一次,即可在每次事故中复用。

应用部署工作流

→ 在 GitHub 合并 Pull Request
→ 等待 CI 测试通过
→ 请求人工审批(使用 MCP 询问)
→ 部署(仅在获批后执行)
→ 在 Slack 中通知团队

3. 预配置默认值与安全护栏

停止重复输入相同参数。只需在 vMCP 中配置一次默认值。

  • 之前:每次 GitHub 查询都必须指定 repo: stacklok/toolhive
  • 之后:仓库已预配置,防止误查询到错误的仓库。

预配置参数可确保行为确定、提升安全性并在所有用户之间保持一致。

4. 工具自定义与安全策略

第三方 MCP 服务器常常暴露通用、无限制的工具。vMCP 允许在不修改上游服务器的前提下对其进行包装和限制。

  • 安全策略执行 – 将网站抓取工具限制为仅内部域名(*.company.com),在调用后端前验证 URL,并在违规时提供明确的错误信息。
  • 简化接口 – 包装一个拥有 20+ 参数的复杂 AWS EC2 工具,只暴露前端团队需要的三个参数,并为其余参数提供安全默认值。

5. 集中式身份验证

vMCP 实现了双边界身份验证模型,并提供完整审计日志。你的 AI 客户端使用官方 MCP 规范中定义的 OAuth 2.1 方法一次性登录 vMCP,随后 vMCP 根据各后端的需求独立处理授权。

当需要撤销访问权限时,只需在身份提供商中禁用用户,所有后端的访问即被即时撤销。

实际收益

没有 vMCP 时

  • 4 条顺序手动命令
  • 每条命令 2‑3 分钟
  • 汇总与格式化 5‑10 分钟
  • 每次事故总计 15‑20 分钟
  • 结果因工程师而异,流程未记录也不可复用

使用 vMCP 时

  • 一条命令触发整个工作流
  • 并行执行约 30 秒
  • 自动汇总与格式化
  • 每次结果一致
  • 工作流以代码形式记录,任何团队成员均可使用

对于每周处理 20 起事故的团队而言,时间节省约为每周 5 小时,同时降低 token 成本并提升事故响应的可靠性。

Back to Blog

相关文章

阅读更多 »

LLMs + 工具调用:聪明却被诅咒

引言:一个真实案例,展示 LLM 创造性地使用工具——以及为何沙箱安全比大多数人意识到的更重要。LLM 在生成代码方面表现出色……