展示HN: Mcpsnoop – MCP的Wireshark(透明代理和实时TUI)
MCP的Wireshark。一个透明代理,可以在终端中实时显示您的AI客户端和MCP服务器之间的每个实际工具调用。 问题 官方的MCP Inspector作为自己的客户端连接。它从未看到您的客户端(Claude Desktop、Cursor、Claude Code)和服务器之间的流量。您自己服务器中的断点仅在请求到达时触发。它无法为您显示真实客户端从未执行的调用,或使用您未预期参数的调用。因此,当工具悄然未被调用、功能不对齐或调用仅挂起时,您又得回到在/tmp中尾随日志并进行猜测。mcpsnoop则位于真实的数据路径中,因此您可以调试客户端和服务器之间的实际MCP流量。使用它包装您的服务器命令,并在实时终端UI中观看每个JSON-RPC帧,随着您的真实客户端和服务器交互。 快速开始 想先看一下,没有任何设置吗?运行mcpsnoop demo进行一个播放到实时UI的脚本会话。要真实使用它,请在客户端的MCP配置中包装您的服务器:--后面的所有内容都是通常启动您服务器的命令(这里,是用node运行的TypeScript构建)。交换您已经使用的任何内容,如python server.py、npx -y @scope/server或编译后的二进制文件。像往常一样使用您的客户端,然后打开UI:mcpsnoop。没有标志,没有套接字路径,没有启动顺序需要记住。shim和UI会自行找到彼此,而UI会通过磁盘回填过去的会话,所以无论您在客户端之前还是之后打开它都没有关系。 对于可流式传输的HTTP服务器,运行mcpsnoop作为反向代理,并将客户端指向它:mcpsnoop http --target http://localhost:3000/mcp --listen :7000 没有自己的服务器进行测试?docs/DEMO.md引导您通过mcpsnoop将Claude连接到已发布的测试服务器。 功能 实时JSON-RPC流。请求、响应、通知和服务器stderr,带有颜色编码,包括错误和慢调用的标记,包含工具级result.isError,不仅仅是JSON-RPC错误。 重放。对捕获的任何工具调用在一个新鲜的、隔离的服务器副本上重新运行。用于快速迭代工具的最快循环。 能力检查器(c)。准确查看客户端和服务器在握手时达成了什么。 帧检查器(enter)。完整的、漂亮打印的JSON,带有帧内搜索。 挂起调用检测。进行中的请求显示为PENDING并带有实时计时器,因此挂起的工具一目了然。 真实的过滤查询。用tool:、status:、dir:、kind:、id:或纯文本缩小流。 比较 MCP Inspector mcp-trace mcpsnoop 看到您的真实客户端↔服务器流量 不 是 是 交互式终端UI 不 是 是 零配置,没有标志或顺序 不 不 是 能力检查器 部分 不 是 重放捕获的调用 不 不 是 单个二进制文件,没有运行时依赖关系 不 多种 是 安装 go install github.com/kerlenton/mcpsnoop/cmd/mcpsnoop@latest 或使用Homebrew: brew tap kerlenton/mcpsnoop brew install mcpsnoop 最近的Homebrew限制第三方tap;如果它拒绝,请一次信任该tap,执行brew trust kerlenton/mcpsnoop并重新运行安装。 一个无tap的brew install mcpsnoop(不tap,不信任)需要Homebrew core,该core只接受通过知名度条(stars,forks,watchers)项目。如果您觉得这很方便,那么在repo上点赞有助于它达标。 或者从发布页面获取适合您的平台的预构建二进制文件。 工作原理 官方的Inspector作为第二个客户端连接,侧边运行。mcpsnoop则位于实际数据通道中,因此它确切地看到您的真实客户端和服务器彼此传达的内容,无论服务器是用什么写的。 它在一个二进制文件中有两个角色:mcpsnoop -- <server>是您客户端生成的透明shim(逐字转发字节,同时发送每个帧的副本),而不带参数的mcpsnoop是中枢和TUI。它们通过一个公知的socket和磁盘日志配对,因此无论哪个先启动都无关紧要。 关键绑定 enter drill in · esc back · r replay · c capabilities · y copy · / filter · : command · p pause · f follow · ctrl-d delete。 使用j/k移动,使用ctrl-f/ctrl-b翻页,g/G转到顶部和底部,shift +列排序。在应用程序中按?以查看完整列表。 过滤流 在会话中,按/并组合以空格分隔的标记(ANDed):纯文本匹配方法、工具、id和有效负载,而tool:、method:、id:、kind:、dir:、status:按字段过滤。因此tool:search status:slow显示调用慢的搜索工具,而dir:s2c kind:req显示服务器发起的请求(采样、根)。? help列出每个标记及其接受的值。 安全性 mcpsnoop运行您包装的服务器命令,因此只包装您信任的服务器,并在容器中运行不受信任的服务器。它从未执行您没有放入客户端配置中的任何内容。 贡献 欢迎提出问题和拉取请求。请参见CONTRIBUTING.md以获取开发设置和make check门。mcpsnoop是pre-1.0,并遵循SemVer:在0.x期间,次要版本可能会更改面向用户的行为,补丁版本为错误修复。 许可证 MIT
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡