关于 MCP Cross-Model Delegation
MCP Cross-Model Delegation 是用于在不同语言模型间路由有限文本任务的 Python 框架和基准测试命令行工具。它应用调用方约束,并核对提取的引文与输入上下文;评估结果以实测为准,不宣称未经验证的提升。
主要功能
- 01向 Gemini 或 Anthropic 委派文本任务
- 02按隐私、成本和延迟约束路由
- 03核对引文与输入上下文
- 04运行确定性离线基准测试
- 05查看路由决策及原因
适用场景
- 01在隐私或延迟限制下选择提供方
- 02根据来源上下文核验提取内容
- 03通过基准测试比较委派配置
- 04无需 API 密钥离线测试路由行为
MCP 相关
它以可流式传输的 HTTP MCP 服务运行,提供任务委派、结构化发现提取和本地引文核验工具。路由由策略和提供方约束控制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e GEMINI_API_KEY -e ANTHROPIC_API_KEY ghcr.io/jostophe-021/mcp-cross-model-delegation:1.0.0GEMINI_API_KEY密钥Optional Gemini API key; configure at least one provider at runtime.ANTHROPIC_API_KEY密钥Optional Anthropic API key; configure at least one provider at runtime.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/jostophe-021/mcp-cross-model-delegation:1.0.0Streamable HTTP工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Cross-Model Delegation
English | Français
一个开放、可复现且注重安全的框架,用于衡量、比较、路由和验证异构大模型之间有明确边界的任务。
一个 Python 核心同时驱动 MCP 服务和基准测试 CLI:衡量 → 比较 → 路由 → 验证 → 改进。V1 支持 Gemini、Anthropic,以及用于离线测试的确定性假提供方。路由过程明确,引用证据会在本地核验;未经衡量,不会宣称质量、成本或延迟有所改善。
flowchart LR
A["TASK + CONTEXT"] --> B["Caller constraints"]
B --> C["Router"]
H["Benchmark history"] -. "weighted policy" .-> C
C --> D["Gemini or Anthropic"]
D --> E["Result"]
E --> F["Local quote check<br/>for extraction"]
E --> G["Optional benchmark evaluation"]
F --> G
你现在可以做什么
- 通过统一接口,将有明确边界的文本任务委派给 Gemini 或 Anthropic。
- 在选择提供方之前应用隐私、能力、成本和延迟限制;查看路由原因。
- 根据提供的上下文核验提取出的引用。
- 无需 API 密钥即可运行确定性的离线基准测试,也可以选择进行跨提供方的实时实验。
有何不同
同一循环负责衡量、路由、执行、验证证据并评估结果。默认策略为手动;使用 rules 和 benchmark_weighted 需要明确选择启用。历史评分不代表未来的质量或延迟。请参阅架构、方法和用例。
5 分钟快速上手
支持 Python 3.12 或 3.13,以及 uv。Gemini API 密钥和 Anthropic API 密钥彼此独立;可以配置其中一个或两个。Claude 订阅不包含 Anthropic API 额度。
git clone https://github.com/Jostophe-021/mcp-cross-model-delegation.git
cd mcp-cross-model-delegation
uv sync --locked --extra all --extra test
uv run crossmodel doctor
uv run crossmodel providers
uv run crossmodel bench run benchmarks/datasets/basic.jsonl
上方的基准测试使用 FakeProvider,无需 API 密钥。**仅用于软件验证——不是大模型性能测试结果。**请参阅四个离线示例。
试用真实提供方
只有在准备调用真实提供方时,才设置 GEMINI_API_KEY 或 ANTHROPIC_API_KEY。**调用实时 API 可能会产生提供方费用。**请先使用合成文本或可再分发的文本,并在运行实时基准测试前检查计划的调用次数。
在此代码仓库中,使用 uv sync --locked --extra gemini 或 uv sync --locked --extra anthropic 安装所需的适配器即可。基础软件包在离线基准测试中不需要任何提供方 SDK。发布到 PyPI 是单独的发布步骤;在 PyPI 发布得到验证之前,请从代码仓库安装。
在你自己的环境中设置 GEMINI_API_KEY 和/或 ANTHROPIC_API_KEY。.env.example 仅展示变量名;切勿提交 .env,也不要将密钥粘贴到命令、议题或聊天中。如果 Anthropic 是你的手动默认提供方,请设置 DEFAULT_PROVIDER=anthropic。运行 crossmodel serve,即可在 http://127.0.0.1:8000/mcp 开放可流式传输的 HTTP MCP 服务。由于该服务没有面向公众的客户端身份验证,因此会拒绝 MCP_HOST=0.0.0.0。
MCP 工具
| 工具 | 用途 |
|---|---|
delegate_task | 委派一项范围明确的任务(TASK),可选提供上下文(CONTEXT)、提供方、策略和约束。 |
extract_findings | 提取结构化发现,然后在本地的上下文(CONTEXT)中定位引文。 |
gemini_delegate_task, gemini_extract_findings | 使用 Gemini 和手动路由的 V0.1 兼容别名。 |
通用工具默认采用 policy="manual"。provider 依次使用 DEFAULT_PROVIDER、已配置时的 Gemini,以及第一个已配置的提供方。可选择使用 policy="rules" 或 policy="benchmark_weighted"。如需在 MCP 中进行加权路由,服务运营者需将 CROSSMODEL_HISTORY_PATH 设为基准测试生成的本地或公开 history.json 路径;调用方不能指定文件路径。约束包括 allowed_providers、privacy_mode、approved_providers、max_cost、max_latency、require_structured_output、require_evidence、fallback_allowed 和显式的 allow_unknown_cost。严格的成本或延迟上限会拒绝未知值。privacy_mode="local_only" 会以 NO_ELIGIBLE_PROVIDER 错误拒绝所有已纳入的外部提供方。
这些工具只接受调用方提供的文本。它们不会读取文件、电子邮件、Drive 或应用,不会执行代码,也不会在其他服务中采取行动。由调用方决定哪些内容可以离开本机。TASK 和 CONTEXT 保持为不同的 JSON 字段;CONTEXT 中的指令不受信任。这是缓解措施,而非安全保证。安全模型详细说明了相关限制。
说明路由
crossmodel route explain --policy rules --constraints '{"privacy_mode":"external_allowed"}'
crossmodel route explain --provider gemini --policy manual
crossmodel route explain --policy benchmark_weighted --history results/<run-id>/history.json
这不会发起 API 调用。它会打印符合条件和被拒绝的提供方、原因代码、回退链和评分组成部分。评分只使用已测得的通用指标;缺失值仍为 null。
基准测试
默认运行仅使用 FakeProvider;绝不会调用付费 API。它测试的是软件行为,而非大模型研究假设。
crossmodel bench run benchmarks/datasets/basic.jsonl
crossmodel bench report results/<run-id>
crossmodel bench generate /tmp/long.jsonl --size medium --seed 42
每次运行都会写入 manifest.json、results.jsonl、summary.json 和 history.json。结果默认不包含 TASK、CONTEXT 和响应;其中包含所用确切上下文的 SHA-256。数据集包含小型、经人工审核的合成算术、提取、证据、提示词注入、错误检测和长上下文任务。生成的长上下文会记录字符数、种子、生成器版本,以及在测量前设为 null 的 tokens: null。
进行实时实验时,请使用 --live --provider gemini --orchestrator anthropic(或你配置的提供方)。CLI 会在执行前打印提供方、条件、任务数、重复次数和计划的 API 调用数。使用 --repetitions N --shuffle --seed 42 可重复运行并随机排列条件顺序。并发数为 1。若没有单独提供带日期的定价来源,成本将显示为 unavailable;不会硬编码价格。--save-responses 会写入原始答案和发现,因此只能用于可再分发的数据。四种条件分别是 orchestrator_only、fixed_delegation、structured_delegation 和 routed_delegation;V1 测量每种条件的一次模型调用,不实现第二次由编排器进行的综合调用。请参阅基准测试格式和方法。
开发与构建
uv sync --locked --extra all --extra test
uv run pytest -q
uv run ruff check gateway.py server.py contracts.py routing.py execution.py evidence.py cli.py providers benchmarks tests
uv build
docker build -t mcp-cross-model-delegation:1.0.0 .
Docker 镜像不包含 API 密钥。在 Linux 下,docker run --rm --network host --env-file .env mcp-cross-model-delegation:1.0.0 会将 MCP 监听器限制在主机环回接口上。Docker Desktop 的主机网络行为因环境而异;使用本地 Python 更简单。发布工作流会发布 ghcr.io/jostophe-021/mcp-cross-model-delegation:1.0.0,并附带 OCI 元数据和 SPDX SBOM。可选的 OpenAI Secure MCP Tunnel 可让兼容的远程客户端在无需开放入站端口的情况下进行连接;此代码库不包含隧道标识符或凭据。
MCP Registry
版本 1.0.0 已被官方 MCP Registry 发布者接纳,标识为 io.github.Jostophe-021/mcp-cross-model-delegation。其声明的程序包是公开的 GHCR 镜像。Registry 仍是预览服务;依赖发现功能前,请先查看其当前列表。
研究
本项目旨在测试委派何时有帮助、何时没有帮助,以及会带来哪些权衡。请先阅读方法、研究路线图、合成数据集和基准测试格式、结果架构以及首次实况实验指南。仅发布非敏感的原始结果、摘要和局限性;引用版本时请使用 CITATION.cff。
构建你自己的版本
Fork → Provider / Policy / Evaluator / Dataset → Your derivative project
↘ Optional upstream contribution
扩展指南介绍了 V1 接口及其当前限制。贡献指南说明了如何使分支保持与上游同步。
分支和衍生项目
我们明确欢迎分支和改编。在 GitHub 上,如果你希望保留与上游的关联,请使用 Fork。根据 Apache-2.0 许可及适用的署名要求,也允许创建独立的衍生项目。欢迎将通用改进贡献给上游;分支可以自由发展。请保留适用的 LICENSE 和 NOTICE,标明你的更改,并在相关情况下引用原项目。
相关工作与支持
通用的跨模型委派早于本项目。相关工作页面链接到了现有的桥接工具、多提供商系统、路由和评估工具。有关使用和研究的问题,请参阅 SUPPORT.md 和 Discussions;请通过私密报告渠道报告漏洞。
本项目并非
- 声称多模型委派总是有帮助,或某一家提供商普遍优于其他提供商。
- 一个自主 Agent 平台、独立的生产安全边界,或提示词注入防护保证。
- OpenAI、Anthropic 或 Google 的官方产品。
本项目未启用自定义遥测。未知的令牌用量、成本和质量仍然未知。请参阅研究路线图、更新日志、贡献指南、Discussions和引用元数据。代码采用 Apache-2.0 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。