
Wireshark for MCP. एक पारदर्शी प्रॉक्सी जो आपके AI क्लाइंट और आपके MCP सर्वरों के बीच होने वाली हर वास्तविक टूल कॉल को आपके टर्मिनल में लाइव दिखाती है।
MCP के लिए Wireshark। एक पारदर्शी प्रॉक्सी जो आपके AI क्लाइंट और आपके MCP सर्वर के बीच हर वास्तविक टूल कॉल को आपके टर्मिनल में लाइव दिखाता है।
आधिकारिक MCP Inspector अपने स्वयं के क्लाइंट के रूप में कनेक्ट होता है, इसलिए यह कभी नहीं देखता कि आपका क्लाइंट (Cursor, Claude Code, Codex) वास्तव में आपके सर्वर को क्या भेजता है। और जो भी अनुरोध आने का इंतज़ार करता है, वह उस कॉल को नहीं दिखा सकता जो मॉडल ने कभी नहीं की, या गलत तर्कों के साथ की। जब कोई टूल चुपचाप कॉल नहीं होता, क्षमताएँ मेल नहीं खातीं, या कोई कॉल बस अटक जाती है, तो आप लॉग खंगालने और अनुमान लगाने में फँसे रह जाते हैं।
mcpsnoop इसके बजाय वास्तविक डेटा पथ में बैठता है। अपने सर्वर कमांड को इसके साथ लपेटें और हर JSON-RPC फ्रेम को लाइव देखें, जब आपका वास्तविक क्लाइंट और सर्वर बात करते हैं।
यह पृष्ठ mcpsnoop GitHub Action की सूची भी है, इसलिए यहाँ इसका पूरा विवरण है। यह कैप्चर किए गए सत्र की जाँच करता है, हर निष्कर्ष को कोड स्कैनिंग अलर्ट के रूप में दर्ज करता है, और जिस पर आपने गेट लगाया है उस पर जॉब को विफल कर देता है।```yaml permissions: security-events: write contents: read
steps:
जो भी रिलीज़ आप चाहें उसे पिन करें। सबसे नया [रिलीज़ पेज](https://github.com/kerlenton/mcpsnoop/releases) पर है। हर इनपुट, एग्ज़िट कोड का क्या मतलब है, और एक्शन के बिना इसे कैसे जोड़ें, यह सब नीचे [The GitHub Action](#the-github-action) में दिया गया है।
## त्वरित आरंभ
इसे तुरंत देखें, बिना कुछ सेट अप किए।```bash
mcpsnoop demo
इसे वास्तव में उपयोग करने के लिए, अपने सर्वर को अपने क्लाइंट के MCP कॉन्फ़िग में लपेटें।```json { "mcpServers": { "my-server": { "command": "mcpsnoop", "args": ["--", "node", "build/index.js"] } } }
`--` के बाद जो कुछ भी है वह वह कमांड है जो सामान्य रूप से आपके सर्वर को लॉन्च करता है। इसे बदलकर वही डालें जो आप पहले से उपयोग करते हैं, जैसे `python server.py`, `npx -y @scope/server`, या एक संकलित बाइनरी।
Claude Desktop पर आपको यह संपादन हाथ से करने की आवश्यकता नहीं है।```bash
mcpsnoop wrap my-server # route my-server through mcpsnoop
mcpsnoop unwrap my-server # put it back
wrap claude_desktop_config.json ढूंढता है, उसे पहली बार
claude_desktop_config.json.mcpsnoop.bak में कॉपी करता है, और केवल उसी
एक सर्वर की प्रविष्टि को फिर से लिखता है, ताकि आपकी फ़ॉर्मेटिंग और बाकी सभी सर्वर अछूते रहें।
फिर से लिखी गई प्रविष्टि के अंदर कुंजियाँ वर्णानुक्रम में वापस आ जाती हैं। unwrap
फ़ाइल को पुनर्स्थापित करता है, और जब कोई सर्वर अब wrapped नहीं रहता तो बैकअप हटा देता है।
इनमें से किसी के बाद भी Claude Desktop को पुनः आरंभ करें, क्योंकि MCP सर्वर स्टार्टअप पर
एक बार लॉन्च होते हैं।
फिर अपने क्लाइंट का उपयोग सामान्य रूप से करें और UI खोलें।```bash mcpsnoop
कोई फ्लैग नहीं, कोई सॉकेट पाथ नहीं, याद रखने के लिए कोई स्टार्टअप ऑर्डर नहीं। शिम और UI अपने आप एक-दूसरे को ढूंढ लेते हैं, और UI डिस्क से पिछले सत्रों को बैकफिल करता है।
स्ट्रीमेबल-HTTP सर्वर के लिए, mcpsnoop को रिवर्स प्रॉक्सी के रूप में चलाएं।```bash
mcpsnoop http --target http://localhost:3000/mcp --listen :7000
हर प्रतिक्रिया का HTTP स्टेटस स्ट्रीम में दिखता है, इसलिए एक प्रतिक्रिया जो अपने आप में कोई JSON-RPC संदेश नहीं रखती, वह भी कुछ न होने के बजाय एक दृश्य फ्रेम होती है: 401 चैलेंज, अस्वीकृत Origin पर 403, नोटिफिकेशन स्वीकार करने वाला 202, और 502 जब लक्ष्य तक बिल्कुल नहीं पहुंचा जा सकता। एक 401 का WWW-Authenticate हेडर शब्दशः रखा जाता है और इंस्पेक्टर में दिखाया जाता है, क्योंकि यह ऑथ स्कीम और आगे जाने के लिए संसाधन मेटाडेटा का नाम बताता है। TUI में status:401 से स्टेटस के अनुसार फ़िल्टर करें, या status:err से किसी भी विफलता के अनुसार। एक 4xx या 5xx एक त्रुटि माना जाता है, इसलिए एक डिफ़ॉल्ट mcpsnoop check रन उस पर विफल हो जाता है।
आपका अपना कोई सर्वर नहीं है? एक प्रकाशित टेस्ट सर्वर के खिलाफ, अपने स्वयं के क्लाइंट द्वारा संचालित, इसे वास्तव में आज़माएं। किसी सत्र को होने के बाद निरीक्षण करने के लिए, लॉग से पिछले सत्रों की समीक्षा करें देखें।
यदि आप किसी प्रोजेक्ट में समान शिम फ़्लैग का पुनः उपयोग करते हैं, तो उन्हें वर्तमान कार्यशील निर्देशिका में एक .mcpsnoop.toml फ़ाइल में रखें।```toml
label = "filesystem"
trace-file = "trace.jsonl"
redact-secrets = true
redact-key = "token,authorization"
redact-value = "sk-[A-Za-z0-9]+"
redact-path = "$.params.arguments.password"
no-trace = false
`redact-key`, `redact-value`, और `redact-path` को अपनी-अपनी पंक्तियों में दोहराएँ ताकि
इनमें से प्रत्येक को एक से अधिक बार जोड़ा जा सके।
ये सभी कुंजियाँ हैं जिन्हें यह समर्थन करता है।
फ़ाइल केवल वर्तमान कार्यशील निर्देशिका में देखी जाती है, मूल निर्देशिकाओं में नहीं।
स्पष्ट कमांड-लाइन फ़्लैग कॉन्फ़िग फ़ाइल के मानों को ओवरराइड करते हैं।
## Commands
| Command | What it does |
|---|---|
| `mcpsnoop -- <server>` | wrap a stdio server as a transparent shim |
| `mcpsnoop` | open the live TUI |
| `mcpsnoop http --target <url>` | proxy a streamable-HTTP server |
| `mcpsnoop export` | render a session to json, html, text, har, or otlp |
| `mcpsnoop check` | fail CI on errors, invalid frames, warnings, routing mismatches, hung calls, late results, or a latency budget |
| `mcpsnoop baseline` | inspect, accept, or reset trusted tool definitions |
| `mcpsnoop diff` | compare tools and calls across two captured sessions |
| `mcpsnoop open` | open a saved session in the TUI |
| `mcpsnoop inventory` | list every server that has run through mcpsnoop on this machine |
| `mcpsnoop stats` | fold every stored capture into one row per server and tool |
| `mcpsnoop prune` | delete saved session logs older than a cutoff |
| `mcpsnoop wrap <server>` | route one of Claude Desktop's servers through mcpsnoop |
| `mcpsnoop unwrap <server>` | put that server's entry back the way it was |
| `mcpsnoop remote <user@host>` | print the SSH tunnel command |
| `mcpsnoop demo` | play a scripted session |
पूरी सूची के लिए `mcpsnoop help` चलाएँ, या किसी एक के फ़्लैग के लिए `mcpsnoop help <command>` चलाएँ।
## How it compares
| | MCP Inspector | mcpsnoop |
|---|:---:|:---:|
| Sees your real client and server traffic | no | yes |
| Flags hung calls and stream errors | no | yes |
| Flags stray output that corrupts the stream | no | yes |
| Flags malformed JSON-RPC frames | no | yes |
| Detects tool definition drift after approval | no | yes |
| Interactive terminal UI | no | yes |
| Zero-config, no flags or ordering | no | yes |
| Capability inspector | partial | yes |
| Replay a captured call | no | yes, over stdio and over HTTP |
| Session export (json / html / text / otlp) | no | yes |
| Single binary, no runtime deps | no | yes |
## Install
### npm