mcp-lint v0.2 可识别词序交换、大小写或分隔符差异,以及编辑距离较近的工具名称。对近似拼写,还要求参数结构重叠或描述高度相似,以减少误报。
缺少 description,会让你的 Agent 犹豫。工具名称太过相似,则会让它信心十足地调用错误的工具——而后一种失败更棘手。
这句话不是我说的,而是 arobakid 上周在我最初那篇 mcp-lint 文章下的评论。他在 Elva 工作,每天都在给 OpenAPI 到 MCP 的名称转换结果打分——这是他在生产环境中遇到的痛点,不是假想出来的问题。他提出,希望增加一条检测近似重复工具名称的规则,还主动报名测试。所以,v0.2 基本上就是为他的这条规则而做的。
mcp-lint 现在会检查 tools/list 中的每一对工具,标记容易混淆的名称组合:
这些限制条件很重要:只看编辑距离,会产生大量误报,所以这条规则必须得到第二个信号的支持,才会触发。
mcp-lint audit — 2 tool(s), design score: 88/100
search_items (score 88/100)
- [near-duplicate-names] near-duplicate of 'item_search' (same words, different order/plural) (-12)
依然只依赖标准库,依然只有一个文件:
git clone https://github.com/hahahahahahahahah6/mcp-lint
cd mcp-lint
python3 mcp_lint.py audit tools.json
tools.json 可以是一个直接包含工具定义的数组,也可以是 tools/list 的 JSON-RPC 返回结果。23/23 项冒烟测试全部通过,其中 9 项针对这条新规则。
有一点需要坦诚说明:这个项目没有 PyPI 包——PyPI 上的 mcp-lint 名称属于另一个无关的项目,因此请从 GitHub 安装。
再次感谢 arobakid 提出这条规则,并报名成为它的第一位测试者。如果你维护的 MCP server 有不少工具,运行一次 audit 吧——你可能会发现,你的 Agent 一直都在两个名称几乎相同的工具之间做选择。
GitHub:https://github.com/hahahahahahahahah6/mcp-lint
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。