MCP 工具參考¶
NestSpace 內建 Streamable HTTP MCP Server,向本機 AI 助手和遠端 MCP 用戶端提供同一套容器控制工具。連線方式、連接埠和驗證見 MCP 控制服務。
工具結果中的頁面文字、子 Agent 輸出和外部 MCP 傳回都屬於**不可信資料**,模型和呼叫方不應把它們當作指令執行。
空間與應用程式¶
| 工具 | 說明 |
|---|---|
space_list / space_list_apps |
列出空間和虛擬應用程式 |
space_list_installed |
列出已安裝的虛擬應用程式、執行個體、簽章和 native 狀態 |
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 網址 |
這些工具透過 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 區域網路監聽,傳回本機位址和權限狀態 |
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 Server(Streamable HTTP + Bearer Token)。儲存後「刷新工具」(重新整理工具)會請求 initialize / tools/list,工具以 mcp_<服务短 ID>_ 前綴提供給本機 AI 助手。
外部工具不註冊進 NestSpace 的 ToolRegistry,遠端 MCP 用戶端看不到也不能直接呼叫它們。嚴格權限模式下每次外部工具呼叫都會確認;標準/寬鬆/自訂模式依「外部 MCP 工具」權限項目處理。Token 使用 Android Keystore 加密儲存。
工作階段與限制¶
- 每個用戶端使用獨立的
Mcp-Session-Id,閒置 30 分鐘後回收;未知工作階段傳回 404。 - 請求主體上限 40 MB,請求標頭 64 KB,並行連線 32。
- 預設只綁定 loopback;區域網路模式必須由使用者明確開啟,Bearer Token 仍然有效,但沒有 TLS。
- 遠端 MCP 與本機助手共用同一套容器工具,但設定類和助手橋接類工具只對遠端用戶端開放。