挑MCP工具时,一张看起来精确的性能表很容易让人安心。但如果不知道测的是哪个版本、哪种任务、是否包含模型推理和网络等待,0.8毫秒和15毫秒几乎没有可比性。更实用的第一张表,是记录工具能够做什么、它需要什么权限、依据在哪里。
10月22日Agent Skills标准捐赠AAIF的消息,把可移植操作知识与开放工具生态又放到同一张桌面上。选型时应分别检查技能说明、MCP服务实现和宿主权限,不能因为一份文档能跨平台加载,就推断底层工具可以安全运行。
先写出要完成的具体动作
例如“读取指定仓库最近一次构建日志”,比“支持DevOps”更适合比较。把必需能力和可选能力分开,缺少必需能力直接淘汰;可选能力多不代表更好,因为每个额外入口都会增加说明、权限与维护成本。
证据也有强弱
协议规范能证明字段含义,源码和版本说明能证明实现位置,本地测试能证明某个环境中的行为。宣传截图只能作为线索。Registry记录提供发现入口,不能代替你审查软件包、维护状态和运行权限。
图中三列故意没有总分。一条高权限工具即使功能多,也可能不适合只读排障;把这些约束压成一个星级,会隐藏真正的选择理由。
用筛选器保留硬约束
代码里的候选工具和权限是教学数据,不代表真实产品排名。运行后只有满足必需能力、无写权限且有证据位置的候选会留下。
import assert from 'node:assert/strict'; const candidates = [ {name:'demo-reader',capabilities:['logs'],permissions:['read'],evidence:'source@demo-a'}, {name:'demo-admin',capabilities:['logs'],permissions:['read','write'],evidence:'source@demo-b'}, {name:'demo-unknown',capabilities:['logs'],permissions:['read'],evidence:''} ]; function eligible(x) { return x.capabilities.includes('logs') && !x.permissions.includes('write') && Boolean(x.evidence); } assert.deepEqual(candidates.filter(eligible).map(x=>x.name), ['demo-reader']); assert.equal(eligible({...candidates[0],capabilities:[]}), false); console.log('selection constraints: ok');本地运行输出:
selection constraints: ok性能比较放到下一轮
确定可用集合以后,再定义相同输入、并发、输出上限、冷暖缓存与采样次数。每份结果附原始输出和失败样本。测试没跑,就保留空格,不用“业内平均”填满它。
对独立开发者,最后还要问升级成本:是否能固定版本、许可证是否匹配、出问题能否退回旧版。这些信息往往比一个缺少条件的QPS更能决定长期使用体验。
适用范围与未测部分
只验证硬约束筛选,没有安装或横评任何真实MCP产品;图表中的能力和权限是示例字段,用于说明筛选方法。
参考资料
- MCP Registry publish quickstart
- Agent Skills donation to AAIF(2026-10-22)