
mcpsnoop v0.16.0
Wireshark لـ MCP. وكيل شفاف يعرض كل استدعاء أداة حقيقي بين عميل الذكاء الاصطناعي الخاص بك وخوادم MCP الخاصة بك، مباشرة في الطرفية الخاصة بك.
Wireshark لـ MCP. وكيل شفاف يُظهر كل استدعاء أداة حقيقي بين عميل الذكاء الاصطناعي الخاص بك وخوادم MCP الخاصة بك، مباشرة في طرفيتك.
المشكلة
يتصل MCP Inspector الرسمي كعميل خاص به، لذا لا يرى أبدًا ما يرسله عميلك (Cursor، Claude Code، Codex) فعليًا إلى خادمك. وأي شيء ينتظر وصول طلب لا يمكنه إظهار الاستدعاء الذي لم يقم به النموذج أبدًا، أو قام به بوسائط خاطئة. عندما لا يتم استدعاء أداة بصمت، أو لا تتوافق القدرات، أو يتعطل استدعاء ما، تظل عالقًا في البحث في السجلات والتخمين.
بدلاً من ذلك، يجلس mcpsnoop في مسار البيانات الحقيقي. لفّ أمر الخادم الخاص بك به وشاهد كل إطار JSON-RPC مباشرة، بينما يتحدث عميلك وخادمك الحقيقيان.
في CI
هذه الصفحة هي أيضًا قائمة إجراء GitHub الخاص بـ mcpsnoop، إليك كل ما يتعلق به. يتحقق من جلسة مُلتقطة، ويسجل كل نتيجة كتنبيه فحص كود، ويفشل المهمة بناءً على ما قمت بتقييده عليه.```yaml permissions: security-events: write contents: read
steps:
- uses: kerlenton/[email protected] with: session: artifacts/session.jsonl
حدد الإصدار الذي تريده. الأحدث موجود في
[صفحة الإصدارات](https://github.com/kerlenton/mcpsnoop/releases). كل مدخل،
وماذا تعني رموز الخروج، وكيفية توصيله بدون الإجراء موجودة في
[إجراء GitHub](#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
يستعيد الملف، ويزيل النسخة الاحتياطية بمجرد عدم وجود أي خادم ملفوف بعد الآن.
أعد تشغيل Claude Desktop بعد أيٍّ من العمليتين، لأن خوادم MCP تُطلق مرة واحدة فقط
عند بدء التشغيل.
ثم استخدم عميلك كالمعتاد وافتح الواجهة.```bash mcpsnoop
لا أعلام، لا مسارات مآخذ، لا ترتيب تشغيل يجب تذكّره. تجد الطبقة الوسيطة (shim) وواجهة المستخدم بعضهما البعض تلقائيًا، وتقوم واجهة المستخدم بملء الجلسات السابقة من القرص.
بالنسبة لخادم HTTP قابل للبث، شغّل mcpsnoop كوكيل عكسي.```bash
mcpsnoop http --target http://localhost:3000/mcp --listen :7000
حالة HTTP لكل استجابة تظهر في التدفق، لذا فإن الاستجابة التي لا تحمل
أي رسالة JSON-RPC خاصة بها لا تزال إطارًا مرئيًا بدلاً من لا شيء:
تحدي 401، و403 عند رفض Origin، و202 التي تؤكد
إشعارًا، و502 عندما يتعذر الوصول إلى الهدف على الإطلاق. يتم الاحتفاظ بترويسة WWW-Authenticate الخاصة بـ 401 كما هي وعرضها في المفتش،
لأنها تسمي مخطط المصادقة وبيانات المورد الوصفية للانتقال إليها بعد ذلك. قم بالتصفية حسب
الحالة باستخدام status:401 في TUI، أو حسب أي فشل باستخدام status:err. أي 4xx
أو 5xx يُحتسب كخطأ، لذا فإن تشغيل mcpsnoop check الافتراضي يفشل عليه.
لا تملك خادمًا خاصًا بك؟ جرّبه فعليًا ضد خادم اختبار منشور، مدفوعًا بعميلك الخاص. لفحص جلسة بعد حدوثها، راجع مراجعة الجلسات السابقة من السجلات.
ملف الإعداد
إذا كنت تعيد استخدام نفس علامات shim عبر مشروع، فضعها في ملف
.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` في أسطر منفصلة لإضافة
أكثر من واحد من كل منها.
هذه هي جميع المفاتيح التي يدعمها.
يتم البحث عن الملف فقط في دليل العمل الحالي، وليس في الدلائل
الأصلية.
تتجاوز خيارات سطر الأوامر الصريحة القيم الواردة من ملف الإعدادات.
## الأوامر
| الأمر | ما يفعله |
|---|---|
| `mcpsnoop -- <server>` | يغلّف خادم stdio كطبقة وسيطة شفافة |
| `mcpsnoop` | يفتح واجهة TUI المباشرة |
| `mcpsnoop http --target <url>` | يمرّر عبر خادم HTTP قابل للبث |
| `mcpsnoop export` | يعرض جلسة بصيغة json أو html أو text أو har أو otlp |
| `mcpsnoop check` | يفشل CI عند وجود أخطاء أو إطارات غير صالحة أو تحذيرات أو عدم تطابق في التوجيه أو استدعاءات معلّقة أو نتائج متأخرة أو تجاوز ميزانية زمن الاستجابة |
| `mcpsnoop baseline` | يعاين أو يقبل أو يعيد تعيين تعريفات الأدوات الموثوقة |
| `mcpsnoop diff` | يقارن الأدوات والاستدعاءات عبر جلستين ملتقطتين |
| `mcpsnoop open` | يفتح جلسة محفوظة في واجهة TUI |
| `mcpsnoop inventory` | يسرد كل خادم تم تشغيله عبر mcpsnoop على هذا الجهاز |
| `mcpsnoop stats` | يدمج كل لقطة مخزنة في صف واحد لكل خادم وأداة |
| `mcpsnoop prune` | يحذف سجلات الجلسات المحفوظة الأقدم من حد زمني |
| `mcpsnoop wrap <server>` | يوجّه أحد خوادم Claude Desktop عبر mcpsnoop |
| `mcpsnoop unwrap <server>` | يعيد إدخال ذلك الخادم إلى حالته الأصلية |
| `mcpsnoop remote <user@host>` | يطبع أمر نفق SSH |
| `mcpsnoop demo` | يشغّل جلسة مكتوبة مسبقًا |
شغّل `mcpsnoop help` للحصول على القائمة الكاملة، أو `mcpsnoop help <command>` لمعرفة خيارات أمر معيّن.
## كيف يقارن
| | MCP Inspector | mcpsnoop |
|---|:---:|:---:|
| يرى حركة مرور عميلك وخادمك الفعلية | لا | نعم |
| يعلّم على الاستدعاءات المعلّقة وأخطاء البث | لا | نعم |
| يعلّم على المخرجات الشاردة التي تفسد البث | لا | نعم |
| يعلّم على إطارات JSON-RPC غير الصالحة | لا | نعم |
| يكتشف انحراف تعريف الأداة بعد الموافقة | لا | نعم |
| واجهة طرفية تفاعلية | لا | نعم |
| بدون إعداد، بدون خيارات أو ترتيب | لا | نعم |
| فاحص القدرات | جزئي | نعم |
| إعادة تشغيل استدعاء ملتقط | لا | نعم، عبر stdio وعبر HTTP |
| تصدير الجلسة (json / html / text / otlp) | لا | نعم |
| ملف ثنائي واحد، بدون تبعيات وقت تشغيل | لا | نعم |
## التثبيت
### npm
لا حاجة إلى سلسلة أدوات Go. معظم خوادم MCP مكتوبة بلغة Node أو Python، لذا
هذه هي الطريقة الأقصر للبدء.```bash
npx mcpsnoop -- node build/index.js
حزمة npm لا تحتوي على أي كود خاص بها. كل حزمة من الحزم الست الخاصة بالمنصات تحمل نسخة واحدة، ويقوم npm بتثبيت النسخة الوحيدة التي تتوافق مع جهازك، لذلك لا يوجد شيء لتنزيله وقت التثبيت ولا شيء لإلغاء حظره في وكيل. للاحتفاظ بها بدلاً من جلبها في كل تشغيل، استخدم npm i -g mcpsnoop.
Go```bash
go install github.com/kerlenton/mcpsnoop/cmd/mcpsnoop@latest
### هوم برو```bash
brew install mcpsnoop
الملفات الثنائية الجاهزة لكل منصة متوفرة في صفحة الإصدارات.
إكمالات الصدفة
يأتي mcpsnoop مع إكمالات لـ bash وzsh وfish وPowerShell. شغّل
mcpsnoop completion <shell> --help لمعرفة خطوات الإعداد، والتي تغطي تفعيل
الإكمال ومسار التثبيت لنظام تشغيلك.