Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
mcpsnoop — Wireshark لـ MCP. وكيل شفاف بين عميل الذكاء الاصطناعي الخاص بك وخادم MCP. راقب كل استدعاء مباشرةً في طرفيتك، وأفشل CI بناءً على ما يجده، وصدّر امتدادات OpenTelemetry. | Kitploit
أدوات/GitHubGitHub/kerlenton/mcpsnoop
أدوات عامةالتحليل الديناميكي (عزل)تخطيط الشبكةبروكسيات الويب والاعتراضالبرمجة النصية والأتمتةاختبار أمان APIمصممي الأخطاءتحليل السجلات
GitHubkerlenton/mcpsnoop

mcpsnoop

Wireshark لـ MCP. وكيل شفاف بين عميل الذكاء الاصطناعي الخاص بك وخادم MCP. راقب كل استدعاء مباشرةً في طرفيتك، وأفشل CI بناءً على ما يجده، وصدّر امتدادات OpenTelemetry.

33432130منذ 9 أيامتمت المراجعة من قبل Kitploit
عرض المستودع

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/9109/91d664ea266713affb29238906792777021b43fa6627b13f46382f48ad340a61.png" alt="mcpsnoop" width="440">
</p>

**Wireshark لـ MCP.** يجلس mcpsnoop بين عميل الذكاء الاصطناعي الخاص بك وخادم MCP الخاص بك
ويسجّل كل إطار JSON-RPC يتبادلانه، دون أي تغيير على أي من الجانبين.
شاهده مباشرةً في طرفيتك، أو أفشل CI بناءً على ما يجده، أو أرسله إلى
خلفية التتبع الخاصة بك كـ OpenTelemetry spans.

[![CI](https://github.com/kerlenton/mcpsnoop/actions/workflows/ci.yml/badge.svg)](https://github.com/kerlenton/mcpsnoop/actions/workflows/ci.yml)
[![Go Reference](https://pkg.go.dev/badge/github.com/kerlenton/mcpsnoop.svg)](https://pkg.go.dev/github.com/kerlenton/mcpsnoop)
[![MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
[![Marketplace](https://img.shields.io/badge/marketplace-mcpsnoop-blue?logo=github)](https://github.com/marketplace/actions/mcpsnoop)

<p align="center">
  <img src="https://assets.kitploit.com/production/public/readmes/9109/30466d77be15250e4bab6639e48a4cd5b0d44cd96e48606b60c6bacb67c15c3d.gif" alt="mcpsnoop demo">
</p>

## المشكلة

يتصل [MCP Inspector](https://github.com/modelcontextprotocol/inspector) الرسمي
بصفته عميلاً خاصاً به، لذا لا يرى أبداً ما يرسله *عميلك* (Cursor، Claude
Code، Codex) فعلياً إلى خادمك. وأي شيء ينتظر وصول طلب لا يمكنه إظهار
الاستدعاء الذي لم يُجرِه النموذج أبداً، أو الذي أجراه بوسائط خاطئة. عندما لا
يُستدعى أداة بصمت، أو لا تتوافق القدرات، أو يتعلّق استدعاء فحسب، تجد نفسك
تنقّب في السجلات وتخمّن.

**بدلاً من ذلك، يجلس mcpsnoop في مسار البيانات الحقيقي.** غلّف أمر خادمك به
وشاهد كل إطار JSON-RPC مباشرةً، أثناء تحدّث عميلك وخادمك الحقيقيين.

## في CI

هذه الصفحة هي أيضاً قائمة [إجراء GitHub الخاص بـ mcpsnoop](https://github.com/marketplace/actions/mcpsnoop)،
لذا إليك محتواها بالكامل. يفحص جلسة ملتقطة، ويسجّل كل اكتشاف كتنبيه
لفحص الشيفرة، ويفشل المهمة بناءً على ما وضعت له شرطاً.

```yaml
permissions:
  security-events: write
  contents: read

steps:
  - uses: kerlenton/[email protected]
    with:
      session: artifacts/session.jsonl
```

لا يوجد تسجيل جاهز؟ سجّل جلسة واحدة باستخدام عميلك الخاص مرة واحدة، ثم أودِعها في المستودع، ودع الإجراء يعيد تشغيلها مقابل كل عملية بناء. لا يُشغَّل أي نموذج ولا مفتاح API في CI. تُفحص إعادة التشغيل مثل أي تسجيل، وتفشل المهمة أيضًا عندما يصبح الخادم أسوأ مما كان عليه في التسجيل. الخادم الذي يُوصَل إليه عبر Streamable HTTP يحصل على `target` مع نقطة نهايته، ويمكن إعادة تشغيل التسجيل عبر أي من النقلين.

```yaml
steps:
  - uses: kerlenton/[email protected]
    with:
      replay: tests/mcp/claude-code-session.jsonl
      server: node dist/index.js
```

ثبّت أي إصدار تريده. أحدث إصدار موجود على
[صفحة الإصدارات](https://github.com/kerlenton/mcpsnoop/releases). كل مدخل و
مخرج موجود في [إجراء GitHub](#the-github-action) أدناه، وكل
إشارة يمكن أن يفشل الفحص بسببها موجودة في [docs/CI.md](https://github.com/kerlenton/mcpsnoop/blob/main/docs/CI.md).

## OpenTelemetry

تُهمل مراجعة MCP 2026-07-28 التسجيل على مستوى البروتوكول وتطلب من
التطبيقات الانتقال إلى `stderr` على stdio، أو إلى OpenTelemetry للمراقبة
المنظمة. يغطي mcpsnoop كليهما دون المساس بالعميل أو الخادم.
تظهر أسطر `stderr` الخاصة بخادم stdio في التدفق بجانب إطاراتها،
ويصبح كل طلب span يتبع
[اصطلاحات OpenTelemetry الدلالية لـ MCP](https://github.com/open-telemetry/semantic-conventions-genai/tree/main/model/mcp).

```bash
mcpsnoop export -T otlp -o trace.json   # spans from a capture
mcpsnoop --otlp-endpoint http://localhost:4318/v1/traces -- node build/index.js   # spans as calls complete
```

تصل استدعاءات الأدوات كـ span باسم `tools/call search`، حاملةً
`mcp.method.name` و`gen_ai.tool.name` و`error.type`، لذا فهي تظهر في
لوحة معلومات مبنية لـ MCP بدلاً من لوحة مبنية لـ mcpsnoop. مقاييس الأدوات الحية لـ
Prometheus على بُعد علم واحد فقط. كلاهما في
[docs/OPENTELEMETRY.md](https://github.com/kerlenton/mcpsnoop/blob/main/docs/OPENTELEMETRY.md).

## البدء السريع

شاهده فورًا، دون أي إعداد.

```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
```

لا أعلام، ولا مسارات sockets، ولا ترتيب بدء تشغيل يجب تذكّره. يجد الـ shim والـ UI بعضهما البعض من تلقاء نفسيهما، ويقوم الـ UI بملء الجلسات السابقة من القرص.

بالنسبة لخادم streamable-HTTP، شغّل mcpsnoop كـ reverse proxy.

```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` الافتراضية عندها، ويُقرأ الاستدعاء الذي أجابت عنه على أنه فاشل بدلًا من أنه ما يزال منتظرًا.

لا تملك خادمًا خاصًا بك؟ [جرّبه فعليًا](https://github.com/kerlenton/mcpsnoop/blob/main/docs/TRY_IT.md) مقابل خادم اختبار منشور، يُشغّله عميلك الخاص. لفحص جلسة بعد حدوثها، راجع [مراجعة الجلسات السابقة من السجلات](https://github.com/kerlenton/mcpsnoop/blob/main/docs/POST_MORTEM.md).

## التثبيت

### npm

لا حاجة إلى سلسلة أدوات Go. معظم خوادم MCP مكتوبة بـ Node أو Python، لذا فهذه أقصر طريق للبدء.

```bash
npx mcpsnoop -- node build/index.js
```

لا تحتوي حزمة npm على أي شيفرة خاصة بها. تحمل ست حزم خاصة بكل منصة بناءً واحدًا لكل منها، ويثبّت npm الحزمة الوحيدة المطابقة لجهازك، لذا لا يوجد شيء لتنزيله وقت التثبيت ولا شيء لفتحه في وكيل. للإبقاء عليها بدلًا من جلبها في كل تشغيل، استخدم `npm i -g mcpsnoop`.

### Homebrew

```bash
brew install mcpsnoop
```

### Go

```bash
go install github.com/kerlenton/mcpsnoop/cmd/mcpsnoop@latest
```

توجد ملفات ثنائية مبنية مسبقًا لكل منصة على صفحة [Releases](https://github.com/kerlenton/mcpsnoop/releases).

يوفر mcpsnoop إكمالات لـ bash وzsh وfish وPowerShell. شغّل
`mcpsnoop completion <shell> --help` لخطوات الإعداد، والتي تغطي تفعيل
الإكمال ومسار التثبيت لنظام التشغيل الخاص بك.

## الأوامر

| الأمر | ما يفعله |
|---|---|
| `mcpsnoop -- <server>` | يلفّ خادم stdio كطبقة وسيطة شفافة |
| `mcpsnoop` | يفتح واجهة TUI الحية |
| `mcpsnoop --metrics-listen <addr>` | يشغّل مركزًا بلا واجهة ويعرض مقاييس Prometheus الحية |
| `mcpsnoop http --target <url>` | يعمل كوسيط لخادم streamable-HTTP |
| `mcpsnoop export` | يعرض جلسة بصيغة json أو html أو text أو har أو otlp |
| `mcpsnoop check` | يُفشل CI عند الأخطاء أو الإطارات غير الصالحة أو التحذيرات مثل نتيجة أداة تخالف outputSchema الخاص بها، أو عدم تطابق التوجيه، أو الاستدعاءات المعلّقة، أو النتائج المتأخرة، أو الاستدعاءات التي ربما نُفّذت مرتين، أو انحراف الأدوات، أو التعليقات التوضيحية التي خُفّفت أو لا تقول شيئًا، أو تجاوز ميزانية زمن الاستجابة |
| `mcpsnoop baseline` | يفحص تعريفات الأدوات الموثوقة أو يقبلها أو يعيد ضبطها |
| `mcpsnoop diff` | يقارن الأدوات والاستدعاءات بين جلستين ملتقطتين |
| `mcpsnoop open` | يفتح جلسة محفوظة في واجهة TUI |
| `mcpsnoop mock <session>` | يقدّم جلسة ملتقطة مرة أخرى كخادم MCP عبر stdio |
| `mcpsnoop replay <session> -- <server>` | يقود خادمًا، عبر stdio أو Streamable HTTP، بالجانب العميل من جلسة مسجّلة، ويقارن النتيجة بالتسجيل |
| `mcpsnoop inventory` | يسرد كل خادم شُغّل عبر mcpsnoop على هذا الجهاز |
| `mcpsnoop stats` | يجمع كل عملية التقاط مخزّنة في صف واحد لكل خادم وأداة |
| `mcpsnoop clients` | يعرض ما فعله كل عميل MCP فعليًا على الشبكة، بالاسم والإصدار |
| `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](https://github.com/modelcontextprotocol/inspector) | عميلها الخاص، متصل بخادمك | تجربة خادم يدويًا، في متصفح أو من سطر أوامر قابل للبرمجة |
| [Snyk Agent Scan](https://github.com/snyk/agent-scan) | عميلها الخاص، يشغّل الخوادم في إعداداتك أو يتصل بها لقراءة أدواتها | فحص الوكلاء وخوادم MCP والمهارات على جهازك بحثًا عن حقن الأوامر والثغرات |
| [MCP Observatory](https://github.com/KryptosAI/mcp-observatory) | عميلها الخاص، يشغّل خادمك لاختباره وتسجيله والتحقق منه | اختبار الأمان والانحدار في CI، مع محاكاة الهجمات وانحراف المخططات والتسجيل وإعادة التشغيل والتحقق |
| [mcprec](https://github.com/erphq/mcprec) | على الشبكة، بين العميل والخادم | تسجيل جلسة مرة واحدة وإعادة تشغيلها كحالة اختبار دون الشبكة |
| mcpsnoop | على الشبكة، بين العميل والخادم | مراقبة ما يقوله عميلك وخادمك الحقيقيان، وإعادة تشغيل جلسة عميل حقيقي مقابل كل بناء، وإفشال CI بسببها، وتصديرها بصيغة OpenTelemetry |

الأداة التي تكون عميلها الخاص ترى الاستدعاءات التي تُجريها هي، لا تلك التي يُجريها عميلك، لذا لا يمكنها إظهار الاستدعاء الذي لم يُجرِه نموذجك أو أجراه بوسائط خاطئة. الماسح يقرأ تعريفًا قبل أن تثق به. أما mcpsnoop فيراقب ما يحدث بعد أن تثق به، بما في ذلك ما إذا تغيّر التعريف لاحقًا.

## كيف يعمل

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="assets/architecture-dark.svg">
    <img alt="mcpsnoop يجلس في الأنبوب بين عميل الذكاء الاصطناعي وخوادم MCP الخاصة بك، وينسخ كل إطار JSON-RPC إلى واجهة طرفية حية" src="https://raw.githubusercontent.com/kerlenton/mcpsnoop/HEAD/assets/architecture-light.svg" width="760">
  </picture>
</p>

mcpsnoop هو دورَان في ملف تنفيذي واحد. `mcpsnoop -- <server>` هو الطبقة الوسيطة الشفافة
التي يُشغّلها عميلك، فتمرّر البايتات حرفيًا بينما ترسل نسخة من كل
إطار إلى المحور. أما `mcpsnoop` بلا وسائط فهو ذلك المحور وواجهته النصية الحيّة. يتزاوجان
عبر مقبس معروف وسجلات على القرص، فلا يضطر أيٌّ منهما إلى البدء أولًا.

ولأنه يقع في الأنبوب الفعلي، لا جانبًا كما يفعل Inspector، فإنه
يرى بالضبط ما يقوله عميلك الحقيقي وخادمك لبعضهما، أيًّا كانت اللغة التي كُتب بها
الخادم. وما يحدّ ذاكرته وقرصه موضّح في
[docs/HOW_IT_WORKS.md](https://github.com/kerlenton/mcpsnoop/blob/main/docs/HOW_IT_WORKS.md).

## إجراء GitHub

كل ما يلي هو ما يفعله الإجراء نيابةً عنك. يثبّت mcpsnoop، ويتحقق
من الالتقاط، ويسجّل النتائج في تبويب Security، ويُفشل المهمة بناءً على ما
اشترطته.

```yaml
permissions:
  security-events: write
  contents: read

steps:
  - uses: kerlenton/[email protected]
    with:
      session: artifacts/session.jsonl
```

ثبّت إصدارًا محددًا، أيًّا كان ما تريده. الأحدث موجود على
[صفحة الإصدارات](https://github.com/kerlenton/mcpsnoop/releases). لا يوجد
`v1` متغيّر، وذلك عمدًا. الإصدار المثبّت هو أيضًا الملف التنفيذي الذي يثبّته الإجراء،
لذا لا يمكن أن يختلف الاثنان أبدًا ولا توجد نسخة افتراضية تصبح قديمة.

| المُدخل | |
|---|---|
| `session` | ملف الالتقاط `.jsonl` المراد فحصه، أو مجلد يحتوي عليها، نسبةً إلى جذر المستودع. أعطِ هذا أو `replay` |
| `replay` | تسجيل مُودَع لإعادة تشغيله مقابل `server` أو `target`، ثم يُفحص التقاطه ويُفشل المهمة عند حدوث تراجع أيضًا |
| `server` | الأمر الذي يبدأ الخادم قيد الاختبار، مكتوبًا بين علامتي اقتباس كما في سطر الأوامر. مطلوب مع `replay` لخادم stdio. مع `target` يبدأ خادم HTTP أولًا، ويمكن تركه خارجًا عندما يكون أحدها قيد التشغيل بالفعل |
| `target` | نقطة نهاية Streamable HTTP لإعادة التشغيل مقابلها، مثل `http://localhost:3000/mcp`. تُوضع بيانات الاعتماد في `replay-args` بصيغة `--header`، ويُظهر سجل الخطوة قيمتها مخفية |
| `replay-args` | أي أعلام `replay` أخرى، مثل `--read-only`. يُرفض `--out`، لأن الإجراء هو من يقرر أين يذهب الالتقاط |
| `fail-on` | كما في `--fail-on`، مع القيمة الافتراضية نفسها التي يستخدمها CLI |
| `args` | أي أعلام `check` أخرى، مكتوبة بين علامتي اقتباس كما في سطر الأوامر. يُرفض `--format`، لأن الإجراء هو من يقرأ التقرير |
| `upload-sarif` | إرسال التقرير إلى فحص الشيفرة. `true` |
| `category` | مساحة الأسماء لفحص الشيفرة. `mcpsnoop`. نوّعها لكل فرع من مصفوفة، وإلا كتبت الفروع فوق بعضها |
| `fail-on-findings` | إفشال المهمة عند وجود نتيجة. `true`. اضبطها على `false` لتسجيل التنبيهات وترك فحص الشيفرة المطلوب يقرر |
| `version` | أي إصدار من mcpsnoop يُثبَّت. الافتراضي هو الإصدار الذي ثبّتته |
| `install` | `false` عندما يكون mcpsnoop موجودًا بالفعل على PATH، وهي الطريقة للدخول على منصة لا يُبنى لها أي إصدار |

المخرجات هي `outcome` و`sarif` و`exit-code` و`capture`، وهو مسار
الالتقاط الذي فُحص، والذي يكون مع `replay` هو الالتقاط الذي كتبته إعادة التشغيل ويستحق
الاحتفاظ به كأثر. `outcome` هو `passed` أو
`findings` أو `error`، والثالث يستحق المعالجة بشكل منفصل. فهو يعني
أنه لم يُفحص شيء، وهذا ليس مثل عدم العثور على شيء. **التشغيل الذي
تعذّر عليه الفحص يُفشل المهمة مهما قال `fail-on-findings`**، لأن
خط أنابيب يمرّ باللون الأخضر دون التحقق من أي شيء أسوأ من خط يفشل.

تحتاج المهمة إلى `security-events: write`، وإلا أجاب الرفع بـ 403. اضبط
`upload-sarif: false` في مستودع بلا فحص شيفرة. تشغيل الفحص نفسه دون
الإجراء، والإشارات التي يمكن أن يفشل بسببها وأكواد الخروج موجودة في
[docs/CI.md](https://github.com/kerlenton/mcpsnoop/blob/main/docs/CI.md).

## التوثيق

| الصفحة | ما تحتويه |
|---|---|
| [فحص الجلسات في CI](https://github.com/kerlenton/mcpsnoop/blob/main/docs/CI.md) | إعادة تشغيل تسجيل مقابل كل بناء، وكل إشارة يمكن أن يفشل بسببها `check`، وأكواد الخروج، والتوكيدات، وتقارير JUnit وSARIF، ومقارنة جلستين، وربط ذلك دون الإجراء |
| [OpenTelemetry وPrometheus](https://github.com/kerlenton/mcpsnoop/blob/main/docs/OPENTELEMETRY.md) | الامتدادات وما تحمله، وبثّها إلى مجمّع، ومقاييس الأدوات الحيّة |
| [استخدام mcpsnoop](https://github.com/kerlenton/mcpsnoop/blob/main/docs/USING.md) | المفاتيح، والتصفية، وصيغ التصدير، وإعادة التشغيل، وما طلبه خادم من مستخدمك، والتكلفة في السياق، والإحصاءات عبر عمليات الالتقاط، وما يرسله كل عميل فعليًا، وجرد الخوادم، والأجهزة البعيدة وملف الإعداد |
| [التنقيح](https://github.com/kerlenton/mcpsnoop/blob/main/docs/REDACTION.md) | إزالة الأسرار، أثناء الالتقاط أو من التقاط لديك بالفعل |
| [كيف يعمل](https://github.com/kerlenton/mcpsnoop/blob/main/docs/HOW_IT_WORKS.md) | حدود الذاكرة، وحد السجل، وتقليم السجلات القديمة |
| [جرّبه فعليًا](https://github.com/kerlenton/mcpsnoop/blob/main/docs/TRY_IT.md) | خادم اختبار منشور، يُدار بواسطة عميلك الخاص |
| [مراجعة الجلسات السابقة](https://github.com/kerlenton/mcpsnoop/blob/main/docs/POST_MORTEM.md) | أين توجد سجلات الجلسات وكيف تفتح واحدة بعد وقوعها |
| [صيغة الالتقاط](https://github.com/kerlenton/mcpsnoop/blob/main/docs/CAPTURE_FORMAT.md) | ما يحمله كل سطر من سجل الجلسة وما لن يتغيّر أبدًا بشأنه، مع JSON Schema للأدوات التي تقرأ عمليات الالتقاط |

## الأمان

يشغّل mcpsnoop أمر الخادم الذي تغلّفه، لذا غلّف فقط الخوادم التي تثق بها،
وشغّل غير الموثوقة منها في حاوية. لا ينفّذ أبدًا أي شيء لم تضعه في
إعداد عميلك.

بالنسبة لسير العمل عن بُعد، استخدم أنفاق SSH أو نقل الملفات عبر SSH بحيث تبقى مصادقة النقل والتشفير والتحقق من المضيف وتدوير المفاتيح وسياسة التدقيق ضمن إعداد SSH الحالي لديك.

### ما يمكن أن يفعله الالتقاط بطرفيتك

الالتقاط هو بيانات اختارها الطرف الآخر. يمكن أن تحمل الإطارات وأسطر stderr تسلسلات هروب طرفية، والطرفية تنفّذ أي شيء يُسلَّم إليها، بدءًا من عرض مشوّش وصولًا إلى OSC 52 الذي يكتب في حافظة نظامك. يحتفظ mcpsnoop فقط بتسلسلات الألوان التي يولّدها بنفسه ويُسقط كل تسلسل هروب آخر قبل أن يصل الإطار إلى طرفيتك. تقتبس خلايا الجدول أحرف التحكم حتى ترى أنها كانت موجودة، ويعرضها المفتّش كاملة، وتحمل نسخة الحافظة الصيغة المُهرَّبة، فلا شيء مخفي عنك ولا شيء يُنفَّذ.

### ما يحتويه الالتقاط

قد تتضمن الإطارات الملتقطة المطالبات ووسائط الأدوات وبيانات الاعتماد ونتائج الأدوات. يغطي [docs/REDACTION.md](https://github.com/kerlenton/mcpsnoop/blob/main/docs/REDACTION.md) تنقيتها، أثناء الالتقاط أو بعده. للإبلاغ عن ثغرة أمنية، راجع [SECURITY.md](https://github.com/kerlenton/mcpsnoop/blob/main/SECURITY.md).

## المساهمة

المشكلات وطلبات السحب مرحّب بها. راجع [CONTRIBUTING.md](https://github.com/kerlenton/mcpsnoop/blob/main/CONTRIBUTING.md) للتفاصيل.

## الترخيص

[MIT](https://github.com/kerlenton/mcpsnoop/blob/main/LICENSE)
تنزيل الأداة