Fonino について
FoninoはMac上で動作し、エージェントから実機のiPhoneやAndroidを操作できるMCPサーバーです。送信、投稿、購入、削除などはユーザーの承認が必要で、アプリや操作にも制限があります。
主な機能
- 01画面の表示とアプリの起動
- 02タップ、スワイプ、文字入力
- 03送信前のユーザー承認
- 04機密アプリと高リスク操作の制限
- 05USBまたはミラーリングでiPhoneを操作
活用シーン
- 01エージェントに情報検索やアプリ操作を任せる
- 02承認後にメッセージ送信などを行う
- 03ユーザー操作が必要なログイン時にスマートフォンへ引き継ぐ
MCP 対応
FoninoはローカルHTTPとstdioでMCPクライアントに接続し、デバイス、画面、タップ、文字入力、メッセージ、承認などのツールを提供します。送信、投稿、購入、削除を伴う操作はユーザーの承認まで保留されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 4 日前に更新
このツールにパラメーターはありません。
詳細
Fonino
何かを送信する前にあなたの許可を得て、AI エージェントがあなたの実物の iPhone や Android スマートフォンを使えるようにします。
Fonino を使うと、Claude Code、Codex、Hermes、その他の MCP クライアントから、スマートフォンの画面を見たり、アプリを開いたり、タップ、スワイプ、入力したりできます。送信、投稿、購入、削除を行う操作は、必ずあなたがワンタップで承認するまで保留されます。あなたの Mac 上で、あなた自身のスマートフォンを使って動作します。脱獄は不要で、クラウド上のスマートフォンも使わず、Android スマートフォンへのインストールも不要です。iPhone には小さなヘルパーを追加するだけです。
デモ用の電話番号を使い、Android エミュレーターでリアルタイムに実行した様子です。iPhone でも同じツールと承認機能を利用できます。
● agent: text Sam that I'm running late
│
● phone_open_app("Messages") → phone_get_screen → Sam's conversation
│
● phone_send_message(to: Sam, "Running 10 minutes late, sorry!")
│ ⏸ waiting for your OK: "Send a text to Sam?" [Approve] [Deny]
│
✓ sent after you approved (Delivered via iMessage)
はじめに
Mac 上のコーディングエージェント(Claude Code、Codex など)に、次の内容を貼り付けてください。
Clone https://github.com/fonino/fonino, run npm install, then read docs/setup.md and walk me
through connecting my phone. Stop and ask me whenever a step needs my hands, and never type
my passcode or passwords for me.
または、npm からインストールします。
npm install -g fonino
fonino doctor # checks the Mac, the phone and permissions
fonino devices
または、ソースからインストールします。
git clone https://github.com/fonino/fonino && cd fonino
npm install && npm run build:native
apps/cli/bin/fonino doctor
自分でセットアップしたくない場合は? Fonino for Mac は、このコードを基に構築された署名済みアプリです。iPhone のセットアップを代行し(Xcode は不要)、どこからでも Fonino をスマートフォンに接続して、Grok Bot、Muse、Claude、ChatGPT を使えます。承認はスマートフォン上で行えます。
iPhone の接続方法は 2 種類
| USB ヘルパー(推奨) | iPhone ミラーリング | |
|---|---|---|
| 方法 | Fonino のヘルパー(Apple の UI テストランナーである WebDriverAgent)を USB 経由でスマートフォン上で実行します | macOS の iPhone ミラーリングウィンドウを Fonino が読み取り、クリックします |
| タップ | 正確です。画面の構造を読み取るため、ピクセルだけに頼りません | スクリーンショットとテキスト認識を使います |
| Mac | 自由に使えます。マウスは動かしません | 動作中はカーソルを使用します |
| スマートフォン | 1 台の Mac で同時に複数台を使えます | 1 台 |
| 必要なもの | Xcode、署名用の Apple ID、デベロッパモード、ケーブル | macOS 15 以降、iOS 18 以降、Mac と iPhone で同じ Apple Account(EU では利用できません) |
Android
USB デバッグを有効にします(「設定」→「デバイス情報」→「ビルド番号」を 7 回タップし、「設定」→「システム」→「開発者向けオプション」→「USB デバッグ」を開きます)。スマートフォンを接続し、スマートフォン上で許可をタップしてください。Fonino は adb(Android platform-tools)を通じてスマートフォンを検出します。Android エミュレーターも使えます。スマートフォンへのインストールは不要です。
fonino devices
# android-001 Pixel 9 connected android-adb Pixel 9, Android 16, USB
iPhone と同じツールと安全ルールを使えます。スクリーンショットはポイント単位で取得し、タップは対象のボタンと照合します。テキストは Google Messages 経由で送信され、送信前に確認されます。「設定」「Wallet」「Play ストア」と通話は操作できません。入力できるのは ASCII 文字のみです(テキストの内容には任意の文字を使用できます)。
iPhone の 2 種類の接続方法と Android の詳しい手順:docs/setup.md。
エージェントから使う(MCP)
承認機能付きの全ツールセット(推奨):ローカル HTTP サーバーを起動し、クライアントに追加します。
apps/cli/bin/fonino mcp-http --show-token # http://localhost:3001/mcp
claude mcp add --transport http fonino http://localhost:3001/mcp \
--header "Authorization: Bearer <token>"
ツールには、phone_list_devices、phone_acquire / phone_release(スマートフォン 1 台につきエージェント 1 つ)、phone_get_screen(スクリーンショットと要素)、phone_tap、phone_swipe、phone_type、phone_open_app、phone_read_messages、phone_send_message、phone_wait_for_reply、phone_await_approval、phone_request_help(ログイン時などにスマートフォンの操作をあなたに引き継ぎます)などがあります。
基本操作のみ: fonino mcp(stdio。タップ、入力、スワイプ、画面)。このリポジトリの .mcp.json で Claude Code に登録されています。
安全性
ルールはプロンプトではなくコードに記述されているため、エージェントが話術で回避することはできません。
- 承認。 送信、投稿、購入、削除は、対象のアプリ、宛先、テキストを確認して承認するまで保留されます。Fonino はタップごとにボタンも確認します。Send、Post、Reply、Buy Now、Place your order は、エージェントが操作内容を伝えていなくても、必ず承認が必要です。
fonino approvalsで保留中のリクエストを確認できます。fonino approve <id>を実行してください(--for-taskはタスクの残りの操作に適用され、--alwaysは1日の上限付きで、そのアプリで同種の操作を許可します)。 - アクセス禁止。 Settings、Wallet、Passwords、Mail、Phone、FaceTime、Find My、App Store。
- ログイン情報はご自身で管理します。 パスワード、Face ID、確認コードの入力時には、エージェントがスマートフォンをお渡しします。メッセージ内のワンタイムコードはエージェントには表示されません。
- テキストメッセージの制限。 電話番号と宛先ごとに送信頻度を制限します。STOP と返信した相手には、以後テキストメッセージを送信しません。
- ローカルでプライベート。 トークン、承認、スクリーンショットは
~/.foninoに保存され、ご自身の macOS ユーザーのみが読み取れます。
その他のコマンド
fonino screen <device> --open # screenshot
fonino tap <device> 200 500 # screenshot pixels
fonino agent <device> --goal "Open Settings and tell me the iOS version" # built-in agent (Anthropic API key)
fonino wda up # keep the USB helper running (health checks, restarts)
fonino service install # run it all as login services
fonino runs && fonino replay <run-id> --open
fonino help # everything else
仕組み
apps/cli fonino CLI: setup, doctor, watchdog, local services, replay
packages/iphone-adapter iPhone USB helper (WebDriverAgent over usbmuxd), iPhone Mirroring, Android over adb
packages/mcp-server MCP tools, approvals, policy (off-limits apps, risky buttons), rate limits
packages/agent-runtime built-in agent loop and approval gate
packages/device-core device protocol, leases, mock phone for tests
packages/browser optional agent browser on the Mac (pages as text, replayable recipes)
packages/relay client that connects this Mac to the Fonino cloud (optional)
native/ Swift helpers: screen capture and input for Mirroring, text recognition
docs/ setup, research notes on controlling a non-jailbroken iPhone
USB ヘルパーを使う理由と測定内容については、こちらをご覧ください。 docs/iphone-control-research.md。
要件:macOS 15 以降を搭載した Apple シリコン搭載 Mac、Node 22.18 以降。
テスト:npm test。
制限事項
- スマートフォンはロック解除状態にしておく必要があります(iPhone:自動ロックを「しない」に設定。Android:画面消灯までの時間を最長に設定)。
- ヘルパーを初めて起動すると、「XCTest」というタイトルのパスコード入力プロンプトが表示される場合があります。これはヘルパーが画面の使用許可を求めているものです。スマートフォンで入力してください。再度求められるのは再起動後のみです。
- マルチタッチ、カメラ、Face ID を使うフローには対応していません。アプリによっては独自の確認が追加されます。
ライセンス
MIT。LICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。