MCP-Bench:通过MCP服务器使用大型语言模型(LLM)代理进行复杂现实世界任务的基准测试工具
   ](https://www.python.org/downloads/) 
概述
MCP-Bench是一个全面的评估框架,旨在通过模型上下文协议(MCP)来评估大型语言模型(LLMs)在工具使用场景中的能力。该基准提供了一个端到端的流程,用于评估不同大型语言模型在发现、选择和利用工具解决实际任务方面的有效性。
新闻
- \[2025-09\] MCP-Bench 被接受为2025年NeurIPS大会上关于智能体扩展环境的研讨会论文。
排行榜
| 排名 | 模型 | 总体得分 | |||||
|---|---|---|---|---|---|---|---|
| 1 | GPT-5 | 0.749 | |||||
| 2 | o3 | 0.715 | 翻译为中文是: | 2 | o3 | 0.715 | (注:此句在中文中无实际意义,仅为原文的直接翻译,其中“o3”可能是一个特定术语或代码,在中文语境下保持原样) |
| 3 | gpt-oss-120b | 0.692 | 翻译为中文是: | 3 | gpt-oss-120b(模型名称) | 0.692(可能是指某种评分或指标) | |
| 4 | gemini-2.5-pro | 0.690 | (翻译为中文) | 4 | 双子座-2.5专业版 | 0.690 | |
| 5 | claude-sonnet-4 | 0.681 | |||||
| 6 | qwen3-235b-a22b-2507 | 0.678 | |||||
| 7 | glm-4.5 | 0.668 | 翻译为中文为: | 7 | glm-4.5 | 0.668 | (注:此句为数据或表格中的条目,直接翻译为中文保持原样,因为“glm-4.5”和“0.668”可能是特定的名称或数值,没有直接的中文对应翻译。) |
| 8 | gpt-oss-20b | 0.654 | |||||
| 9 | kimi-k2 | 0.629 | |||||
| 10 | qwen3-30b-a3b-instruct-2507 | 0.627 | |||||
| 11 | gemini-2.5-flash-lite | 0.598 | 翻译为中文是: | 11 | 双子座-2.5快速闪存轻量版 | 0.598 | |
| 12 | GPT-4o | 0.595 | |||||
| 13 | gemma-3-27b-it | 0.582 | (翻译为中文) | 13 | Gemma-3-27B-IT | 0.582 | |
| 14 | llama-3-3-70b-instruct | 0.558 | |||||
| 15 | gpt-4o-mini | 0.557 | 翻译为中文是: | 15 | GPT-4o-Mini | 0.557 | |
| 16 | mistral-small-2503 | 0.530 | |||||
| 17 | llama-3-1-70b-instruct | 0.510 | |||||
| 18 | nova-micro-v1 | 0.508 | 翻译为中文是: | 18 | nova微型版本v1 | 0.508 | |
| 19 | llama-3-2-90b-vision-instruct | 0.495 | |||||
| 20 | llama-3-1-8b-instruct | 0.428 |
*总评分为所有评估维度上的平均表现,包括基于规则的模式理解、由大型语言模型(以o4-mini作为评判模型)评判的任务完成度、工具使用以及规划有效性。评分是针对单服务器和多服务器设置的平均值。*
快速入门
安装
- 克隆仓库
git clone https://github.com/accenture/mcp-bench.git
cd mcp-bench- 安装依赖项
conda create -n mcpbench python=3.10
conda activate mcpbench
cd mcp_servers
# Install MCP server dependencies
bash ./install.sh
cd ..- 设置环境变量
# Create .env file with API keys
# Default setup uses both OpenRouter and Azure OpenAI
# For Azure OpenAI, you also need to set your API version in file benchmark_config.yaml (line205)
# For OpenRouter-only setup, see "Optional: Using only OpenRouter API" section below
cat > .env .env << EOF
OPENROUTER_API_KEY=your_openrouterkey_here
EOF- 修改代码以通过OpenRouter访问Azure模型:
编辑 llm/factory.py 并且注释掉Azure部分(第69-101行),然后通过OpenRouter添加Azure模型:
# Comment out or remove the Azure section (lines 69-109)
# if os.getenv("AZURE_OPENAI_API_KEY") and os.getenv("AZURE_OPENAI_ENDPOINT"):
# configs["o4-mini"] = ModelConfig(...)
# ...
# Add Azure models through OpenRouter (in the OpenRouter section around line 106)
if os.getenv("OPENROUTER_API_KEY"):
# Add OpenAI models via OpenRouter
configs["gpt-4o"] = ModelConfig(
name="gpt-4o",
provider_type="openrouter",
api_key=os.getenv("OPENROUTER_API_KEY"),
base_url="https://openrouter.ai/api/v1",
model_name="openai/gpt-4o"
)
configs["gpt-4o-mini"] = ModelConfig(
name="gpt-4o-mini",
provider_type="openrouter",
api_key=os.getenv("OPENROUTER_API_KEY"),
base_url="https://openrouter.ai/api/v1",
model_name="openai/gpt-4o-mini"
)
configs["o3"] = ModelConfig(
name="o3",
provider_type="openrouter",
api_key=os.getenv("OPENROUTER_API_KEY"),
base_url="https://openrouter.ai/api/v1",
model_name="openai/o3"
)
configs["o4-mini"] = ModelConfig(
name="o4-mini",
provider_type="openrouter",
api_key=os.getenv("OPENROUTER_API_KEY"),
base_url="https://openrouter.ai/api/v1",
model_name="openai/o4-mini"
)
configs["gpt-5"] = ModelConfig(
name="gpt-5",
provider_type="openrouter",
api_key=os.getenv("OPENROUTER_API_KEY"),
base_url="https://openrouter.ai/api/v1",
model_name="openai/gpt-5"
)
# Keep existing OpenRouter models...这样所有模型都将通过OpenRouter的统一API进行访问。
MCP 服务器
MCP-Bench 包含 28 种不同的 MCP 服务器:
- BioMCP(注:这是一个专有名词或特定术语,直接翻译为中文可能无法准确传达其含义,因此通常保留原样。如果“BioMCP”有特定的中文名称或解释,应使用该名称或解释。在没有特定中文名称的情况下,可简单理解为“生物MCP(某种生物技术或产品)”,但具体含义需根据上下文确定。) - 生物医学研究数据、临床试验和健康信息
- 占卜书签(或通过书籍占卜) - 《易经》占卜、六十四卦与神秘指引
- 征文启事/论文征集 - 学术会议投稿及征稿通知
- 汽车价格评估器 - 车辆估值与汽车市场分析
- 上下文7 - 项目背景管理与文档编制服务
- DEX辣椒粉(或DEX红椒粉) - 加密货币DeFi(去中心化金融)分析及去中心化交易所数据
- FruityVice(可译为“水果之敌”或根据具体语境意译为“果味反派”等,但通常直接保留原名以体现其特色) - 全面的水果营养信息和饮食数据
- 游戏趋势 - 游戏行业统计数据与趋势分析
- 谷歌地图 - 位置服务、地理编码和地图功能
- 巨大图标 - 图标搜索、管理和设计资源
- Hugging Face - 机器学习模型、数据集和人工智能能力
- 数学MCP(注:MCP在此处可能是一个特定上下文中的缩写或术语,没有具体上下文难以给出确切翻译,但一般可理解为与数学相关的某个概念或课程) - 数学计算和计算运算
- 医疗计算器 - 临床计算工具和医学公式
- 大都会艺术博物馆 - 艺术收藏数据库和博物馆信息
- 电影推荐器 - 电影推荐和电影元数据
- NASA数据 - 空间任务数据和天文信息
- 国家公园 - 美国国家公园信息及游客服务
- NixOS(注:NixOS是一个基于Nix包管理器的Linux发行版,直接翻译为“Nix操作系统”或保留原名“NixOS”均可,具体根据语境和读者熟悉度来选择) - 软件包管理和系统配置工具
- OKX交易所 - 加密货币交易数据和市场信息
- OpenAPI Explorer(开放API浏览器/探索器) API规范探索与测试工具
- 开放式网络情报(OSINT) - 开源情报收集与分析
- 论文搜索 - 跨多个研究数据库进行学术论文搜索
- Reddit(一个社交新闻聚合网站) - 社交媒体内容和社区讨论
- 科学计算 - 高级数学计算和数据分析
- Time MCP(注:MCP在此处可能代表某个特定的缩写或术语,根据上下文可能有所不同,但直接翻译为“时间MCP”可能不够准确,具体含义需结合上下文确定。若MCP无特定含义,则保持原样翻译。) - 日期、时间工具以及时区转换
- 单位转换器 - 不同单位系统之间的测量转换
- 天气数据 - 天气预报和气象信息
- 维基百科 - 百科全书内容的搜索与检索
项目结构
mcp-bench/
├── agent/ # Task execution agents
│ ├── __init__.py
│ ├── executor.py # Multi-round task executor with retry logic
│ └── execution_context.py # Execution context management
├── benchmark/ # Evaluation framework
│ ├── __init__.py
│ ├── evaluator.py # LLM-as-judge evaluation metrics
│ ├── runner.py # Benchmark orchestrator
│ ├── results_aggregator.py # Results aggregation and statistics
│ └── results_formatter.py # Results formatting and display
├── config/ # Configuration management
│ ├── __init__.py
│ ├── benchmark_config.yaml # Benchmark configuration
│ └── config_loader.py # Configuration loader
├── llm/ # LLM provider abstractions
│ ├── __init__.py
│ ├── factory.py # Model factory for multiple providers
│ └── provider.py # Unified provider interface
├── mcp_modules/ # MCP server management
│ ├── __init__.py
│ ├── connector.py # Server connection handling
│ ├── server_manager.py # Multi-server orchestration
│ ├── server_manager_persistent.py # Persistent connection manager
│ └── tool_cache.py # Tool call caching mechanism
├── synthesis/ # Task generation
│ ├── __init__.py
│ ├── task_synthesis.py # Task generation with fuzzy conversion
│ ├── generate_benchmark_tasks.py # Batch task generation script
│ ├── benchmark_generator.py # Unified benchmark task generator
│ ├── README.md # Task synthesis documentation
│ └── split_combinations/ # Server combination splits
│ ├── mcp_2server_combinations.json
│ └── mcp_3server_combinations.json
├── utils/ # Utilities
│ ├── __init__.py
│ ├── collect_mcp_info.py # Server discovery and tool collection
│ ├── local_server_config.py # Local server configuration
│ └── error_handler.py # Error handling utilities
├── tasks/ # Benchmark task files
│ ├── mcpbench_tasks_single_runner_format.json
│ ├── mcpbench_tasks_multi_2server_runner_format.json
│ └── mcpbench_tasks_multi_3server_runner_format.json
├── mcp_servers/ # MCP server implementations (28 servers)
│ ├── api_key # API keys configuration file
│ ├── commands.json # Server command configurations
│ ├── install.sh # Installation script for all servers
│ ├── requirements.txt # Python dependencies
│ └── [28 server directories]
├── cache/ # Tool call cache directory (auto-created)
├── run_benchmark.py # Main benchmark runner script
├── README.md # Project documentation
├── .gitignore # Git ignore configuration
└── .gitmodules # Git submodules configuration引用
如果您在研究中使用了MCP-Bench,请引用:
@article{wang2025mcpbench,
title={MCP-Bench: Benchmarking Tool-Using LLM Agents with Complex Real-World Tasks via MCP Servers},
author={Wang, Zhenting and Chang, Qi and Patel, Hemani and Biju, Shashank and Wu, Cheng-En and Liu, Quan and Ding, Aolin and Rezazadeh, Alireza and Shah, Ankit and Bao, Yujia and Siow, Eugene},
journal={arXiv preprint arXiv:2508.20453},
year={2025}
}明星历史

致谢
- 建立在……之上 模型上下文协议 由Anthropic开发
- 感谢所有使用过的开源MCP服务器实现
