
خادم MCP مدعوم بالذكاء الاصطناعي لـ Flipper Zero. تحكم في SubGHz وNFC وRFID وIR وBLE وGPIO والمزيد عبر WiFi باستخدام Claude أو أي عميل MCP.
خادم MCP (بروتوكول سياق النموذج) مكتوب بلغة Rust يعمل مباشرة على لوحة WiFi Dev Board v1 الخاصة بـ Flipper Zero (ESP32-S2)، مما يمكّن وكلاء الذكاء الاصطناعي من التحكم في Flipper Zero عبر الشبكة.
يضع هذا المشروع خادم MCP على Flipper نفسه. يمكن لأي عميل ذكاء اصطناعي متوافق مع MCP (Claude Desktop، Claude Code، إلخ) الاتصال واستخدام قدرات Flipper كأدوات — SubGHz، NFC، RFID، IR، GPIO، BadUSB، iButton، تخزين الملفات، والمزيد.
على عكس المشاريع الأخرى التي تتطلب جهاز كمبيوتر مضيفًا متصلًا عبر USB، يعمل flipper-mcp على وحدة ESP32-S2 WiFi المرفقة بـ Flipper. يصبح Flipper أداة مستقلة يمكن الوصول إليها عبر الشبكة.
LOCAL (same network):
MCP Client ──HTTP──► flipper-mcp.local:8080 (ESP32-S2) ──UART──► Flipper Zero
REMOTE (cross-network):
MCP Client ──HTTP──► Relay Server ◄──WebSocket── ESP32-S2 ──UART──► Flipper Zero
يشغّل ESP32-S2 خادم HTTP يطبّق بروتوكول MCP. يترجم استدعاءات أدوات MCP إلى أوامر CLI الخاصة بـ Flipper Zero عبر UART بمعدل 115200 baud. يتيح خادم relay المرافق الوصول عن بُعد من أي شبكة.
flipper-mcp.localبأي جهاز أتصل؟
| المرحلة | الاتصال بـ | ملاحظات |
|---|---|---|
| فلاشة firmware | WiFi Dev Board USB-C | اللوحة لها منفذ USB خاص بها، منفصل عن Flipper |
| مراقبة Serial | WiFi Dev Board USB-C | نفس اتصال USB المستخدم في الفلاشة |
| ملفات إعدادات بطاقة SD | Flipper Zero بطاقة SD | أدخل بطاقة SD في Flipper، أو أخرجها وثبّتها على PC |
| أوامر التحكم بالخادم | Flipper Zero بطاقة SD | أنشئ ملف server.cmd في apps_data/flipper_mcp/ |
| اتصال UART | تلقائي | يتصل WiFi Dev Board و Flipper عبر رأس GPIO |
| طلبات MCP HTTP | WiFi Dev Board IP:8080 | اتصل عبر شبكة WiFi الخاصة بك |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install espup
espup install
source ~/export-esp.sh # Run this in every new terminal
cargo install espflash
cargo install ldproxy
sudo apt install -y git curl gcc build-essential pkg-config libudev-dev libssl-dev python3 python3-venv cmake ninja-build
تعليمات الإعداد الكاملة في docs/SETUP.md
source ~/export-esp.sh
cd firmware
cargo build --release --target xtensa-esp32s2-espidf
espflash flash --monitor target/xtensa-esp32s2-espidf/release/flipper-mcp
أنشئ config.txt على بطاقة SD الخاصة بـ Flipper في SD:/apps_data/flipper_mcp/config.txt:
wifi_ssid=YourNetworkName
wifi_password=YourPassword
device_name=flipper-mcp
أو كوّن مباشرة من Flipper باستخدام تطبيق FAP المرافق (انظر الخطوة 5):
Apps → Tools → Flipper MCP → Configure WiFi
عند أول إقلاع بدون ملف إعدادات، ينتظر ESP32 ويكتب status=needs_config في ملف الحالة. سيعرض تطبيق Flipper FAP هذا على شاشة Status.
قبل تكوين عميل ذكاء اصطناعي، تأكد من إمكانية الوصول إلى الخادم باستخدام curl:
# Quick health check
curl http://flipper-mcp.local:8080/health
# Full verification — initialize + list all available tools
./scripts/test-connection.sh
# If mDNS isn't resolving on your OS, pass the IP directly:
./scripts/test-connection.sh 192.168.x.xxx
احصل على عنوان IP الخاص بـ Flipper من قائمة Flipper MCP → Status، ثم اختبر:
بث BLE beacon (إرسال إعلان BLE منتحل):
curl -X POST http://192.168.0.58:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ble_beacon","arguments":{"data":"020106"}}}'
لوحة مفاتيح BLE HID (محاكاة لوحة مفاتيح لاسلكية والكتابة):
# Start HID emulation
curl -X POST http://192.168.0.58:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ble_hid_start","arguments":{}}}'
# Type a message
curl -X POST http://192.168.0.58:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"ble_hid_type","arguments":{"text":"Hello from Flipper!"}}}'
# Stop HID emulation
curl -X POST http://192.168.0.58:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"ble_hid_stop","arguments":{}}}'
إرسال IR (إرسال أكواد التحكم عن بُعد بالأشعة تحت الحمراء):
# NEC protocol IR code (generic TV power button)
curl -X POST http://192.168.0.58:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ir_tx","arguments":{"protocol":"NEC","address":"00","command":"01","repeat":0}}}'
استقبال SubGHz (الاستماع للإشارات اللاسلكية على 433.92 MHz):
curl -X POST http://192.168.0.58:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"subghz_rx","arguments":{"frequency":433920000,"duration":5000}}}'
استبدل 192.168.0.58 بعنوان IP الفعلي لـ Flipper.
ثم أضف إلى إعدادات Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"flipper": {
"url": "http://flipper-mcp.local:8080/mcp"
}
}
}
ثبّت تطبيق Flipper MCP المرافق من flipper-app/ على Flipper Zero. ابنِ باستخدام ufbt وانسخ ملف .fap إلى SD:/apps/Tools/:
cd flipper-app && ufbt # produces flipper_mcp.fap
# Copy flipper_mcp.fap to your Flipper SD card under apps/Tools/
يظهر التطبيق في Apps → Tools → Flipper MCP ويوفر:
| الشاشة | ما تفعله |
|---|---|
| Status | تطلب تحديثًا جديدًا للحالة من ESP32، وتعرض IP و SSID وحالة الخادم والإصدار |
| Start / Stop / Restart | تتحكم في دورة حياة خادم MCP HTTP |
| Reboot Board | تعيد تشغيل لوحة ESP32 WiFi Dev Board |
| Configure WiFi | لوحة مفاتيح على الشاشة لإدخال SSID + كلمة المرور؛ تكتب config.txt إلى بطاقة SD |
| View Logs | سجل تشخيصي قابل للتمرير يكتبه ESP32 كل 30 ثانية |
| Tools List | قائمة قابلة للتمرير بجميع أدوات MCP المسجلة حاليًا على ESP32 |
| Refresh Modules | تُشغّل إعادة فحص اكتشاف FAP + إعادة تحميل modules.toml على ESP32 |
يتواصل التطبيق عبر ملفات بطاقة SD (لا توصيلات إضافية تتجاوز رأس GPIO). Configure WiFi هو معالج أول إقلاع — لا حاجة لهاتف أو متصفح أو نصوص PC.
استضافة ذاتية (شغّل الملف الثنائي في أي مكان):
./scripts/build-relay.sh
./target/release/flipper-mcp-relay --listen 0.0.0.0:9090
# Then add relay_url to config.txt on the Flipper SD card:
# relay_url=ws://your-server:9090/tunnel
النشر السحابي (AWS أو GCP، مع TLS + DNS):
# Bootstrap state storage, then deploy
./infra/bootstrap/aws.sh # or ./infra/bootstrap/gcp.sh
cd infra/aws && cp terraform.tfvars.example terraform.tfvars
tofu init && tofu apply
# Outputs the relay URL and a ready-to-paste wifi-config.sh command
انظر RELAY.md للحصول على التعليمات الكاملة.
| الفئة | الأدوات | الوصف |
|---|---|---|
| SubGHz | subghz_tx, subghz_rx, subghz_decode_raw, subghz_chat, subghz_tx_from_file | عمليات الترددات الراديوية |
| NFC | nfc_detect, nfc_read, nfc_emulate, nfc_field | التفاعل مع وسوم NFC |
| RFID | rfid_read, rfid_emulate, rfid_write | RFID منخفض التردد |
| Infrared | ir_tx, ir_rx | التحكم عن بُعد بالأشعة تحت الحمراء |
| GPIO | gpio_read, gpio_write, gpio_set_mode | التحكم في إدخال/إخراج الأطراف |
| BadUSB | badusb_run, badusb_list | هجمات USB HID |
| iButton | ibutton_read, ibutton_emulate | مفاتيح 1-Wire |
| Storage | storage_list, storage_read, storage_write, storage_remove, storage_stat | إدارة ملفات بطاقة SD |
| System | system_device_info, system_power_info, system_power_reboot, system_ps, system_free, system_uptime | إدارة الجهاز |
| BLE | ble_info, ble_beacon, ble_beacon_stop, ble_hid_start, ble_hid_type, ble_hid_press, ble_hid_mouse, ble_hid_stop | Bluetooth Low Energy (بث beacon + محاكاة HID) |
| Apps | app_launch_{name} (يُكتشف تلقائيًا من بطاقة SD) | إدارة التطبيقات |
يمكن إضافة أدوات مخصصة عبر ملفات إعدادات TOML أو بتثبيت تطبيقات FAP على بطاقة SD. انظر OPERATIONS.md للحصول على أوامر curl الجاهزة للنسخ واللصق لكل أداة.
لا تحتاج إلى اشتراك Claude لاستخدام flipper-mcp. Open WebUI هي واجهة مجانية مستضافة ذاتيًا بأسلوب ChatGPT تدعم أصلاً MCP Streamable HTTP (v0.6.31+). اقرنها مع Ollama للتحكم الكامل المحلي وغير المتصل بالإنترنت في Flipper بالذكاء الاصطناعي.
# Install Ollama
curl -fsSL https://ollama.com/install.sh | sh
# Pull a model with tool-calling support
ollama pull llama3.1 # 8B — good balance of speed and capability
# or: ollama pull qwen2.5 # strong tool-calling, good at structured output
# or: ollama pull mistral # lightweight, fast tool use
# Docker (recommended) — connects to Ollama on localhost automatically
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-e WEBUI_AUTH=False \
-v open-webui:/app/backend/data \
--name open-webui \
ghcr.io/open-webui/open-webui:main
# Or without Docker:
pip install open-webui
open-webui serve
افتح http://localhost:3000 في متصفحك.
http://flipper-mcp.local:8080/mcp (أو http://192.168.x.x:8080/mcp)https://relay.example.com/mcphttp://host.docker.internal:8080/mcp إذا كان Flipper على شبكة مضيف Dockerنصيحة: ضمن Workspace → Models → (نموذجك) → Advanced Parameters، اضبط Function Calling على Default للنماذج الأصغر. لا تنتقل إلى Native إلا للنماذج ذات الدعم القوي المدمج للأدوات (Llama 3.1 8B+، Qwen 2.5، Mistral).
بمجرد الاتصال، جرّب هذه في محادثة Open WebUI:
| الأمر | ما يفعله |
|---|---|
| "Scan for NFC tags near the Flipper" | يستدعي nfc_detect لقراءة الوسوم القريبة |
| "List all files on the Flipper's SD card" | يستدعي storage_list على /ext |
| "Transmit this SubGHz signal on 433.92 MHz: ..." | يستدعي subghz_tx بالتردد المحدد |
| "Read any RFID card that's presented to the Flipper" | يستدعي rfid_read ويعيد بيانات الوسم |
| "What apps are installed on the Flipper?" | يستدعي app_list لسرد تطبيقات FAP المثبتة |
| "Send this IR signal to turn off the TV" | يستدعي ir_tx بالبروتوكول والبيانات المحددة |
| "Show me the Flipper's system info and free memory" | يستدعي system_info + system_free |
| "Read the NFC tag, then save its data to /ext/nfc/captured.nfc" | متعدد الخطوات: nfc_read → storage_write |
| "Monitor 315 MHz for 10 seconds and decode anything you hear" | يستدعي subghz_rx بالتردد والمدة |
المهام الوكيلية متعددة الخطوات تعمل بشكل أفضل مع النماذج الأكبر (Llama 3.1 70B، Qwen 2.5 72B، أو النماذج السحابية عبر واجهات برمجة متوافقة مع OpenAI). تتعامل النماذج الأصغر مع استدعاءات الأداة الواحدة بشكل موثوق.
flipper-mcp/
├── firmware/ # ESP32-S2 firmware (Rust, esp-idf-svc)
├── relay/ # Companion relay server (Rust, tokio/axum)
├── flipper-app/ # Flipper Zero FAP — in-device management UI (C, ufbt)
├── infra/ # OpenTofu IaC — cloud relay deployment (AWS + GCP)
├── config/ # Example module configurations
├── scripts/ # Build, flash, and setup helper scripts
└── docs/ # Architecture, setup, API, troubleshooting
انظر AGENTS.md للحصول على سياق المشروع الكامل والمواصفات التقنية والبنية المعمارية للنظام وكل ما يلزم لمواصلة التطوير على هذا المشروع.
MIT