网易首页 > 网易号 > 正文 申请入驻

15755/15977:一个开源工具给MCP服务器做全身体检

0
分享至

一个Agent靠不靠谱,取决于它调用的工具。但大多数MCP服务器,从来没被任何东西检查过。


工具没写描述,永远不会被选中。参数写成 str = None,反而拒绝了它自己声明的默认值。写入工具回一句"Successfully wrote",实际上什么都没写。

mcp-doctor 就是为了抓这些坑而生的。它已经长成一个覆盖MCP服务器完整生命周期的开源工具:上线前、每个PR里、以及运行中的Agent内部。

1. 上线之前

装法很简单:pip install mcp-server-lint,然后 mcp-doctor path/to/your/server。

Lint会读取Python、TypeScript和Go源码,不运行代码,把质量和安全分开打分。这样做的用意很直接:一个文档写得漂亮的服务器,没法用一个混合分数把安全漏洞藏起来。

质量项覆盖的是那些真正会让Agent翻车的问题:工具缺描述、参数没文档、None默认值拒绝null、stdio上乱写stdout、两个工具的描述让人分不清区别。

安全项覆盖:工具投毒话术、动态exec、易受SSRF攻击的请求、不安全的反序列化、硬编码密钥,以及说谎的只读注解。

--fix 只应用不需要判断的修复:可空的None默认值、缺失的Args条目、裸except。在三个仓库上,针对同一个bug手写PR,它产出的类型改动完全一致。

--diff-against 用来对比两个版本,标出被删掉的工具、被删掉的参数、或者新增的必填参数——这些改动会悄悄弄坏一个已经学会旧结构的Agent。

2. 每个PR里

GitHub Action(uses: vishalhabib99/mcp-doctor@v1)会在每个PR下评论,在它改动的行上给出一键修复建议,还能让分数跌破阈值的PR直接失败。pre-commit钩子则在提交落地前跑同一套检查。

3. Agent内部:guard

静态检查看不出一次调用到底有没有成功。mcp-doctor guard 把任意stdio MCP服务器跑在实时检查后面,每条消息原样通过;当某个"成功"并不是成功时,它加上一条Agent能读到的警告。

它会标记这些情况:

  • 写入报告成功,但对应的读取找不到它
  • schema里没有的参数,被服务器悄悄丢掉
  • 等待提前返回,却声称等满了全部时间
  • 错误或拒绝被当成成功答案返回、空读取、破坏工具自身outputSchema的输出
  • 疑似提示注入泄露:一次调用读到的密钥即将被另一次调用发出去,或者一个仓库的文本在会话读过外部内容后即将被写进另一个仓库

同一个坏掉的 write_file、同一个提示词,在Claude Code里:没有guard时,回答是"Yes, the file was saved.";有guard时,回答是"I can't confirm the file was saved."

对编码Agent,mcp-doctor-guard 的Claude Code插件把同样的思路用在Agent自己的工具上(shell、文件写入、网页抓取)。一次用Haiku在bypassPermissions下的实跑中,没有guard的Agent读了一个网页,然后埋了个 .git 钩子,把 .env 里的token发给了服务器。有guard时,两个动作都被拦下,Agent也没再尝试别的路径。

4. 在哪儿都能用

  • 浏览器里:粘贴仓库、npm或PyPI名字。真正的mcp-doctor在页面里跑(Pyodide),不上传也不执行任何东西
  • GitHub issue:开一个扫描请求,机器人回复报告
  • Claude Code插件:说一句"check my MCP server",Claude扫描、解释每条发现,并在你同意后修复它能修的
  • fix-upstream:一个把发现变成带测试PR的Agent,由人review后发出

它凭什么可信

召回率是公开的:在5个框架的805个真实服务器上,它找到了15977个工具中的15755个,每一次漏报都列在 docs/coverage.md 里。

mcp-doctor自己身上有113个bug,都是拿它在真实服务器上跑出来的,全部已修(有构建日志)。外部仓库的维护者合并了48个修复,分布在46个仓库里,包括langflow和ha-mcp。第一个外部CI用户是jupyter-mcp-server,其维护者主动要求后,当天就加上了这个Action。

边界在哪

guard目前只覆盖stdio服务器,还不支持HTTP;只有当服务器有对应的读取工具时,它才能确认一次写入;它匹配的是被复制的文本,所以改写过措辞的泄露可能溜过去。它是模型被骗时的一张网,不是最小权限token的替代品。

拿它跑跑你的服务器,然后告诉它哪里判断错了:github.com/vishalhabib99/mcp-doctor

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
2.8亿灵活就业者!这届年轻人,真的交不起社保了?

2.8亿灵活就业者!这届年轻人,真的交不起社保了?

李云飞Afey
2026-08-16 20:03:40
一场4-0!让辽宁铁人拿到关键3分+送海牛12连败 压力给到武汉三镇

一场4-0!让辽宁铁人拿到关键3分+送海牛12连败 压力给到武汉三镇

球场新视角1号
2026-10-17 21:34:44
台湾回归后,第1任省长由谁担任最合适?五人上榜,一人脱颖而出

台湾回归后,第1任省长由谁担任最合适?五人上榜,一人脱颖而出

夜里看海
2026-09-13 14:35:39
8GB内存终于够用了!微软官宣:Windows 11大提速20%

8GB内存终于够用了!微软官宣:Windows 11大提速20%

快科技
2026-10-16 15:24:24
只要8888,躺在怀里直接喝,提供包天服务,人乳交易乱象龌龊不堪

只要8888,躺在怀里直接喝,提供包天服务,人乳交易乱象龌龊不堪

易玄
2026-10-16 11:12:32
40年林彪在莫斯科拍下唯一一张正装照片,身旁站着的年轻人究竟是谁?

40年林彪在莫斯科拍下唯一一张正装照片,身旁站着的年轻人究竟是谁?

春秋砚
2026-09-03 07:25:12
武汉盛帆女篮与华中科技大学女篮热身赛爆发大规模冲突,场面失控;高校队员事后在电梯内兴奋复盘打人细节:“我上去就给她三拳”

武汉盛帆女篮与华中科技大学女篮热身赛爆发大规模冲突,场面失控;高校队员事后在电梯内兴奋复盘打人细节:“我上去就给她三拳”

大风新闻
2026-10-17 11:23:04
小米新机公布:10000mAh+6.9英寸直屏+185Hz!

小米新机公布:10000mAh+6.9英寸直屏+185Hz!

科技堡垒
2026-10-15 12:05:26
CBA最丑陋揭幕战!上海34分狂胜深圳杀红眼:杜锋却全程无话可说?

CBA最丑陋揭幕战!上海34分狂胜深圳杀红眼:杜锋却全程无话可说?

篮球快餐车
2026-10-17 05:19:17
社保体系中的不公与痛点

社保体系中的不公与痛点

沈勇平
2026-10-13 15:58:32
伟大的长征:万淑芬到死都不会想到,王家烈最终活成了这样!

伟大的长征:万淑芬到死都不会想到,王家烈最终活成了这样!

郭蛹包工头
2026-10-17 21:59:11
克林顿披露隐瞒近 50 年的数字?朝鲜战争美军不是 30 万

克林顿披露隐瞒近 50 年的数字?朝鲜战争美军不是 30 万

果妈聊娱乐
2026-09-18 17:17:44
女生旅游不慎遗失新手机,5分钟就找回,里面多了一段视频:“糊涂鬼,手机新买的吧,我们交给警察了哦”;当事人:准备寄特产感谢

女生旅游不慎遗失新手机,5分钟就找回,里面多了一段视频:“糊涂鬼,手机新买的吧,我们交给警察了哦”;当事人:准备寄特产感谢

环球时报国际
2026-10-16 13:32:31
女人最上瘾的,从来不是拥抱接吻,是男人藏不住的生理性吸引

女人最上瘾的,从来不是拥抱接吻,是男人藏不住的生理性吸引

九哥哥车评
2026-10-18 02:23:28
台当局这下彻底懵了!大陆不声不响,台湾后路已经被堵死

台当局这下彻底懵了!大陆不声不响,台湾后路已经被堵死

冰语历史
2026-10-15 05:05:45
1953年13名志愿军弹尽粮绝时,竟意外捡到一箱美军照明废品,却用这些废品打退美军的7次集团冲锋

1953年13名志愿军弹尽粮绝时,竟意外捡到一箱美军照明废品,却用这些废品打退美军的7次集团冲锋

睡前讲故事
2026-10-11 19:53:11
新疆男篮2分险胜青岛,阿不都沙拉木12+5齐麟15分,韦瑟斯庞空砍28分

新疆男篮2分险胜青岛,阿不都沙拉木12+5齐麟15分,韦瑟斯庞空砍28分

中国篮坛快讯
2026-10-17 21:54:42
布朗离队彻底解放?塔克新赛季首秀狂轰44+12+9加时连中关键球

布朗离队彻底解放?塔克新赛季首秀狂轰44+12+9加时连中关键球

狼叔评论
2026-10-17 22:44:09
坐牢3年罚款10万,被毁掉7年青春的陈昱霖,出狱后过得怎么样了?

坐牢3年罚款10万,被毁掉7年青春的陈昱霖,出狱后过得怎么样了?

孤傲何妨初
2026-10-16 10:30:16
正式退役,31岁黄雅琼官宣,拒绝娱乐圈,安置岗位级别工资曝光

正式退役,31岁黄雅琼官宣,拒绝娱乐圈,安置岗位级别工资曝光

绚丽的画卷
2026-10-16 21:02:38
2026-10-18 03:51:00
野生运营
野生运营
懂点产品,懂点AI,正在努力给平淡日子搞点新花样。
188文章数 97关注度
往期回顾 全部

科技要闻

刘煜辉:99%的黄金分析师报告一钱不值

头条要闻

普京:包围并消灭2000人的乌军集群 这非比寻常

头条要闻

普京:包围并消灭2000人的乌军集群 这非比寻常

体育要闻

升级版杨瀚森再闯难关:当上开拓者第三中锋还得拼

娱乐要闻

庾澄庆罕谈前妻 撕下伊能静仅剩的体面

财经要闻

新一轮大跌源头,找到了!

汽车要闻

星瑞L PLUS限时售价10.97万元起 开启智混3L时代

态度原创

房产
游戏
时尚
亲子
公开课

房产要闻

利好密集落地+现房好房断档,广州楼市买入窗口,正在倒计时!

《使命召唤:现代战争4》Switch 2版支持DLSS

降落伞裤的3组搭配,打破秋冬沉闷感!

亲子要闻

智商高的孩子几岁能看出来

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版