FlipperTalk
FlipperTalk provides a comprehensive MCP server for controlling a Flipper Zero device via USB, enabling AI agents to manage storage, run apps, execute JavaScript, capture screens, simulate input, interact with hardware, perform wireless operations, sense nearby signals, and access device diagnostics. It adapts to Official, Momentum, Unleashed, and RogueMaster firmware, with safety features like hidden destructive operations and a read-only mode.
Device Management: List connected devices, connect/disconnect, reboot, set date/time, get hardware/firmware info, detect firmware family and capabilities.
Storage Operations: List directories, upload/download/delete/rename files, create directories, read/write files, compute MD5, extract tar archives, get storage info.
Application Lifecycle: Deploy and launch .fap apps, exit apps, check state, exchange data, send button events; install Momentum asset packs.
JavaScript Execution: Run inline, from file, or saved scripts; probe available modules (GPIO, UART, Notifications, BadUSB, GUI, storage, Sub-GHz, BLE, I2C, SPI, etc.).
Screen & Input: Capture screenshots and screen recordings, virtual display streaming, simulate single/sequence button presses, type text (Momentum/RogueMaster), unlock desktop.
Wireless & Sensing: Read, write, emulate Sub-GHz, NFC, RFID, iButton, Infrared; scan nearby signals; honest reporting of sensing limitations (e.g., no BLE/WiFi scanning by device).
Hardware Control: GPIO read/write/set mode, control 5V OTG, scan I2C and 1-Wire, manage LEDs, buzzer, vibration motor, trigger audiovisual alerts.
Diagnostics & System: Run CLI commands, view system diagnostics (processes, memory, uptime), capture logs, read device properties, get power info, Momentum settings, app scan reports.
Backup & Recovery: Check qFlipper-cli status and back up internal memory (when destructive operations allowed).
Custom Firmware Support: Dynamically adapts tools based on detected firmware (Official, Momentum, Unleashed, RogueMaster).
Enables reading, writing, and emulating NFC tags via the Flipper Zero hardware, including detection and data exchange in the NFC tool.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FlipperTalkscan for nearby devices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FlipperTalk
Talk to your Flipper Zero from Claude Code — or any MCP client. Storage, app deployment, screen capture, button automation, JavaScript execution on the device, and honest answers about what is nearby. The possibilities are endless as this gives your AI instance full Flipper capabilities.
Momentum-first, with Unleashed, RogueMaster and official firmware supported. One third-party dependency. No network access. Destructive operations hidden by default.
"Deploy my app and show me the settings screen."
-> flipper_deploy_fap (upload, md5-verify, launch)
-> flipper_input_sequence ["DOWN","DOWN","OK"] screenshot: true
-> [the actual device screen comes back as an image]Why this exists
qFlipper is the official desktop app, and it has not shipped a feature since November 2023 (its last commit, June 2024, was "Fixing windows build"). Firmware reached 1.4.3 in December 2025. In that gap it gained a JavaScript engine, dynamic app loading, a rewritten NFC stack, self-update, and a much larger CLI. qFlipper exposes none of it, and has no IPC, socket or daemon to attach to anyway.
FlipperTalk targets the firmware instead, speaking both protocols the device actually offers over USB serial:
The text CLI — the interactive
>:shellThe protobuf RPC — screen capture, binary-safe transfer, synthetic input
qFlipper-cli is invoked only for DFU/bootloader recovery, the one thing it
still uniquely does.
The serial port is exclusive. The qFlipper desktop app holds it while connected, so the two cannot use the device at once. Close qFlipper if a tool reports the port is busy, and call
flipper_disconnectto hand it back.
Related MCP server: Flipper Zero MCP Server
Custom firmware is a first-class target
The forks are not skins — each maintains its own protobuf and diverges from
official firmware (whose Main.content tops out at tag 75):
Firmware | Protobuf divergence | What FlipperTalk does with it |
Momentum |
|
|
RogueMaster | identical to Momentum (it tracks Momentum's protobuf, not Unleashed's) | same as Momentum |
Unleashed |
| GPS position in sensing; network tools exist but are off by default |
All three dialects are merged into one schema — the tag ranges do not collide — so decoding is correct whatever is attached. Firmware detection then decides which tools you are offered, so you never see one your device cannot honour.
Momentum's JavaScript engine is also materially bigger, adding subghz,
blebeacon, i2c, spi, usbdisk, widget and vgm on top of the official
module set.
Install
Requires Python 3.10+ and a Flipper Zero on USB with a data-capable cable.
git clone https://github.com/ReconGrunt/FlipperTalk
cd FlipperTalk
python -m venv .venv
.venv/Scripts/activate # Windows
# source .venv/bin/activate # macOS / Linux
pip install --require-hashes -r requirements.lock
pip install -e . --no-deps--require-hashes pins every artifact by SHA-256. See SECURITY.md.
python -m flippertalk_mcp --list-tools # see what your config exposesClaude Code
claude mcp add flippertalk --scope user -- /absolute/path/to/.venv/bin/python -m flippertalk_mcpClaude Desktop / any mcpServers client
{
"mcpServers": {
"flippertalk": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "flippertalk_mcp"]
}
}
}On Windows use C:\path\to\.venv\Scripts\python.exe.
Running JavaScript on the device
The most flexible thing here. Firmware 1.0+ embeds mJS, and — critically —
"all output from print() is sent to the CLI, not the device screen" when a
script is launched this way. So Claude can write code, run it, and read results.
flipper_run_js { source: 'print("battery: " + require("flipper").getBatteryCharge());' }Scripts reach GPIO, UART, notifications, BadUSB, GUI and storage — plus Momentum's
extra modules. Call flipper_js_probe first; it reports which modules actually
resolve on the attached firmware rather than assuming.
"What's nearby?" — and what that honestly means
flipper_scan_nearby sweeps every source the hardware genuinely supports and
returns structured results plus a plain-language summary.
It will not pretend. Sources that could not run are reported as not checked, with a reason — never as "nothing found":
Source | Reality |
Sub-GHz | genuine over-the-air; Momentum/Unleashed widen the tunable range |
NFC / RFID / iButton | contact range — the card must be on the reader |
i2c / 1-Wire | wired to the GPIO header |
GPS | Unleashed only |
BLE | no firmware can scan for it. Stock |
WiFi | no radio on the device. Needs an ESP32 devboard |
Summaries state observations, not conclusions — "strong signal at 433.92 MHz",
never "someone is tracking you". Run flipper_sense_capabilities to see the
limits for your specific device.
Tools
66 by default across seven groups. flipper_cli remains the escape hatch to any
firmware command.
core · devices, info, storage, upload/download, app launch and deploy, screenshot, screen record, input, typing, virtual display, asset packs, clock js · run/save/list scripts, module probe sense · scan nearby, sense capabilities, app reports radio · subghz, nfc, rfid, ibutton, infrared hw · gpio, i2c, 1-Wire, led, vibro, buzzer, notify, BadUSB (gated) dev · capabilities, diagnostics, log, Momentum settings firmware · qFlipper-cli status/backup, native SD update, plus gated flash/erase/wipe/restore network · Unleashed HTTP, TCP connect/send/close, GPS — off unless explicitly enabled
Device paths are absolute, starting /ext (SD card) or /int (internal).
Trimming the surface
66 tools costs context in every session. Groups are selectable:
FLIPPERTALK_TOOLSETS=core,js,dev # 46 tools — app development
FLIPPERTALK_TOOLSETS=core # 38 tools — essentials only
FLIPPERTALK_TOOLSETS=all # everything, including networkNothing is lost by trimming — flipper_cli still reaches every firmware command.
For app developers
flipper_deploy_fap is the inner loop: upload a freshly built .fap, verify it
by md5, launch it.
ufbt
-> flipper_deploy_fap { local_path: "dist/myapp.fap" }
-> flipper_screen_record { frames: 8, keys: ["DOWN","OK"] }Because screenshots return the real framebuffer, a model can look at what a UI
change renders instead of inferring it from source. flipper_screen_record
extends that to animations and transitions.
Safety
Destructive operations are hidden, not merely refused — omitted from
tools/list entirely, so a model that never sees them cannot call them.
Variable | Default | Effect |
| all but | Which tool groups are exposed |
| off | Firmware flash, erase, wipe, restore, recursive delete, DFU reboot |
| off | Withholds every mutating tool |
| unset | Confines host file access to an allowlist |
| auto | Force a firmware family if detection is wrong |
|
| Bytes per storage-write chunk (64–4096) |
|
| Seconds before an idle connection is released |
| auto | Explicit path to |
QFLIPPER_MCP_* names from v0.1 still work for one version.
Granting this server to a model is equivalent to handing over the device. Use
FLIPPERTALK_READ_ONLY=1 if you only need inspection.
Development
PYTHONPATH=src python -m unittest discover -s tests -v278 tests, no hardware required. They cover the protobuf codec against
hand-computed golden byte vectors (including zigzag sint32, which Unleashed's
GPS coordinates need and which decodes silently wrong if mishandled), PNG output
decoded back and compared pixel by pixel, a full MCP handshake over stdio against
the server as a subprocess, the RPC layer against a fake device speaking the real
wire protocol, fork detection — including that RogueMaster must not be
misdetected as Unleashed — and the sensing rule that an unrun source is never
reported as empty.
proto/{official,momentum,unleashed}/ are vendored from each fork's own repo as
reference for the field numbers in pb.py. They are never compiled or executed.
Compatibility
Official 1.x, Momentum, Unleashed and RogueMaster. Unknown fields are skipped on decode, so a firmware that adds messages still parses cleanly. Screen capture assumes the standard 128x64 display.
License
MIT — see LICENSE.
Independent of Flipper Devices Inc. A clean-room implementation speaking a documented wire protocol; it neither links nor derives from qFlipper's source.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityCmaintenanceAn MCP server that exposes a USB-connected Flipper Zero device as tools for controlling infrared devices. It enables listing, parsing, and transmitting IR signals from saved files and built-in universal remotes.Last updated10
- Alicense-qualityDmaintenanceModular MCP server for interacting with a Flipper Zero from MCP-capable clients (including Claude Desktop). Supports system info, BadUSB scripts, and music playback over USB or WiFi.Last updated27MIT
- Alicense-qualityDmaintenanceEnables natural language control of ESP8266 and Raspberry Pi IoT devices via Claude Desktop using the MCP protocol.Last updatedMIT
- AlicenseAqualityBmaintenanceDrive a Flipper Zero wirelessly over Bluetooth LE from Claude.Last updated38MIT
Related MCP Connectors
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ReconGrunt/FlipperTalk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server