Flipper Zero を MCP につないで Claude から直接操作する
flipperzero-mcp は Flipper Zero 向けの MCP server で、Claude Desktop のようなクライアントからデバイスを直接操作できるようにする。自分のオリジナルではなく、busse のプロジェクトを研究用に fork したもので、リポジトリは https://github.com/dwgx/flipperzero-mcp にあり、本家に追従している。
モジュラー設計で、機能はすべて src/flipper_mcp/modules/ の下にある。トランスポート層は USB に対応し、WiFi と Bluetooth はまだ stub で未実装。プロトコルは protobuf RPC で、nanopb によるフレーミングを使う。生成コードは src/flipper_mcp/core/protobuf_gen/ にそのままコミットしてあり、毎回生成し直さずに済む。
モジュールは 3 つ内蔵している。systeminfo は接続状態と SD カードの状態を確認する。badusb は BadUSB スクリプトの生成・検証・保存・取得・実行を行い、ファイル操作には SD カードが必要。music は Flipper Music Format の曲を再生する。badusb_execute は明示的に confirm=true を渡したときだけ実際にデバイスへ送信され、AI が勢い余ってスクリプトをデバイス上で走らせないための安全弁になっている。
動かすのは難しくない。pip install -e . を済ませたらそのまま flipper-mcp を実行するだけ。server は stdio でクライアントと通信し、起動時にモジュールを自動発見する。Claude Desktop につなぐには、設定の mcpServers に python3 -m flipper_mcp.cli.main を指す一行を追加する。FLIPPER_TRANSPORT で USB と WiFi のどちらを使うか制御でき、デフォルトは auto で、まず USB を試し、挿さっていなければ WiFi に切り替える。
このリポジトリを引っ張ってきた主な目的は、MCP がどうハードウェアと接続するのか、プロトコルフレームをどう処理するのか、モジュールをどう分けているのかを見ることだ。自分でハードウェアのブリッジツールを書くときの参考になる。