
مكوّن إضافي لـ JADX لدمج خادم MCP
<div align="center">
# JADX-AI-MCP (جزء من Zin MCP Suite)
⚡ خادم MCP مؤتمت بالكامل + إضافة JADX مبنية للتواصل مع LLM عبر MCP لتحليل تطبيقات Android APK باستخدام نماذج LLM مثل Claude — اكتشف الثغرات الأمنية، وحلّل APK، وأجرِ الهندسة العكسية بسهولة تامة.







[](http://www.apache.org/licenses/LICENSE-2.0.html)
#### ⭐ المساهمون
شكرًا لهؤلاء الأشخاص الرائعين على مساهماتهم ⭐
<table>
<tr align="center">
<td>
<a href="https://github.com/ljt270864457">
<img src="https://assets.kitploit.com/production/public/readmes/6657/a21f05ae54dafc25c40b8b86dd848ae6cc62a165c11d1aaa484a2971191c04c0.jpg" width="30px;" alt=""/>
<br /><sub><b>ljt270864457</b></sub>
</a>
</td>
<td>
<a href="https://github.com/p0px">
<img src="https://assets.kitploit.com/production/public/readmes/6657/87812519c4f48c0cb45aa6e7605ed82ba5cb0f0a410c7bec0c031b407330d683.png" width="30px;" alt=""/>
<br /><sub><b>p0px</b></sub>
</a>
</td>
<td>
<a href="https://github.com/bx33661">
<img src="https://assets.kitploit.com/production/public/readmes/6657/cc055bf866f36cc8ba4680bb158f91d2a459559a0ea31ce3525f2024e81d9d1b.png" width="30px;" alt=""/>
<br /><sub><b>bx33661</b></sub>
</a>
</td>
<td>
<a href="https://github.com/Haicaji">
<img src="https://assets.kitploit.com/production/public/readmes/6657/70bd2a092000ef110c6ef9a177ae39889c5fa12af384165218ecdc65ab87cca2.png" width="30px;" alt=""/>
<br /><sub><b>Haicaji</b></sub>
</a>
</td>
<td>
<a href="https://github.com/mostafaNazari702">
<img src="https://assets.kitploit.com/production/public/readmes/6657/c15b7582722221365f89b5900f1e2d53a5de4bfe888f1f4cf3c24a09ca74553b.jpg" width="30px;" alt=""/>
<br /><sub><b>Mostafa Nazari</b></sub>
</a>
</td>
<td>
<a href="https://github.com/ChineseAStar">
<img src="https://assets.kitploit.com/production/public/readmes/6657/69e2a4cd0bbb7228e06fd1ccc32a37c30d1406fc6b06cfce0a6e2d22f5bbf6b0.png" width="30px;" alt=""/>
<br /><sub><b>ChineseAStar</b></sub>
</a>
</td>
<td>
<a href="https://github.com/cyal1r">
<img src="https://assets.kitploit.com/production/public/readmes/6657/f81a8c01f47c36dbf03f4117810d43075e3ca85f2d2d3c5d70cfb6ea20f45290.jpg" width="30px;" alt=""/>
<br /><sub><b>cyal1</b></sub>
</a>
</td>
<td>
<a href="https://github.com/badmonkey7">
<img src="https://assets.kitploit.com/production/public/readmes/6657/07d2eb4e3cd4cc09c5dca57d877c4d816247baab606e7848af7a0ab7d23c040d.jpg" width="30px;" alt=""/>
<br /><sub><b>badmonkey7</b></sub>
</a>
</td>
<td>
<a href="https://github.com/tiann">
<img src="https://assets.kitploit.com/production/public/readmes/6657/73dc97b271331bb2711fc80543636b25ec03cb523b985af1af05ea9ab6f40cfd.jpg" width="30px;" alt=""/>
<br /><sub><b>tiann</b></sub>
</a>
</td>
<td>
<a href="https://github.com/ZERO-A-ONE">
<img src="https://assets.kitploit.com/production/public/readmes/6657/73c55a088226d05d6fbf5ff1d14caee34ef98224c00e463acd07d6f4bb65e655.png" width="30px;" alt=""/>
<br /><sub><b>ZERO-A-ONE</b></sub>
</a>
</td>
<td>
<a href="https://github.com/neoz">
<img src="https://assets.kitploit.com/production/public/readmes/6657/77a4659904d1ba9253e77f8ff592547b305b3a1a9f46e289d1a900c5a7983d68.jpg" width="30px;" alt=""/>
<br /><sub><b>neoz</b></sub>
</a>
</td>
<td>
<a href="https://github.com/SamadiPour">
<img src="https://assets.kitploit.com/production/public/readmes/6657/4a39a74e2cd9e53f1ef326afc4a7d177d8689e7238dce567aa7dede879ce8f9f.jpg" width="30px;" alt=""/>
<br /><sub><b>SamadiPour</b></sub>
</a>
</td>
<td>
<a href="https://github.com/wuseluosi">
<img src="https://assets.kitploit.com/production/public/readmes/6657/3ada2b6e2ed063020ca3b0ce57bd5cd5c1cba2416454d2d038f630a667b88e8c.png" width="30px;" alt=""/>
<br /><sub><b>wuseluosi</b></sub>
</a>
</td>
<td>
<a href="https://github.com/CainYzb">
<img src="https://assets.kitploit.com/production/public/readmes/6657/b6bdcfb4162b1366cb4850ba880ab59e42f705ddd91fbf25dd8912ddfa7dd2bf.png" width="30px;" alt=""/>
<br /><sub><b>CainYzb</b></sub>
</a>
</td>
<td>
<a href="https://github.com/tbodt">
<img src="https://assets.kitploit.com/production/public/readmes/6657/bb6b73635bffe086662106c496032717f4cfeee9d0341799d0afaf5f9d009e92.jpg" width="30px;" alt=""/>
<br /><sub><b>tbodt</b></sub>
</a>
</td>
<td>
<a href="https://github.com/LilNick0101">
<img src="https://assets.kitploit.com/production/public/readmes/6657/628dc1638821f28b99dbfe9a971259713d16e0bcfc5718783f91eb09acebd64f.png" width="30px;" alt=""/>
<br /><sub><b>LilNick0101</b></sub>
</a>
</td>
<td>
<a href="https://github.com/lwsinclair">
<img src="https://assets.kitploit.com/production/public/readmes/6657/e3169690505f7a2b7fd0968057af5807f29830292553cbaa6eaf0ad418521b59.jpg" width="30px;" alt=""/>
<br /><sub><b>lwsinclair</b></sub>
</a>
</td>
</tr>
<tr align="center">
<td>
<a href="https://github.com/LYC-Android">
<img src="https://assets.kitploit.com/production/public/readmes/6657/6f0596bf4a8146f7b79a95baa7704b130d61c0852890ef3e0aa3fc8f898d0a35.jpg" width="30px;" alt=""/>
<br /><sub><b>LYC-Android</b></sub>
</a>
</td>
<td>
<a href="https://github.com/zbhello">
<img src="https://assets.kitploit.com/production/public/readmes/6657/03a9374ed3b190d5b659fd30d28202aeebc237753bced41b02be84efed36a24e.jpg" width="30px;" alt=""/>
<br /><sub><b>zbhello</b></sub>
</a>
</td>
<td>
<a href="https://github.com/1yearning1">
<img src="https://assets.kitploit.com/production/public/readmes/6657/903595003df5d7eab06f7e32897f8e34a15fe9f677485f7c8e3939ddd895bffd.png" width="30px;" alt=""/>
<br /><sub><b>1yearning1</b></sub>
</a>
</td>
<td>
<a href="https://github.com/mhsjzsq">
<img src="https://assets.kitploit.com/production/public/readmes/6657/dadd027e0da3b8c59babf87a66dd50985c6815676c75677523148ea640b1926a.png" width="30px;" alt=""/>
<br /><sub><b>mhsjzsq</b></sub>
</a>
</td>
<td>
<a href="https://github.com/darkblack1234">
<img src="https://assets.kitploit.com/production/public/readmes/6657/02fd1704e19e0fd764f024e440eef0f47afe420baa415e24227a020b3f9f21c8.png" width="30px;" alt=""/>
<br /><sub><b>darkblack1234</b></sub>
</a>
</td>
<td>
<a href="https://github.com/Merrg1n">
<img src="https://assets.kitploit.com/production/public/readmes/6657/43cdc3b100677e85f4e063711c59fe487d994fb66a8e57ba68444f6d9fb0dfd3.png" width="30px;" alt=""/>
<br /><sub><b>Merrg1n</b></sub>
</a>
</td>
</tr>
</table>
</div>
<!-- لا يزال في مرحلة تطوير مبكرة، لذا توقّع وجود أخطاء وانهيارات وأخطاء منطقية.-->
<!-- إضافة (Plugin) مستقلة لـ [JADX](https://github.com/skylot/jadx) (بدأت كنسخة متفرعة - Fork) مع تكامل بروتوكول سياق النموذج (MCP) لتحليل الشيفرة الساكنة المدعوم بالذكاء الاصطناعي ومراجعة الشيفرة في الوقت الفعلي ومهام الهندسة العكسية باستخدام Claude.-->
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/54d557a38e17d9886d933b2e480910702f245c4cf62dc720a842cfe40994efe2.png">
</div>
<!--  صورة تم إنشاؤها باستخدام أدوات الذكاء الاصطناعي. -->
#### اقرأ الوثائق
- الوثائق متاحة الآن على: https://jadx-ai-mcp.readthedocs.io/en/latest/
---
## 🤖 ما هو JADX-AI-MCP؟
**JADX-AI-MCP** هي إضافة (plugin) لمُفكِّك الشيفرة [JADX](https://github.com/skylot/jadx) تتكامل مباشرةً مع [بروتوكول سياق النموذج (MCP)](https://github.com/anthropic/mcp) لتوفير **دعم الهندسة العكسية المباشر مع النماذج اللغوية الكبيرة (LLMs) مثل Claude**.
تخيّل: "فك الشيفرة ← مراجعة الشيفرة المدركة للسياق ← توصيات الذكاء الاصطناعي" — كل ذلك في الوقت الفعلي.
#### مخطط التسلسل عالي المستوى
```mermaid
sequenceDiagram
LLM CLIENT->>JADX MCP SERVER: INVOKE MCP TOOL
JADX MCP SERVER->>JADX AI MCP PLUGIN: INVOKE HTTP REQUEST
JADX AI MCP PLUGIN->>REQUEST HANDLERS: INVOKE HTTP REQUEST HANDLER
REQUEST HANDLERS->>JADX GUI: PERFORM ACTION/GATHER DATA
JADX GUI->>REQUEST HANDLERS: ACTION PERFORMED/DATA GATHERED
REQUEST HANDLERS->>JADX AI MCP PLUGIN: CRAFT HTTP RESPONSE
JADX AI MCP PLUGIN->>JADX MCP SERVER:HTTP RESPONSE
JADX MCP SERVER->>LLM CLIENT: MCP TOOL RESULT
```
### شاهد العروض التوضيحية!
- **إجراء تحليل سريع**
https://github.com/user-attachments/assets/b65c3041-fde3-4803-8d99-45ca77dbe30a
- **العثور على الثغرات الأمنية بسرعة**
https://github.com/user-attachments/assets/c184afae-3713-4bc0-a1d0-546c1f4eb57f
- **دعم وكلاء ذكاء اصطناعي متعددين**
https://github.com/user-attachments/assets/6342ea0f-fa8f-44e6-9b3a-4ceb8919a5b0
- **التشغيل مع عميل LLM المفضل لديك**
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
- **تحليل موارد APK**
https://github.com/user-attachments/assets/f42d8072-0e3e-4f03-93ea-121af4e66eb1
- **مساعد الذكاء الاصطناعي الخاص بك أثناء تصحيح أخطاء APK باستخدام JADX**
https://github.com/user-attachments/assets/2b0bd9b1-95c1-4f32-9b0c-38b864dd6aec
إنه مزيج من أداتين:
1. JADX-AI-MCP
2. [JADX MCP SERVER](https://github.com/zinja-coder/jadx-mcp-server)
## 🤖 ما هو JADX-MCP-SERVER؟
**JADX MCP Server** هو خادم Python مستقل يتفاعل مع إضافة `JADX-AI-MCP` (انظر: [jadx-ai-mcp](https://github.com/zinja-coder/jadx-ai-mcp)) عبر MCP (بروتوكول سياق النموذج). وهو يتيح لنماذج اللغة الكبيرة (LLMs) التواصل مع سياق تطبيق Android المُفكَّك مباشرةً.
---
## مشاريع أخرى في Zin MCP Suite
- **[APKTool-MCP-Server](https://github.com/zinja-coder/apktool-mcp-server)**
- **[JADX-MCP-Server](https://github.com/zinja-coder/jadx-mcp-server)**
- **[ZIN-MCP-Client](https://github.com/zinja-coder/zin-mcp-client)**
## أدوات MCP الحالية
أدوات MCP التالية متاحة:
- `fetch_current_class()` — الحصول على اسم الفئة والمصدر الكامل للفئة المحددة
- `get_selected_text()` — الحصول على النص المحدد حاليًا
- `get_all_classes()` — سرد جميع الفئات في المشروع
- `get_class_source()` — الحصول على المصدر الكامل لفئة معينة
- `get_method_by_name()` — جلب مصدر دالة
- `search_method_by_name()` — البحث عن دالة عبر الفئات
- `search_classes_by_keyword()` — البحث عن الفئات التي يحتوي شفرة مصدرها على كلمة مفتاحية محددة (يدعم الترقيم الصفحي)
- `get_methods_of_class()` — سرد الدوال في فئة
- `get_fields_of_class()` — سرد الحقول في فئة
- `get_smali_of_class()` — جلب smali الخاص بالفئة
- `get_main_activity_class()` — جلب النشاط الرئيسي من jadx المذكور في ملف AndroidManifest.xml.
- `get_main_application_classes_code()` — جلب شفرة جميع فئات التطبيق الرئيسية بناءً على اسم الحزمة المحدد في AndroidManifest.xml.
- `get_main_application_classes_names()` — جلب أسماء جميع فئات التطبيق الرئيسية بناءً على اسم الحزمة المحدد في AndroidManifest.xml.
- `get_android_manifest()` — استرداد وإرجاع محتوى AndroidManifest.xml.
- `get_manifest_component` - استرداد مكوّن manifest محدد بدلاً من ملف manifest بأكمله
- `get_strings()` : جلب ملف strings.xml
- `get_all_resource_file_names()` : استرداد أسماء جميع ملفات الموارد الموجودة في التطبيق
- `get_resource_file()` : استرداد محتوى ملف المورد
- `rename_class()` : إعادة تسمية الفئة
- `rename_method()` : إعادة تسمية الدالة
- `rename_field()` : إعادة تسمية الحقل
- `rename_package()` : إعادة تسمية الحزمة بأكملها
- `rename_variable()` : إعادة تسمية المتغير داخل دالة
- `add_comment()` : إضافة تعليق إلى فئة أو دالة أو حقل أو سطر شفرة واحد (`line=`، رقم السطر بدءًا من 1 في المصدر المُفكَّك)، يُعرض في JADX-GUI ويُحفظ مع المشروع (إعادة التعليق على الهدف نفسه تحدّثه، والتعليق الفارغ يزيله)
- `list_comments()` : سرد التعليقات المخزنة في المشروع، مع إمكانية تصفيتها لفئة واحدة
- `debug_get_stack_frames()` : الحصول على إطارات المكدس من مصحح أخطاء jadx
- `debug_get_threads()` : الحصول على رؤى حول الخيوط من مصحح أخطاء jadx
- `debug_get_variables()` : الحصول على المتغيرات من مصحح أخطاء jadx
- `xrefs_to_class()` : العثور على جميع المراجع إلى فئة (يُرجع مراجع على مستوى الدالة ومستوى الفئة، ويدعم الترقيم الصفحي)
- `xrefs_to_method()` : العثور على جميع المراجع إلى دالة (يتضمن الدوال المتعلقة بالتجاوز، ويدعم الترقيم الصفحي)
- `xrefs_to_field()` : العثور على جميع المراجع إلى حقل (يُرجع الدوال التي تصل إلى الحقل، ويدعم الترقيم الصفحي)
---
## 🗒️ أمثلة على المطالبات (Prompts)
🔍 فهم أساسي للكود
"اشرح ما تفعله هذه الفئة في فقرة واحدة."
"لخّص مسؤوليات هذه الدالة (method)."
"هل يوجد أي تشويش (obfuscation) في هذه الفئة؟"
"اسرد جميع أذونات Android التي قد تتطلبها هذه الفئة."
🛡️ اكتشاف الثغرات الأمنية
"هل توجد أي استخدامات غير آمنة لواجهات API في هذه الدالة؟"
"افحص هذه الفئة بحثًا عن أسرار أو بيانات اعتماد مضمّنة بشكل ثابت (hardcoded)."
"هل تقوم هذه الدالة بتنقية مدخلات المستخدم قبل استخدامها؟"
"ما الثغرات الأمنية التي قد يُدخلها هذا الكود؟"
🛠️ مساعدات الهندسة العكسية
"أزل التشويش وأعد تسمية الفئات والدوال إلى أسماء قابلة للقراءة."
"هل يمكنك استنتاج الغرض الأصلي لهذه الدالة (method) المكتوبة بـ smali؟"
"ما المكتبات أو حزم SDK التي يبدو أن هذه الفئة جزء منها؟"
"أخبرني ما الفئات التي تحتوي على كود متعلق بـ 'التشفير' (encryption)؟"
📦 التحليل الساكن
"اسرد جميع استدعاءات API المتعلقة بالشبكة في هذه الفئة."
"حدّد عمليات إدخال/إخراج الملفات ومخاطرها المحتملة."
"هل تسرّب هذه الدالة معلومات الجهاز أو البيانات الشخصية (PII)؟"
🤖 تعديل الكود بالذكاء الاصطناعي
"أعد هيكلة هذه الدالة لتحسين قابليتها للقراءة."
"أضف تعليقات إلى هذا الكود تشرح كل خطوة."
"أعد كتابة هذه الدالة المكتوبة بـ Java بلغة Python لأغراض التحليل."
📄 التوثيق والبيانات الوصفية
"أنشئ تعليقات بأسلوب Javadoc لجميع الدوال."
"ما الحزمة أو مكوّن التطبيق الذي تنتمي إليه هذه الفئة على الأرجح؟"
"هل يمكنك تحديد نوع مكوّن Android (Activity، Service، إلخ)؟"
🐞 مساعد التصحيح (Debugger)
```
"Fetch stack frames, varirables and threads from debugger and provide summary"
"Based the stack frames from debugger, explain the execution flow of the application"
"Based on the state of variables, is there security threat?"
```
## 🛠️ البدء
### 1. التنزيل من Releases: https://github.com/zinja-coder/jadx-ai-mcp/releases
> [!NOTE]
>
> نزّل كلاً من ملفي `jadx-ai-mcp-<version>.jar` و `jadx-mcp-server-<version>.zip`.
```bash
# 0. Download the jadx-ai-mcp-<version>.jar and jadx-mcp-server-<version>.zip
https://github.com/zinja-coder/jadx-ai-mcp/releases
# 1.
unzip jadx-mcp-server-<version>.zip
├jadx-mcp-server/
├── jadx_mcp_server.py
├── requirements.txt
├── README.md
├── LICENSE
├── src/
├── static/
├── examples/
└── test.sh
├jadx-ai-mcp-<version>.jar
# 2. Install the plugin
# For this you can follow two approaches:
## 1. One liner - execute below command in your shell
jadx plugins --install "github:zinja-coder:jadx-ai-mcp"
## The above one line code will install the latest version of the plugin directly into the jadx, no need to download the jadx-ai-mcp's .jar file.
## 2. Or you can use JADX-GUI to install it by following images as shown below:
```
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/1c2660639daf7352d2bdeafeb7b5e0846e3c0bed45846ee52256b7bf3d316386.png">
</div>
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/ccc2cc3566566517abad1097711afad3c668a999dc105d82686c4ffb791eba3b.png">
</div>
<div align="center">
<img alt="banner" height="480px" widht="620px" src="https://assets.kitploit.com/production/public/readmes/6657/0f9770bc38f4234826a661e6d37bc205a801ad38380363fd4394a903bd35ff94.png">
</div>
```bash
## 3. GUI method, download the .jar file and follow below steps shown in images
```




```bash
# 3. Navigate to jadx-mcp-server directory
cd jadx-mcp-server
# 4. This project uses uv - https://github.com/astral-sh/uv instead of pip for dependency management.
## a. Install uv (if you dont have it yet)
curl -LsSf https://astral.sh/uv/install.sh | sh
## b. OPTIONAL, if for any reasons, you get dependecy errors in jadx-mcp-server, Set up the environment
uv venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
## c. OPTIONAL Install dependencies
uv pip install httpx fastmcp
# The setup for jadx-ai-mcp and jadx_mcp_server is done.
```
## 🤖 2. استخدم Claude Desktop
تأكد من أن Claude Desktop يعمل مع تمكين MCP.
على سبيل المثال، استخدمت ما يلي لـ Kali Linux: https://github.com/aaddrick/claude-desktop-debian
قم بتكوين وإضافة خادم MCP إلى ملف LLM:
```bash
nano ~/.config/Claude/claude_desktop_config.json
```
بالنسبة إلى:
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
والمحتوى التالي فيه:
```json
{
"mcpServers": {
"jadx-mcp-server": {
"command": "/<path>/<to>/uv",
"args": [
"--directory",
"</PATH/TO/>jadx-mcp-server/",
"run",
"jadx_mcp_server.py"
]
}
}
}
```
استبدل:
- `path/to/uv` بالمسار الفعلي إلى ملفك التنفيذي `uv`
- `path/to/jadx-mcp-server` بالمسار المطلق إلى المكان الذي استنسخت فيه هذا
المستودع
بعد ذلك، تنقّل في الشيفرة وتفاعل عبر مطالبات مراجعة الشيفرة في الوقت الفعلي باستخدام التكامل المدمج.
**أو**
أو يمكنك تثبيت jadx_mcp_server مباشرةً كملف تنفيذي مباشرةً باستخدام الأمر أدناه:
```
uv tool install git+https://github.com/zinja-coder/jadx-mcp-server
```
ثم يمكنك ببساطة توفير `jadx_mcp_server` في قسم `command` من إعدادات mcp.
## 3. استخدام Cherry Studio
إذا كنت ترغب في إعداد أداة MCP في Cherry Studio، يمكنك الرجوع إلى الإعدادات التالية.
- النوع: stdio
- الأمر: uv
- الوسيط:
```bash
--directory
path/to/jadx-mcp-server
run
jadx_mcp_server.py
```
- `path/to/jadx-mcp-server` مع المسار المطلق إلى المكان الذي استنسخت فيه هذا المستودع
## 4. استخدام LMStudio
يمكنك أيضًا استخدام JADX AI MCP Server مع LM Studio من خلال تهيئة ملف mcp.json الخاص به. إليك الدليل المرئي.
https://github.com/user-attachments/assets/b4a6b280-5aa9-4e76-ac72-a0abec73b809
## 5. التشغيل في وضع HTTP Stream
يمكنك أيضًا استخدام Jadx في وضع HTTP Stream باستخدام خيار `--http` مع `jadx_mcp_server.py` كما هو موضح فيما يلي:
```bash
uv run jadx_mcp_server.py --http
OR
uv run jadx_mcp_server.py --http --port 9999
```
### خيارات سطر الأوامر المتقدمة — فهم الأعلام
هناك **اتصالان منفصلان** ولكل منهما المضيف/المنفذ الخاص به:
```
┌─────────────┐ --host / --port ┌──────────────────┐ --jadx-host / --jadx-port ┌──────────────────┐
│ LLM Client │ ◄──────────────────► │ jadx-mcp-server │ ──────────────────────────► │ JADX-GUI Plugin │
│ (Claude, │ Where the MCP server │ │ Where the MCP server looks │ (jadx-ai-mcp) │
│ Codex..) │ LISTENS for clients │ │ for the JADX plugin │ │
└─────────────┘ └──────────────────┘ └──────────────────┘
```
| العَلَم | الافتراضي | يتحكم في |
|------|---------|----------|
| `--http` | معطّل | استخدام نقل HTTP بدلاً من stdio |
| `--host` | `127.0.0.1` | **المكان الذي يستمع فيه خادم MCP** (عنوان الربط لعملاء LLM) |
| `--port` | `8651` | **المنفذ الذي يستمع عليه خادم MCP** |
| `--jadx-host` | `127.0.0.1` | **مكان العثور على إضافة JADX** (جهاز JADX-GUI الهدف) |
| `--jadx-port` | `8650` | **المنفذ الذي تعمل عليه إضافة JADX** |
### أمثلة الاستخدام
**السيناريو 1 — كل شيء على الجهاز نفسه (الأكثر شيوعًا):**
```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
```
**السيناريو 2 — حاوية Docker أو WSL (خادم MCP متاح من شبكة المضيف):**
```bash
# MCP server listens on ALL interfaces so the host can reach it
# JADX plugin is still on the same machine
uv run jadx_mcp_server.py --http --host 0.0.0.0
```
**السيناريو 3 — تشغيل JADX-GUI على جهاز مختلف (مثل جهاز ظاهري بعيد):**
```bash
# MCP server runs locally, but connects to JADX plugin on a remote machine
uv run jadx_mcp_server.py --http --jadx-host 192.168.1.100
```
**السيناريو 4 — إعداد عن بُعد كامل (كل شيء على أجهزة مختلفة):**
```bash
# MCP server listens on all interfaces on port 9999
# JADX plugin is on a different machine at 192.168.1.100:8652
uv run jadx_mcp_server.py --http --host 0.0.0.0 --port 9999 --jadx-host 192.168.1.100 --jadx-port 8652
```
> [!CAUTION]
> ### ⚠️ تحذير أمني — الربط عن بُعد
>
> عند استخدام `--host 0.0.0.0` (أو أي عنوان غير localhost)، يربط خادم MCP نفسه بـ **جميع واجهات الشبكة** عبر **HTTP عادي دون أي مصادقة**. وهذا يعني:
>
> - **يمكن لأي شخص على الشبكة** الاتصال واستدعاء جميع أدوات MCP
> - **لا يوجد تشفير TLS** — يمكن اعتراض حركة المرور
> - يمكن للمهاجم استخدام الخادم لـ **قراءة الشيفرة المفككة**، و**إعادة تسمية الفئات/الطرق**، و**الوصول إلى معلومات التصحيح**
>
> **إجراءات التخفيف:**
> - اربط بـ `0.0.0.0` فقط على **شبكات موثوقة ومعزولة** (مثل Docker bridge أو جهاز ظاهري محلي)
> - استخدم **جدار حماية** لتقييد الوصول إلى منفذ MCP
> - فكّر في استخدام **نفق SSH** بدلاً من ذلك: `ssh -L 8651:127.0.0.1:8651 remote-host`
### التوافق مع وضع Stdio
> [!NOTE]
> عند التشغيل في وضع **stdio** (الوضع الافتراضي، دون `--http`)، تُكتب جميع المخرجات القابلة للقراءة البشرية (اللافتة، وفحص السلامة) إلى **stderr** لإبقاء **stdout** محجوزًا لتدفق MCP JSON-RPC. وهذا يضمن التوافق مع Codex وClaude Desktop وغيرها من عملاء MCP القائمة على stdio.
## 6. إعداد المنفذ والمضيف المخصصين لإضافة JADX AI MCP Plugin
<img width="800" height="335" alt="image" src="https://assets.kitploit.com/production/public/readmes/6657/34e13964afba1fa722733838892491b2ec9ea2d11f2dfd4e8612aa62817dfa41.png" />
1. Configure Port: اضبط المنفذ الذي ستستمع عليه إضافة JADX AI MCP Plugin.
2. Default Port: أرجِع التغييرات واستمع على المنفذ الافتراضي.
3. Restart Server: أعد تشغيل خادم JADX AI MCP Plugin قسريًا.
4. Server Status: تحقّق من حالة خادم JADX AI MCP Plugin.
للاتصال بإضافة JADX AI MCP Plugin العاملة على منفذ مخصص، سيُستخدم الخيار `--jadx-port` كما هو موضح فيما يلي:
```
uv run jadx_mcp_server.py --jadx-port 8652
```
إذا كان JADX AI MCP Plugin يعمل على **جهاز مختلف** (على سبيل المثال، JADX على VM بعيد، وخادم MCP على مضيفك المحلي)، فاستخدم الخيار `--jadx-host`:
```bash
# Connect to JADX plugin on a remote host
uv run jadx_mcp_server.py --jadx-host 192.168.1.100 --jadx-port 8650
```
### مرجع CLI — فهم العلامات
هناك **اتصالان منفصلان** ولكل منهما المضيف/المنفذ الخاص به:
```
┌─────────────┐ --host / --port ┌──────────────────┐ --jadx-host / --jadx-port ┌──────────────────┐
│ LLM Client │ ◄──────────────────► │ jadx-mcp-server │ ──────────────────────────► │ JADX-GUI Plugin │
│ (Claude, │ Where the MCP server │ │ Where the MCP server looks │ (jadx-ai-mcp) │
│ Codex..) │ LISTENS for clients │ │ for the JADX plugin │ │
└─────────────┘ └──────────────────┘ └──────────────────┘
```
| العَلَم | الافتراضي | يتحكم في |
|------|---------|----------|
| `--http` | معطّل | استخدام نقل HTTP بدلاً من stdio |
| `--host` | `127.0.0.1` | **المكان الذي يستمع فيه خادم MCP** (عنوان الربط لعملاء LLM) |
| `--port` | `8651` | **المنفذ الذي يستمع عليه خادم MCP** |
| `--jadx-host` | `127.0.0.1` | **مكان العثور على إضافة JADX** (جهاز JADX-GUI الهدف) |
| `--jadx-port` | `8650` | **المنفذ الذي تعمل عليه إضافة JADX** |
### أمثلة الاستخدام
**السيناريو 1 — كل شيء على الجهاز نفسه (الأكثر شيوعًا):**
```bash
# Default: MCP server on localhost:8651, connects to JADX plugin on localhost:8650
uv run jadx_mcp_server.py --http
```
**السيناريو 2 — حاوية Docker أو WSL (خادم MCP متاح من شبكة المضيف):**
```bash
# MCP server listens on ALL interfaces so the host can reach it
# JADX plugin is still on the same machine
uv run jadx_mcp_server.py --http --host 0.0.0.0
```
**السيناريو 3 — تشغيل JADX-GUI على جهاز مختلف (مثل جهاز ظاهري بعيد):**
```bash
# MCP server runs locally, but connects to JADX plugin on a remote machine
uv run jadx_mcp_server.py --http --jadx-host 192.168.1.100
```
**السيناريو 4 — إعداد عن بُعد كامل (كل شيء على أجهزة مختلفة):**
```bash
# MCP server listens on all interfaces on port 9999
# JADX plugin is on a different machine at 192.168.1.100:8652
uv run jadx_mcp_server.py --http --host 0.0.0.0 --port 9999 --jadx-host 192.168.1.100 --jadx-port 8652
```
إعداد MCP لمنفذ jadx المخصص سيكون على النحو التالي لـ claude:
```
{
"mcpServers": {
"jadx-mcp-server": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/jadx-mcp-server/",
"run",
"jadx_mcp_server.py",
"--jadx-port",
"8652"
]
}
}
}
```
## جرّبه
1. شغّل jadx-gui وحمّل أي ملف .apk
---
[Read more](https://github.com/zinja-coder/jadx-ai-mcp)