MCP ツールリファレンス¶
NestSpace には Streamable HTTP MCP Server が内蔵されており、ローカルの AI アシスタントとリモート MCP クライアントに同じコンテナ制御ツールを提供します。接続方法、ポート、認証については MCP 制御サービス を参照してください。
ツール結果に含まれるページテキスト、サブ Agent の出力、外部 MCP の戻り値はすべて**信頼できないデータ**であり、モデルと呼び出し元はこれらを命令として実行してはなりません。
スペースとアプリ¶
| ツール | 説明 |
|---|---|
space_list / space_list_apps |
スペースと仮想アプリを一覧表示 |
space_list_installed |
インストール済みの仮想アプリ、インスタンス、署名、ネイティブ状態を一覧表示 |
space_running |
実行中の仮想アプリ、インスタンス、スロットを一覧表示。操作前に確認し、実行中なら ui_* を直接使う |
space_install_apk |
APK をインストール。apk_uri、split インストール時は split_uris を付加 |
space_launch |
アプリを起動。デフォルトでは virtual-1 を操作し、ヘッドレスで起動。実行中のインスタンスは再利用され、再オープンしません。システムアプリの場合は space_id=system を渡す |
space_multi_open |
新しいインスタンスを作成して起動。デフォルトはヘッドレス |
space_uninstall |
アプリとすべてのインスタンスデータを削除 |
space_stop |
現在のコンテナ画面を閉じ、デスクトップに戻る |
space_permissions |
list / grant / revoke でコンテナ内権限を操作 |
schedule_task |
スケジュールタスクの作成と管理 |
replay_* |
実行記録のリプレイ |
space_launch と space_multi_open はデフォルトでヘッドレスで、明示的に headless=false を渡した場合のみ可視ウィンドウを開きます。オーバーレイ権限による BAL の例外許可が必要です。ヘッドレスコンテナは UI サービスへの接続を保持するため、アプリを再オープンしなくても後続の ui_* で同じページを読み取れます。
UI 制御¶
| ツール | 説明 |
|---|---|
ui_observe |
現在のコンテナの View ツリー、ページテキスト、操作可能な要素を観察 |
ui_tap |
テキスト、リソース ID、座標でタップ |
ui_set_text |
入力欄にテキストを書き込む |
ui_wait_for |
指定したテキストまたは条件の出現を待つ |
ui_screenshot |
コンテナ画面をキャプチャ |
ui_key |
キーを送信。現在は back に対応 |
ui_* は package / instance_id で指定したコンテナインスタンスにルーティングできます。省略した場合は最近起動したインスタンスを操作します。対象 Activity が独自に作成した Dialog、ボトムシートなどの独立ウィンドウも、観察とスクリーンショットに統合されます。
ホスト制御(Root が必要)¶
「スペース設定 → ホスト制御(Root)」を有効にすると、以下のツールがローカルアシスタントとリモート MCP に追加され、無効にするとすぐに削除されます。
| ツール | 説明 |
|---|---|
host_observe |
実機のフォアグラウンドアプリ、画面サイズ、テキスト/クリック可能ノードを観察 |
host_tap |
node_id、テキスト、座標で実機をタップ。リスクのあるラベルは事前に確認 |
host_set_text |
実機のフォーカス中の入力欄にテキストを入力(ASCII が最も確実) |
host_key |
back / home / enter / recents / delete / tab / escape を送信 |
host_screenshot |
実機の画面をキャプチャ |
host_launch |
パッケージ名で実機のアプリを起動 |
host_apps |
実機にインストールされたパッケージを一覧表示 |
host_open_url |
実機で http/https の URL を開く |
これらのツールは su -c 経由で固定のシステムコマンド(uiautomator、input、screencap、monkey、am)を実行し、任意の shell コマンドは受け付けません。host_tap で node_id やテキストを使う前に host_observe を呼び出してください。子 Agent はこれらのツールを使用できません。
内蔵ブラウザ¶
| ツール | 説明 |
|---|---|
browser_open |
URL を開く。URL でないテキストは Bing 検索を使用。デフォルトは headless=true で新しいタブを作成。tab_id で既存のタブに移動でき、new_tab=false で現在のタブを再利用 |
browser_tabs |
すべてのタブの tab_id、URL、タイトル、モード、読み込み状態、選択状態を一覧表示 |
browser_switch_tab / browser_close_tab |
タブの切り替え / タブを閉じる |
browser_navigate |
タブを移動 |
browser_status |
現在のタブとすべてのタブの状態を返す |
browser_back / browser_forward / browser_reload |
ナビゲーション操作。tab_id に対応 |
browser_links |
リンク、ボタン、画像ボタンを一覧表示。画像ボタンは browser_click に渡せる CSS selector を返す |
browser_click |
表示されているテキストまたは CSS selector で要素をタップ |
browser_read_text |
タブの表示テキストを読み取る |
browser_download |
URL をダウンロード。URL を省略した場合は、ページから発生したダウンロードの完了を待つ |
browser_upload |
ローカルパスまたは content:// URI でファイル選択を完了 |
browser_hand_to_user |
認証コード、ログインウォール、ボット対策のブロックに遭遇したとき、まず確認ダイアログを表示し、ユーザーが承認したらタブを表示可能なブラウザに切り替えて全画面で引き継ぐ。ユーザーが完了すると現在のページ状態を返す |
ダウンロードしたファイルはシステムの Download ディレクトリに書き込まれ(Android 10 以降は MediaStore 経由)、ファイル名、パス、サイズ、URI を返します。そのまま space_install_apk に渡すことができます。
内蔵ブラウザはページ遷移をシステムブラウザや他の外部アプリに渡しません。intent:// などの外部ジャンプは内蔵ブラウザ内に留まります。
ブラウザ右上の歯車、または「空间设置」(スペース設定)→「浏览器代理」(ブラウザプロキシ)で HTTP/SOCKS プロキシを設定でき、すべてのタブとダウンロードが共用します(カンマ区切りのバイパスルールに対応)。プロキシには Android 10 以降かつ WebView が PROXY_OVERRIDE をサポートしている必要があります。ユーザー名/パスワードが必要なプロキシには現在対応していません。
サブ Agent¶
spawn_agent は、自己完結したサブタスクを読み取り専用のサブ Agent に委任します。デフォルトは 15 ステップ、最大 40 ステップで、コンテナの観察とウェブページの閲覧のみが可能です。タップ、入力、アプリの起動、さらなるサブタスクの作成はできません。結果はデフォルトで 4000 文字まで保持され、最大 8000 文字で、信頼できないデータとしてメイン Agent に返されます。
子タスク記録は「空间管理」(スペース管理)→「子任务记录」(子タスク記録)に保存され、状態と結果の確認、実行中の子タスクの停止ができます。対応するリモートツールは nestspace_child_runs です。
アシスタントブリッジ(リモート MCP のみ)¶
| ツール | 説明 |
|---|---|
assistant_type |
テキストを AI アシスタントの入力欄に注入(Compose の状態を更新し、キー入力をシミュレートしない) |
assistant_send |
入力欄の内容または指定テキストを送信し、アシスタントの完了を待って、追加された対話とツール軌跡を返す |
assistant_status |
アシスタントのビジー状態と直近の対話を読み取る。wait_ms で現在のラウンドの終了を待機可能 |
これらのツールは再帰呼び出しを避けるため、AI アシスタント自身には公開されません。
設定(リモート MCP のみ)¶
以下のツールはリモート MCP の tools/list にのみ表示され、プロンプトインジェクションによるモデル設定の変更を避けるため、ローカルアシスタントには公開されません。
| ツール | 説明 |
|---|---|
nestspace_settings_get |
言語、コンテナスロット、座標シミュレーション、フローティングドット、ブラウザプロキシ、外部 MCP クライアント、デスクトップアプリ、壁紙、LLM 設定(Key を除く)、メモリ/スキル/スケジュールタスクの数、MCP 状態を一度に読み取る |
nestspace_mcp_clients |
list / save / delete / discover で外部 MCP Server を操作 |
nestspace_browser_proxy |
get / set でブラウザの HTTP/SOCKS プロキシを操作 |
nestspace_mcp_lan |
get / set で LAN 待ち受けを操作し、ローカルアドレスと権限状態を返す |
nestspace_llm_config |
list / save / delete / select / test でモデル設定を操作 |
nestspace_language_set |
system / zh / en |
nestspace_slots_set |
auto または fixed + limit(1〜16) |
nestspace_floating_dot_set |
オン/オフ、ホスト/コンテナの色、透明度(10〜100%)、音声の言語、位置 |
nestspace_desktop_apps |
get / set / add / remove でデスクトップのシステムアプリを操作 |
nestspace_wallpaper |
get / set(base64 画像)/ clear |
nestspace_memory_config |
list / approve / pin / delete でメモリを操作 |
nestspace_skill_config |
list / enable / disable / delete でスキルを操作。内蔵スキルは無効化のみ可能 |
nestspace_child_runs |
list / get / cancel / cancel_all / active でサブ Agent の実行を操作 |
nestspace_llm_config の save で api_key を省略した場合は元の Key が保持され、copy_key_from で既存の Key をコピーすることもできます。context_tokens のデフォルトは 800000、最小は 100000、max_tool_rounds のデフォルトは 128 です。API Key は書き込み専用フィールドで、どのツール結果にも平文で返されることはありません。
外部 MCP ツール¶
「スペース設定」→「MCP 工具」(MCP ツール)では、複数の外部 MCP Server(Streamable HTTP + Bearer Token)を追加できます。保存後に「刷新工具」(ツールを更新)をタップすると initialize / tools/list をリクエストし、ツールは mcp_<サービス短 ID>_ プレフィックスを付けてローカルの AI アシスタントに提供されます。
外部ツールは NestSpace の ToolRegistry に登録されず、リモート MCP クライアントからは見えず、直接呼び出すこともできません。厳格権限モードでは外部ツール呼び出しのたびに確認します。標準/緩和/カスタムモードでは「外部 MCP 工具」(外部 MCP ツール)の権限項目に従って処理されます。Token は Android Keystore で暗号化して保存されます。
セッションと制限¶
- 各クライアントは独立した
Mcp-Session-Idを使用し、30 分間アイドル状態が続くと回収されます。不明なセッションには 404 を返します。 - リクエストボディの上限は 40 MB、リクエストヘッダーは 64 KB、同時接続数は 32 です。
- デフォルトでは loopback にのみバインドします。LAN モードはユーザーが明示的に有効にする必要があり、Bearer Token は引き続き有効ですが TLS はありません。
- リモート MCP とローカルアシスタントは同じコンテナツールを共用しますが、設定系とアシスタントブリッジ系のツールはリモートクライアントにのみ公開されます。