Token导航 LogoToken导航TokenDH.com
MCP Fallback logo
AI代理stdio官方级别未说明来源级核验

MCP Fallback

MCP Server

一个用于评估AI代理在工具故障时通过切换到等效替代服务来恢复能力的基准测试套件,适用于多服务切换场景下的智能体性能验证。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
PythonClaudeAI代理Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

33k0

提供方

33k0

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install openai anthropic google-generativeai

详细介绍

MCP回退基准

一个基准套件,用于评估AI代理通过切换到等效的替代服务从工具故障中恢复的能力。为伯克利天空实验室建造。

概述

此基准测试语言模型在使用MCP(模型上下文协议)工具时是否可以自主处理服务故障。当一个服务发生故障时,模型能否识别故障并切换到等效的替代服务来完成任务?

核心机制

  1. 模型接收任务(例如,“向通用通道发送消息”)
  2. 它可以访问两个等效服务(例如Slack+Discord)的工具
  3. 它首先尝试的任何服务都会失败,并出现“service_SHUTDOWN”错误
  4. 成功=模型识别故障并使用OTHER服务完成任务
  5. 失败=模型放弃、循环或返回注释而不是切换

项目结构

SkyLabsProjectPreliminaries/
├── harness/
│   └── runner.py              # Main benchmark runner (supports OpenAI, Anthropic, Google)
├── mock_servers/
│   ├── food_delivery_api.py   # UberEats + DoorDash (legacy paired server)
│   ├── github_api.py          # GitHub MCP mock (20 tools)
│   ├── gitlab_api.py          # GitLab MCP mock (9 tools)
│   ├── brave_search_api.py    # Brave Search mock (2 tools)
│   ├── exa_search_api.py      # Exa Search mock (9 tools)
│   ├── slack_api.py           # Slack MCP mock (8 tools)
│   ├── discord_api.py         # Discord MCP mock (10 tools)
│   ├── google_maps_api.py     # Google Maps mock (7 tools)
│   └── mapbox_api.py          # Mapbox mock (10 tools)
├── error_injection/
│   └── controller.py          # Error injection + server pairing logic
├── scenarios/
│   └── prompts.json           # 15 unique test scenarios (easy/medium/hard)
├── traces/                    # Output directory for conversation traces
└── README.md

支持的供应商和型号

该基准支持三个AI提供商:

提供者默认模型环境变量
OpenAIgpt-5.2OPENAI_API_KEY
Anthropicclaude-sonnet-4-5-20250929ANTHROPIC_API_KEY
谷歌gemini-3.0-flashGOOGLE_API_KEY

服务器对及其选择原因

每个服务器对都是根据官方提供的真实MCP服务器模式选择的 模型上下文协议服务器存储库.

1.送餐服务:UberEats+DoorDash

目的: 具有对称工具集的传统基线对。

UberEatsDoorDash
ubereats_logindoordash_authenticate
ubereats_search_restaurantsdoordash_find_restaurants
ubereats_get_menudoordash_view_menu
ubereats_place_orderdoordash_submit_order
ubereats_get_order_statusdoordash_check_order_status

测试内容: 纯回退-两个服务具有相同的功能。模型能否在其他服务上找到等效方法?

______________________________________________________________________

2.代码托管:GitHub+GitLab

目的: 具有非对称工具数量的真实MCP服务器。

GitHub(20个工具)GitLab(9个工具)
全面回购管理核心回购操作
问题、PR、分支问题、MR、分支
代码/问题/用户搜索仅存储库搜索
分叉、合并、注释基本操作

测试内容:

  • 当目标服务有FEWER工具时回退
  • 当GitLab上不存在某些GitHub功能时,模型必须进行调整
  • 测试场景:创建问题、分叉仓库、创建PR、搜索仓库

______________________________________________________________________

3.网络搜索:Brave+Exa

目的: 最小与功能丰富的搜索API。

Brave(2个工具)Exa(9个工具)
brave_web_searchweb_search_exa
brave_local_searchget_code_context_exa
company_research_exa
deep_search_exa
people_search_exa
...以及更多

测试内容:

  • 当目标服务有更多工具时回退
  • 模型必须发现Exa的专用工具(代码搜索、公司研究)
  • 测试场景:一般搜索、代码示例、公司研究

______________________________________________________________________

4.团队信息:松弛+不和谐

目的: 双方都有独特功能的类似服务。

Slack(8工具)Discord(10工具)
slack_post_messagesend_message
slack_list_channelslist_channels
slack_add_reactionadd_reaction
slack_get_channel_historyread_messages
slack_reply_to_thread
edit_message
delete_message
send_private_message

测试内容:

  • 不对称功能(Discord可以编辑/删除/DM,Slack有线程)
  • 模型必须识别回退服务上何时不存在某个功能
  • 测试场景:发送消息、添加反应、发送DM

______________________________________________________________________

5.地图和导航:谷歌地图+Mapbox

目的: 标准制图与地理空间计算。

谷歌地图(7个工具)Mapbox(10个工具)
maps_geocodemapbox_geocode
maps_directionsmapbox_directions
maps_search_placesmapbox_search_places
maps_distance_matrixmapbox_matrix
maps_elevation
mapbox_bearing
mapbox_isochrone
mapbox_distance (离线)

测试内容:

  • 这两个服务都有等效的核心工具(方向、地理编码、地点)
  • 测试场景:方向、地理编码、地点搜索

难度等级

每个场景都有三个难度级别:

级别描述示例提示
简单明确命名这两个服务+切换提示“向普通用户发送消息。使用Slack或Discord。如果其中一个失败,请切换到另一个。”
中等命名这两个服务,没有切换提示“向普通用户发送消息。使用Slack或Discord。”
困难通用任务,无服务提示“向通用发送消息。”

15种测试场景

类别场景测试
食品配送food_delivery_order下订单
food_delivery_status检查订单状态(订单ID 1001)
代码托管code_hosting_create_issue创建错误报告
code_hosting_fork_repo分叉存储库
code_hosting_create_pr创建拉取/合并请求
code_hosting_search_repos搜索存储库
网络搜索web_search_general一般网络搜索
web_search_code查找代码示例
web_search_company公司调研
团队消息team_messaging_send发送频道消息
team_messaging_react在消息中添加反应
team_messaging_dm发送直接消息
地图maps_directions获取行车路线
maps_geocode获取纬度/经度坐标
maps_places搜索附近的地方

运行基准

先决条件

pip install openai anthropic google-generativeai

为要使用的提供程序设置API密钥:

# For OpenAI
export OPENAI_API_KEY="sk-..."

# For Anthropic (Claude)
export ANTHROPIC_API_KEY="sk-ant-..."

# For Google (Gemini)
export GOOGLE_API_KEY="AIza..."

基本用法

使用OpenAI运行完整的基准测试(默认):

python harness/runner.py

与Anthropic Claude一起跑步:

python harness/runner.py --provider anthropic

使用Google Gemini跑步:

python harness/runner.py --provider google

选项

# Test a specific model
python harness/runner.py --provider openai --model gpt-4o
python harness/runner.py --provider anthropic --model claude-opus-4-20250514
python harness/runner.py --provider google --model gemini-2.0-pro

# Run only one scenario
python harness/runner.py --scenario code_hosting_create_issue

# Run all scenarios for one server pair
python harness/runner.py --server maps

# Run only hard difficulty
python harness/runner.py --level hard

# Show detailed tool call traces
python harness/runner.py --verbose

# Save conversation traces to files
python harness/runner.py --trace ./traces

# Combine options
python harness/runner.py --provider anthropic --server team_messaging --level medium --verbose

输出

基准打印一个记分卡,显示:

  • 按难度级别划分的通过/失败率
  • 按服务器对划分的通过/失败率
  • 每个场景的详细结果

输出示例:

======================================================================
  SCORECARD - claude-sonnet-4-5-20250929 (anthropic)
======================================================================

  BY DIFFICULTY LEVEL:
  Level           Pass  Total   Accuracy
  ────────────────────────────────────
  EASY               12     15      80.0%
  MEDIUM              9     15      60.0%
  HARD                5     15      33.3%
  ────────────────────────────────────
  AVERAGE            26     45      57.8%

  BY SERVER PAIR:
  Server                Pass  Total   Accuracy
  ────────────────────────────────────────────
  code_hosting            8     12      66.7%
  food_delivery           5      6      83.3%
  maps                    4      9      44.4%
  team_messaging          5      9      55.6%
  web_search              4      9      44.4%

如何衡量成功

跑步被标记 通过 如果:

  1. 该模型称为服务a(或B)中的工具
  2. 该工具返回了一个 SERVICE_SHUTDOWN 错误
  3. 然后,该模型调用服务B(或A)上的等效工具
  4. 该工具返回了带有预期密钥的成功结果

跑步被标记 失败 如果:

  • 模型出错后放弃
  • 模型返回注释,而不是尝试其他工具
  • 无交换服务的模型循环
  • 模型崩溃或达到20圈限制

建筑细部

错误注入

ErrorInjectedAPI 包装器拦截工具调用:

# First call to ANY of these methods fails
fail_methods = ["slack_slack_post_message", "discord_send_message"]

# If model calls slack first -> error
# Then discord works fine (and vice versa)

每个场景都有保证的错误注入——所有等效方法对都包含在 fail_methods 列表。

服务器配对

PairedServerAPI 类结合了两个单独的API:

# GitHub methods become: github_create_issue, github_fork_repository, ...
# GitLab methods become: gitlab_create_issue, gitlab_fork_repository, ...
# Model sees ALL tools from both services

多提供商支持

运行器会自动将工具模式转换为每个提供程序的格式:

  • OpenAI:使用函数调用 tools 参数
  • Anthropic:转换为克劳德的 tool_use 格式与 input_schema
  • 谷歌:转换为双子座 FunctionDeclaration 格式

模拟服务器

服务器是基于真实MCP模式的模拟,但返回模拟数据。他们不会对GitHub、Slack等进行实际的API调用。

现有测试数据:

  • 外卖:订单1001(UberEats)和1002(DoorDash)用于状态检查
  • 代码托管:存储库 acme-corp/web-app 存在问题/PR创建

联系

斯里·瓦萨 伯克利天空实验室

目录标签

目录标签

PythonClaudeAI代理AI基准测试本地部署服务容错多工具切换智能体评估MCP协议

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP