使用说明
mcp数据检查
根据已知问题和答案评估MCP服务器的准确性。
安装
pip install mcp-data-check
或者从源代码安装:
pip install -e .
用法
Python API
人为(默认)
from mcp_data_check import run_evaluation
results = run_evaluation(
questions_filepath="questions.csv",
api_key="sk-ant-...",
server_url="https://mcp.example.com/sse"
)
print(f"Pass rate: {results['summary']['pass_rate']:.1%}")
print(f"Passed: {results['summary']['passed']}/{results['summary']['total']}")
开放人工智能
from mcp_data_check import run_evaluation
results = run_evaluation(
questions_filepath="questions.csv",
api_key="sk-...",
server_url="https://mcp.example.com/sse",
provider="openai",
model="gpt-4o"
)
命令行
人为(默认)
mcp-data-check https://mcp.example.com/sse -q questions.csv -k YOUR_API_KEY
开放人工智能
mcp-data-check https://mcp.example.com/sse -q questions.csv -p openai -m gpt-4o -k YOUR_API_KEY
基线比较(MCP与无工具)
# Anthropic
mcp-data-check https://mcp.example.com/sse -q questions.csv --compare
# OpenAI
mcp-data-check https://mcp.example.com/sse -q questions.csv -p openai -m gpt-4o --compare
每个问题都运行 --repeats 每种模式的次数(默认值5)。通过/失败由多数票决定。结果保存到 ./results/comparison_<timestamp>.json.
选项:
-q, --questions:问题路径CSV文件(必填)-p, --provider:要使用的LLM提供程序:anthropic(默认)或openai-k, --api-key:所选提供程序的API密钥(默认为ANTHROPIC_API_KEY或OPENAI_API_KEY任何人)-o, --output:结果输出目录(默认:./results)-m, --model:用于评估的模型(默认值:claude-sonnet-4-20250514;使用例如。gpt-4oOpenAI)-n, --server-name:MCP服务器的名称(默认值:mcp-server)-r, --repeats:每个问题的运行次数(默认值:5;多数票决定通过/失败)-v, --verbose:打印详细进度--compare:在有和没有MCP服务器的情况下运行每个问题,并报告增量
基线比较(Python API)
人类
from mcp_data_check import Evaluator
evaluator = Evaluator(server_url="https://mcp.example.com/sse", api_key="sk-ant-...")
questions = evaluator.load_questions("questions.csv")
comparison = evaluator.run_comparison(questions, repeats=5, verbose=True)
print(f"MCP pass rate: {comparison.mcp_pass_rate:.1%}")
print(f"Baseline pass rate: {comparison.baseline_pass_rate:.1%}")
print(f"Delta: {comparison.mcp_pass_rate - comparison.baseline_pass_rate:+.1%}")
evaluator.save_comparison(comparison, "./results")
开放人工智能
from mcp_data_check import Evaluator
evaluator = Evaluator(
server_url="https://mcp.example.com/sse",
api_key="sk-...",
provider="openai",
model="gpt-4o"
)
questions = evaluator.load_questions("questions.csv")
comparison = evaluator.run_comparison(questions, repeats=5, verbose=True)
print(f"MCP pass rate: {comparison.mcp_pass_rate:.1%}")
print(f"Baseline pass rate: {comparison.baseline_pass_rate:.1%}")
CSV格式问题
CSV文件的问题必须有三列:
| 列 | 说明 |
|---|---|
question |
向MCP服务器提出的问题 |
expected_answer |
与预期答案进行比较 |
eval_type |
评价方法: numeric, string,或 llm_judge |
例子:
question,expected_answer,eval_type
How many grants were awarded in 2023?,1234,numeric
What organization received the most funding?,NIH,string
Explain the grant distribution,Most grants went to research institutions...,llm_judge
评估类型
- 数字的:从回复中提取数字,并与5%的容差进行比较
- 字符串:检查响应中是否出现预期字符串(不区分大小写)
- llm_judge:使用所选模型从语义上评估响应是否正确
返回值
这 run_evaluation 函数返回一个字典:
{
"summary": {
"total": 10,
"passed": 8,
"failed": 2,
"pass_rate": 0.8,
"by_eval_type": {
"numeric": {"total": 5, "passed": 4},
"string": {"total": 3, "passed": 3},
"llm_judge": {"total": 2, "passed": 1}
}
},
"results": [
{
"question": "...",
"expected_answer": "...",
"eval_type": "numeric",
"model_response": "...",
"passed": True,
"details": {...},
"error": None,
"time_to_answer": 2.35,
"tools_called": [
{
"tool_name": "get_grants",
"server_name": "mcp-server",
"input": {"year": 2023}
}
]
},
...
],
"metadata": {
"server_url": "https://mcp.example.com/sse",
"model": "claude-sonnet-4-20250514",
"provider": "anthropic",
"timestamp": "20250127_143022"
}
}
结果字段
每个结果 results 数组包含:
| 字段 | 描述 |
|---|---|
question |
最初提出的问题 |
expected_answer |
CSV的预期答案 |
eval_type |
使用的评估方法 |
model_response |
模型的完整响应文本 |
passed |
评估是否通过 |
details |
其他评估细节 |
error |
如果评估失败,则显示错误消息 |
time_to_answer |
重复的平均响应时间(秒) |
tools_called |
响应期间调用的MCP工具列表 |
repeat_count |
问题运行的次数 |
repeat_pass_count |
通过的运行次数(超出 repeat_count) |
这 tools_called 数组包含以下对象:
tool_name:所调用的MCP工具的名称server_name:提供该工具的MCP服务器的名称input:传递给工具的参数
需求
- Python 3.10+
- 您选择的提供商的API密钥(Anthropic或OpenAI)
