一个叫 mcpsnoop 的开源项目最近在 GitHub 和 Hacker News 上引起了 MCP 开发者的注意。它的定位很直白:“Wireshark for MCP”——像抓包工具一样,把 AI 客户端和 MCP 服务器之间的每一次真实调用摊开给你看。项目地址是 kerlenton/mcpsnoop,MIT 协议,处于 0.x 前 1.0 阶段。
这不是又一个花哨的调试面板。它解决的是一个具体又烦人的问题:你的 MCP 工具没被调用,或者调用参数不对,或者一次调用卡住不动,你却看不到真实发生了什么。
Inspector 看不到的那段路
MCP 官方的调试工具是 MCP Inspector,但它有个先天限制:Inspector 是作为独立客户端连接服务器的,它看到的流量是自己发出去的,不是 Claude Desktop、Cursor 或 Claude Code 真正发出的请求。
这意味着如果问题出在真实客户端这一端——比如客户端和服务器握手时协商的能力对不上,或者客户端压根没按预期发起调用——Inspector 完全看不到。开发者只能退回到最原始的办法:tail 一个 /tmp 里的日志文件,凭经验猜测哪里出了问题。
mcpsnoop 的做法是直接站进真实的数据管道。用法是用它包裹住服务器启动命令,比如把 node server.js 换成 mcpsnoop -- node server.js,它会做透明转发,同时把每一帧 JSON-RPC 数据复制一份,实时显示在终端 UI 里。对于走 HTTP 的服务器,也可以用 mcpsnoop http --target 起一个反向代理。
它能替代什么,又替代不了什么
mcpsnoop 提供的功能相当具体:实时 JSON-RPC 流(区分请求、响应、通知、服务端 stderr,慢调用和错误会被标出,包括工具级的 isError);能力检查(按 c 键看客户端和服务器握手时到底协商了什么);hung-call 检测(挂起的请求显示 PENDING 加实时计时);还有一个比较少见的能力——重放(replay),可以把捕获到的某次工具调用重新丢给一个干净的服务器副本运行,这对反复调试同一个 bug 很实用。
安装方式也很轻:go install 一行命令,或者通过 Homebrew tap 安装,产出是单一二进制文件,没有额外运行时依赖。
- 结论.它真正补上的不是“调试界面”,而是“客户端到底做了什么”这条证据链。
跟它对比的还有一个叫 mcp-trace 的项目,同样能看到真实流量,但 mcpsnoop 强调的是零配置、单二进制和重放能力,官方仓库的对比表里把这几项列成了自己的差异化优势。
需要说清楚的是,mcpsnoop 不是安全审计工具,也不是生产环境监控平台。它运行你指定的服务器命令,项目文档明确写了一句提醒:只包裹你信任的服务器,不信任的要放进容器里跑。
- 风险.它执行的是你配置文件里写的命令,安全边界完全取决于被调试的那个 server 本身。
它的受众也很明确——正在写 MCP server 的工程师,以及在 Claude Desktop、Cursor、Claude Code 里接入外部工具的技术团队。对这批人来说,它能省掉很多"猜测式调试"的时间;但它换不来产品体验的提升,也不是普通用户会用到的东西。项目目前还在 0.x 阶段,遵循语义化版本,接口行为随时可能调整,这点对想现在就依赖它做长期工作流的团队值得留意。
