我如何构建了一个 MCP 服务器,让 Claude Code 与我付费的所有 LLM 对话

发布: (2026年2月6日 GMT+8 11:53)
11 min read
原文: Dev.to

Source: Dev.to

抱歉,我无法直接访问外部链接获取文章内容。请您提供需要翻译的完整文本(除代码块和 URL 之外),我将按照要求把它翻译成简体中文并保留原有的格式、Markdown 语法以及技术术语。

问题

你正在同时使用 个不同的 AI 生态系统:

  • ChatGPT Plus
  • Claude MAX
  • Gemini
  • 通过 Ollama 的本地模型

每个都需要单独的浏览器标签页,你不得不花费宝贵的时间 复制‑粘贴 提示、重新格式化,并且在比较答案时丢失上下文。一个简单的“每个模型怎么想?”会耗费几分钟,而不是几秒钟。

解决方案:HydraMCP

HydraMCP 是一个 MCP(模型控制协议)服务器,它将单个提示路由到您可以访问的任何云端或本地模型,并行执行它们,并将结果并排返回。

关键优势

  • 统一接口,适用于所有模型
  • 并行执行(一次可运行 2‑5 个模型)
  • 再也不会出现上下文丢失或手动重新格式化
  • 可在终端、IDE 或任何 Claude Code 环境中使用

Exposed Tools (Claude Code)

ToolDescription
list_models显示所有提供商中可用的每个模型,一条命令即可查看。
ask_model在不离开终端的情况下查询单个模型(例如,“给我 GPT‑5 对此的看法”)。
compare_models相同的提示 发送给 2‑5 个模型并行,并并排返回结果。

示例用法

# List everything you can query
list_models
# Ask a single model
ask_model gpt-5-codex "Explain the difference between supervised and unsupervised learning."
# Compare several models at once
compare_models gpt-5-codex, gemini-3, claude-sonnet, local-qwen \
    "Review this function and suggest improvements:

def foo(bar):
    return bar * 2"

结果(简化视图):

模型响应
GPT‑5 Codex
Gemini‑3
Claude Sonnet
Local Qwen

每个答案并排显示,轻松发现差异、优势或错误。

入门

  1. 安装 HydraMCP(通过 pip、Docker 或二进制文件)。

  2. 配置你的 OpenAI、Anthropic、Google 以及 Ollama 端点的 API 密钥。

  3. 启动服务器:

    hydramcp serve
  4. 使用 Claude Code、终端或 IDE 插件中的任意三种工具。

TL;DR

HydraMCP 让你 只用一个提示查询所有 AI 模型,获取 并行、并列的结果,最终摆脱无尽的复制‑粘贴舞蹈。 🚀

Model Comparison (4 models, 11 637 ms total)

ModelLatencyTokens
gpt-5-codex1 630 ms (fastest)194
gemini-3-pro-preview11 636 ms1 235
claude‑sonnet‑4‑5‑202509293 010 ms202
ollama/qwen2.5-coder:14b8 407 ms187

四个模型均独立发现了相同的异步错误,随后各自捕获了其他模型遗漏的内容:

  • GPT‑5 – 最快。
  • Gemini – 最彻底。
  • Claude – 修复最清晰。
  • Qwen – 解释了根本原因。

训练数据不同,优势各异。

共识投票

“Consensus polls 3‑7 models on a question and has a separate judge model evaluate whether they actually agree. It returns a confidence score and groups responses by agreement.”

该工具将请求分发到多个模型,收集它们的响应,然后由 synthesiser model 将最佳见解合并为一个答案。结果通常优于任何单一模型的响应。

架构概览

Claude Code
    |
    HydraMCP (MCP Server)
    |
    Provider Interface
    |-- CLIProxyAPI  → cloud models (GPT, Gemini, Claude, …)
    |-- Ollama       → local models (your hardware)

HydraMCP 位于 Claude Code 与模型提供商之间。它通过 stdio 使用 JSON‑RPC(MCP 协议)进行通信,将请求路由到相应的后端,并对所有内容进行格式化,以保持你的上下文窗口可控。

Provider Interface

interface Provider {
  name: string;
  healthCheck(): Promise;
  listModels(): Promise;
  query(
    model: string,
    prompt: string,
    options?: QueryOptions
  ): Promise;
}

每个后端只实现三个方法:healthCheck()listModels()query()。添加新提供商只需实现这三个函数并注册它。

  • 云模型CLIProxyAPI 将已有订阅转换为本地兼容 OpenAI 的 API。你只需通过浏览器登录一次即可对每个提供商进行身份验证;无需按 token 计费——使用你已经付费的订阅。
  • 本地模型Ollamalocalhost 上运行,提供 Qwen、Llama、Mistral 等模型。零 API 密钥,除电费外无其他成本。

当你比较四个模型时,所有查询会使用 Promise.allSettled() 同时发起。
总时间 = 最慢模型的延迟,而不是所有延迟之和。
(上面的五模型比较总共用了 11.6 秒,而不是 > 25 秒。)

如果某个模型失败,仍然会收到其他模型的结果——实现了优雅降级,而不是全有或全无。

Source:

协议检测

单纯的关键词匹配无法判断模型是否真正达成一致。

模型 A:“从单体开始。”
模型 B:“单体因为更简单。”

它们在语义上是一致的,但关键词重叠度很低。

解决方案: 共识工具挑选一个 judge model(不在投票列表中),让它评估一致性。评审模型会阅读所有回复并进行语义分组。

Three cloud models polled, local Qwen judging.
Strategy: majority (needed 2/3)
Agreement: 3/3 models (100%)
Judge latency: 686 ms

使用本地模型作为评审意味着 零云配额 用于评估步骤。

当没有评审模型可用时,基于关键词的回退方案在事实性问题上还能工作,但在主观性问题上会失效。LLM‑judge 方法显著更好,尽管仍有改进空间。

本地模型的冷启动惩罚

  • 首次请求 Qwen 32B:约 24 秒(模型加载)。
  • 到第四次请求时:约 3 秒——模型热启动后提升

如果您经常使用 HydraMCP,您的本地模型会保持热状态,体验会非常流畅。当天的第一次查询可能会较慢;其余的查询都很快。

合成工具

最雄心勃勃的功能:它收集多个模型的响应,然后将它们送入一个合成模型,并指示其结合最佳见解并去除冗余。

  • 在可能的情况下,合成模型会特意从源列表之外的模型中挑选。
  • 提示(简化版):
Here are responses from four models. Write one definitive answer.
Take the best from each.

实际上,合成后的结果通常比任何单一响应拥有更好的结构,并且能够捕捉到至少一个模型遗漏的细节。

实现细节

  • 语言: TypeScript(约 1 500 行)
  • 依赖:
    • @modelcontextprotocol/sdk – MCP 协议
    • zod – 输入验证
    • Node 18+(无 Express、无数据库、无额外构建框架)

所有工具输入均使用 Zod schema 进行验证,所有日志输出到 stderr(stdout 保留给 JSON‑RPC 协议——向其发送其他内容会导致 MCP 出错)。

快速入门指南(≈ 5 分钟)

  1. 设置后端 – CLIProxyAPI 和/或 Ollama。

  2. 克隆、安装、构建 HydraMCP

  3. 将后端 URL 添加到 .env

  4. 使用 Claude Code 注册

    claude mcp add hydramcp -s user -- node /path/to/dist/index.js
  5. 重启 Claude Code,然后运行 list models

  6. 从此以后只需自然对话:

    • “让 GPT‑5 审核一下这个。”
    • “比较三种模型在此方法上的表现。”
    • “就这个是否线程安全达成共识。”

Claude Code 会自动通过 HydraMCP 路由所有请求。

扩展 Provider 接口

设计本身是有意可扩展的。我希望未来能看到的后端有:

  • LM Studio – 另一个本地模型选项。
  • OpenRouter – 按 token 付费访问您未订阅的模型。
  • Direct API keys – OpenAI、Anthropic、Google(无需 CLIProxyAPI)。

每个新 provider 大约只有 100 行 TypeScript:实现三个接口方法,注册它,完成即可。

Bottom Line

真实的价值不在于任何单一功能,而在于 workflow change:不再只信任单个模型的意见,你可以低成本地将其与其他模型进行验证,获得共识,并合成更高质量的答案——全部在编辑器或终端中完成,无需离开。

多模型 AI 对比

与其纠结于 GPT 或 Claude 在特定任务上哪个更好,不如直接 并排比较它们,观察结果。

为什么使用多个模型?

  • 不同的优势

    • GPT‑5 往往能捕捉到 Claude 漏掉的性能问题。
    • Claude 能提出 GPT 未考虑的架构模式。
    • Gemini 有时能提供最全面的分析。
    • 本地 Qwen 在解释 为什么 出错方面出奇地好,而不仅仅是说明 出错的是什么
  • 统一的终端访问
    将所有模型集中在同一个终端中使用,支持并行执行和结构化对比,这会改变你使用 AI 编码的思维方式。它把工作流从“询问我偏好的模型”转变为 “为此任务挑选合适的模型”——或者直接“让所有模型都回答,看看会得到什么结果”。

HydraMCP

如果你有积灰的订阅或闲置的本地模型,HydraMCP 可以让它们发挥作用。如果你想添加新的提供商,接口已有文档并提供了示例。

Back to Blog

相关文章

阅读更多 »