
Flipper Zero के लिए AI-संचालित MCP सर्वर। Claude या किसी भी MCP क्लाइंट का उपयोग करके WiFi पर SubGHz, NFC, RFID, IR, BLE, GPIO, और अधिक नियंत्रित करें।
एक Rust MCP (Model Context Protocol) सर्वर जो सीधे Flipper Zero के WiFi Dev Board v1 (ESP32-S2) पर चलता है, जिससे AI एजेंट नेटवर्क के माध्यम से Flipper Zero को नियंत्रित कर सकते हैं।
यह प्रोजेक्ट एक MCP सर्वर को Flipper पर ही स्थापित करता है। कोई भी MCP-संगत AI क्लाइंट (Claude Desktop, Claude Code, आदि) कनेक्ट कर सकता है और Flipper की क्षमताओं को टूल्स के रूप में उपयोग कर सकता है — SubGHz, NFC, RFID, IR, GPIO, BadUSB, iButton, फ़ाइल स्टोरेज, और बहुत कुछ।
अन्य प्रोजेक्ट्स के विपरीत जिन्हें USB-कनेक्टेड होस्ट कंप्यूटर की आवश्यकता होती है, flipper-mcp Flipper से जुड़े ESP32-S2 WiFi मॉड्यूल पर चलता है। 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 टूल कॉल्स को 115200 baud पर UART के माध्यम से Flipper Zero CLI कमांड्स में अनुवादित करता है। एक साथी रिले सर्वर किसी भी नेटवर्क से रिमोट एक्सेस को सक्षम बनाता है।
flipper-mcp.local के रूप में mDNS विज्ञापनमैं किस डिवाइस से कनेक्ट करूँ?
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
Flipper SD कार्ड पर SD:/apps_data/flipper_mcp/config.txt में 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 स्क्रीन पर प्रदर्शित करेगा।
AI क्लाइंट कॉन्फ़िगर करने से पहले, 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
Flipper MCP → Status मेनू से Flipper का IP प्राप्त करें, फिर परीक्षण करें:
BLE बीकन प्रसारण (स्पूफ़्ड 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 प्रसारण (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 को अपने Flipper के वास्तविक IP पते से बदलें।
फिर अपने Claude Desktop कॉन्फ़िग (claude_desktop_config.json) में जोड़ें:
{
"mcpServers": {
"flipper": {
"url": "http://flipper-mcp.local:8080/mcp"
}
}
}
flipper-app/ से साथी Flipper MCP ऐप को 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 में दिखाई देता है और प्रदान करता है:
ऐप 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 देखें।
कस्टम टूल्स TOML कॉन्फ़िग फ़ाइलों के माध्यम से या SD कार्ड पर FAP ऐप्स इंस्टॉल करके जोड़े जा सकते हैं। प्रत्येक टूल के लिए कॉपी-पेस्ट curl कमांड के लिए OPERATIONS.md देखें।
flipper-mcp का उपयोग करने के लिए आपको Claude सदस्यता की आवश्यकता नहीं है। Open WebUI एक मुफ़्त, स्व-होस्टेड ChatGPT-शैली इंटरफ़ेस है जो मूल रूप से MCP Streamable HTTP (v0.6.31+) का समर्थन करता है। पूरी तरह से स्थानीय, ऑफ़लाइन AI-संचालित Flipper नियंत्रण के लिए इसे Ollama के साथ जोड़ें।
# 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 का उपयोग करेंसुझाव: छोटे मॉडल्स के लिए Workspace → Models → (your model) → Advanced Parameters के अंतर्गत Function Calling को Default पर सेट करें। केवल मजबूत अंतर्निहित टूल समर्थन वाले मॉडल्स (Llama 3.1 8B+, Qwen 2.5, Mistral) के लिए Native पर स्विच करें।
कनेक्ट होने के बाद, Open WebUI चैट में इन्हें आज़माएँ:
मल्टी-स्टेप एजेंटिक कार्य बड़े मॉडल्स (Llama 3.1 70B, Qwen 2.5 72B, या OpenAI-संगत APIs के माध्यम से क्लाउड मॉडल्स) के साथ सबसे अच्छा काम करते हैं। छोटे मॉडल्स सिंगल-टूल कॉल्स को विश्वसनीय रूप से संभालते हैं।
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
| चरण | कनेक्ट करें | नोट्स |
|---|
| फर्मवेयर फ्लैशिंग | WiFi Dev Board USB-C | बोर्ड का अपना USB पोर्ट है, Flipper से अलग |
| सीरियल मॉनिटरिंग | WiFi Dev Board USB-C | फ्लैशिंग के समान USB कनेक्शन |
| SD कार्ड कॉन्फ़िग फ़ाइलें | Flipper Zero SD कार्ड | SD को Flipper में डालें, या निकालकर PC पर माउंट करें |
| सर्वर नियंत्रण कमांड | Flipper Zero SD कार्ड | apps_data/flipper_mcp/ में server.cmd फ़ाइल बनाएँ |
| UART संचार | स्वचालित | WiFi Dev Board और Flipper GPIO हेडर के माध्यम से जुड़ते हैं |
| MCP HTTP अनुरोध | WiFi Dev Board IP:8080 | अपने WiFi नेटवर्क पर कनेक्ट करें |
| स्क्रीन | यह क्या करता है |
|---|
| Status | ESP32 से नया स्टेटस अपडेट अनुरोध करता है, IP, SSID, सर्वर स्थिति, संस्करण दिखाता है |
| Start / Stop / Restart | MCP HTTP सर्वर लाइफसाइकल को नियंत्रित करता है |
| Reboot Board | ESP32 WiFi Dev Board को पुनः आरंभ करता है |
| Configure WiFi | SSID + पासवर्ड दर्ज करने के लिए ऑन-स्क्रीन कीबोर्ड; SD कार्ड में config.txt लिखता है |
| View Logs | ESP32 द्वारा हर 30 सेकंड में लिखा गया स्क्रॉल करने योग्य डायग्नोस्टिक लॉग |
| Tools List | ESP32 पर वर्तमान में पंजीकृत सभी MCP टूल्स की स्क्रॉल करने योग्य सूची |
| Refresh Modules | ESP32 पर FAP डिस्कवरी रीस्कैन + modules.toml रीलोड को ट्रिगर करता है |
| श्रेणी | टूल्स | विवरण |
|---|
| 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 | IR रिमोट कंट्रोल |
| GPIO | gpio_read, gpio_write, gpio_set_mode | पिन I/O नियंत्रण |
| 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 (बीकन प्रसारण + HID अनुकरण) |
| Apps | app_launch_{name} (SD कार्ड से ऑटो-डिस्कवर) | एप्लिकेशन प्रबंधन |
| प्रॉम्प्ट | यह क्या करता है |
|---|
| "Scan for NFC tags near the Flipper" | पास के टैग पढ़ने के लिए nfc_detect को कॉल करता है |
| "List all files on the Flipper's SD card" | /ext पर storage_list को कॉल करता है |
| "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?" | इंस्टॉल किए गए FAPs को एन्यूमरेट करने के लिए app_list को कॉल करता है |
| "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 को कॉल करता है |