MCP技能评估3步跑通:准确率、耗时、工具调用次数一次看全
【免费下载链接】skillsPublic repository for Agent Skills项目地址: https://gitcode.com/GitHub_Trending/skills3/skills
你刚写完一个MCP服务器,上线前最该问的不是"能不能跑",而是"它到底答得准不准"。skills3/skills 项目里的 MCP 技能评估脚本就是干这个的:拿一批问题考你的服务器,自动判分、出报告。
评估脚本在哪,文件长什么样
说人话:MCP(Model Context Protocol,大模型调用外部工具的协议)技能评估,就是让 Claude 只挂你服务器的工具去答题,答完自动对答案、算分。核心脚本在 skills/mcp-builder/scripts/evaluation.py,出题规范和参数细则在 skills/mcp-builder/reference/evaluation.md。
评估文件是个 XML,根节点 evaluation,里面放若干 qa_pair,每题一个 question 加一个 answer:
<evaluation> <qa_pair> <question>2024年1月提交issue最多的用户是谁?给用户名。</question> <answer>alice_dev</answer> </qa_pair> </evaluation>出题有讲究:题目只读、互相独立,答案要是能直接比对的单个值,过段时间问答案也不能变。数量上建议 10 道,太少看不出规律,太多跑一轮又费钱。为什么要出难题?模型靠关键词一搜就中的题,测不出工具的成色。好题是多跳的,先查 A,再靠 A 找 B,最后从 B 里算出答案。
三步把评估跑起来
- 先把仓库拉下来,进到 mcp-builder 目录:
git clone https://gitcode.com/GitHub_Trending/skills3/skills cd skills/skills/mcp-builder- 装依赖并配好 key,评估靠它驱动 Claude 答题:
pip install -r scripts/requirements.txt export ANTHROPIC_API_KEY=你的key- 跑评估。主线走 stdio,脚本会自己把服务器起起来,你不用手动开。加 -o 能把报告存成文件,默认模型是 claude-3-7-sonnet-20250219,想换就加 -m:
python scripts/evaluation.py \ -t stdio -c python -a my_mcp_server.py \ -o report.md my_evaluation.xml如果服务器是 SSE(Server-Sent Events,服务端单向推流)或 HTTP 部署,把 -t 换成 sse 或 http,再用 -u 传地址、-H 传鉴权头,服务器得提前自己起好。
报告里的数字怎么读
换个角度,把指标翻译成你关心的事:
- 你想知道"答对几道"→ 系统拿模型答案和标准答案做字符串比对,每题 0 或 1 分,报告给总准确率
- 你想知道"每题花了多久"→ 从发题到交出答案全程计时,报告给每题耗时和平均耗时
- 你想知道"调了多少次工具"→ 每次调用都记账,报告给平均每题调用次数和总调用次数
- 你想知道"工具哪里不好用"→ 每题答完模型必须交一段工具反馈,点名描述不清、参数没文档、返回太多的地方
每道题在报告里还会单列:预期答案、实际答案、对错标记、耗时、调用明细,外加模型自述的解题思路。
跑挂或分数低,先查这三处
实操的时候你会发现,问题基本逃不出三类:
- 题目跑到一半卡很久甚至超时 → 多半是工具单次返回数据太多,把上下文塞爆了 → 给工具加 limit 和分页,再用 -m 换个更强的模型。
- 明明"答对了"却判零分,答案就差个句号 → 判分是严格字符串比对,格式差一点就算错 → 在题干里把输出格式写死,比如"用 YYYY/MM/DD""只答 A/B/C/D"。
- stdio 模式压根连不上 → 多半是 -c 和 -a 拼的不是能直接启动的命令,或环境变量没透传 → 先手动跑同一命令确认能起,再用 -e 逐个补环境变量。
测一次不是目的,测→改→再测才是。改完工具描述后,用同一份评估文件重跑一遍,把两轮 report.md 的准确率摆一起看:涨了合进去,没涨接着改。
【免费下载链接】skillsPublic repository for Agent Skills项目地址: https://gitcode.com/GitHub_Trending/skills3/skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考