Mobile MCP
概述
工具列表
內容詳情
替代品
什麼是Mobile MCP?
Mobile MCP是一個基於Model Context Protocol (MCP)的服務器,旨在通過統一的接口實現iOS和Android設備的高效自動化。無需深入瞭解具體平臺,即可輕鬆完成應用測試、數據錄入以及多步驟任務的自動化。如何使用Mobile MCP?
安裝後,您可以通過簡單的命令啟動服務器,並連接到您的設備或模擬器。只需提供應用包名或URL,即可快速執行操作。適用場景
適用於測試、數據錄入、跨平臺任務流自動化、以及需要大規模執行的業務場景。主要功能
輕量且快速
利用原生無障礙樹進行交互,大幅提高響應速度。
LLM友好型設計
無需複雜計算機視覺模型,直接解析無障礙標籤。
視覺感知能力
根據屏幕實際渲染內容決定下一步動作,提供更智能的操作體驗。
確定性工具應用
減少純座標方法中的模糊性,優先採用結構化數據。
結構化數據提取
可以提取屏幕上任何可見內容的結構化數據。
優勢
無需學習iOS或Android特定知識
支持多種設備(模擬器、真機)
低代碼門檻,易於集成
高效的任務流處理
侷限性
依賴於設備驅動程序的正確安裝
某些特殊硬件操作可能有限制
需要網絡環境支持
如何使用
下載並安裝Mobile MCP
確保已安裝Node.js和所需的移動開發SDK(如Xcode或Android SDK)。然後運行以下命令安裝服務器:
```json
{
"mcpServers": {
"mobile-mcp": {
"command": "npx",
"args": ["-y", "@mobilenext/mobile-mcp@latest"]
}
}
}
```
啟動服務器
在終端中輸入以下命令啟動服務器:
```bash
npx @mobilenext/mobile-mcp@latest
```
連接設備
啟動模擬器或連接真實設備,並確保其正常工作。
使用案例
啟動應用並輸入文本
啟動Google Keep應用,並在搜索框中輸入關鍵詞。
截圖並分析
對當前屏幕進行截圖,並提取屏幕上的按鈕名稱。
常見問題
是否支持所有版本的iOS和Android設備?
是的,但需確保設備驅動程序已正確安裝並配置。
如何解決無法連接設備的問題?
檢查設備是否已正確啟動並授權調試模式。
是否可以批量操作多個設備?
目前僅支持單設備操作,但未來版本可能會增加批量支持。
相關資源
官方文檔
詳細的使用指南和技術文檔
GitHub代碼倉庫
源碼及最新更新
Roadmap
即將發佈的功能和改進計劃
安裝
複製以下命令到你的Client進行配置
注意:您的密鑰屬於敏感信息,請勿與任何人分享。
🚀 移動設備命令與交互工具文檔
本項目旨在打造一個靈活且可靠的移動設備自動化測試框架,支持藉助輔助功能定位器(preferred)和基於座標的輸入開展操作。用戶能夠依據實際需求挑選不同的定位方式,進而實現無縫的自動化流程。
🚀 快速開始
本項目提供了一系列用於操作移動設備的命令和方法,可通過調用相應的函數來實現各種功能,如應用管理、屏幕操作、網絡連接管理等。
✨ 主要特性
- 豐富的命令集:涵蓋了應用管理、屏幕操作、網絡連接管理等多種功能,滿足不同場景下的移動設備自動化測試需求。
- 靈活的定位方式:支持通過輔助功能定位器和基於座標的輸入進行操作,用戶可根據實際情況選擇合適的定位方式。
- 參數校驗:在每個操作函數中都進行了必要的參數校驗,確保輸入參數的格式和數據類型正確。
- 可組合性:允許用戶靈活地組合不同的操作來實現複雜的交互邏輯。
📦 安裝指南
文檔未提及安裝相關內容,故跳過此章節。
💻 使用示例
基礎用法
// 示例:使用 mobile_tap_elements 函數依次點擊兩個元素
var elements = ["element1", "element2"];
mobile_tap_elements(elements, true);
高級用法
// 組合多種操作示例
const mobileOperations = new MobileOperations();
mobileOperations.addOperation(MobileOperations.OPERATION_TYPE.TAP, { x: 100, y: 200 });
mobileOperations.addOperation(MobileOperations.OPERATION_TYPE.LONG_TAP, { x: 300, y: 400, duration: 1000 });
mobileOperations.execute();
📚 詳細文檔
命令列表與說明
mobile_list_apps
- 描述:列出設備上所有已安裝的應用程序。
- 參數:
bundleId(字符串):應用程序唯一的包/標識符,例如:com.google.android.keep或com.apple.mobilenotes。
mobile_launch_app
- 描述:在設備或模擬器上啟動指定應用程序。
- 參數:
bundleId(字符串):應用程序唯一的包/標識符,例如:com.google.android.keep或com.apple.mobilenotes。
mobile_terminate_app
- 描述:終止正在運行的應用程序。
- 參數:
packageName(字符串):根據應用程序的包/標識符調用am force stop或直接終止進程。
mobile_get_screen_size
- 描述:獲取設備屏幕的分辨率(以像素為單位)。
- 參數:無
mobile_click_on_screen_at_coordinates
- 描述:在指定的屏幕座標上點擊。
- 參數:
x(數字):X 座標y(數字):Y 座標
mobile_list_elements_on_screen
- 描述:列出屏幕上所有元素及其座標,包括顯示文本或輔助功能標籤。
- 參數:無
mobile_element_tap
- 描述:根據輔助功能定位器點擊指定的 UI 元素。
- 參數:
element(字符串):人類可讀的元素描述(例如,“登錄按鈕”)。ref(字符串):輔助功能/自動化 ID 或從快照中獲取的引用。
mobile_tap
- 描述:在指定的屏幕座標上點擊。
- 參數:
x(數字):X 座標y(數字):Y 座標
mobile_press_button
- 描述:按下設備上的硬件按鈕(例如:主頁、返回、音量、輸入等)。
- 參數:無
mobile_open_url
- 描述:在設備瀏覽器中打開指定 URL。
- 參數:
url(字符串):要打開的 URL 地址,例如:https://example.com。
mobile_type_text
- 描述:向焦點元素(如 TextField、SearchField)輸入文本。
- 參數:
text(字符串):要輸入的文本submit(布爾值):是否在輸入後按下回車鍵
mobile_element_swipe
- 描述:從一個 UI 元素滑動到另一個 UI 元素。
- 參數:
startElement(字符串):起始元素的人類可讀描述startRef(字符串):起始元素的輔助功能/自動化 IDendElement(字符串):結束元素的人類可讀描述endRef(字符串):結束元素的輔助功能/自動化 ID
mobile_swipe
- 描述:在兩個座標點之間執行滑動操作。
- 參數:
startX(數字):起始 X 座標startY(數字):起始 Y 座標endX(數字):結束 X 座標endY(數字):結束 Y 座標
mobile_press_and_hold
- 描述:在指定位置長按屏幕。
- 參數:
x(數字):X 座標y(數字):Y 座標duration(數字):長按的持續時間(以毫秒為單位)
mobile_drag_and_drop
- 描述:從一個位置拖動元素到另一個位置。
- 參數:
fromX(數字):拖動起點的 X 座標fromY(數字):拖動起點的 Y 座標toX(數字):拖動終點的 X 座標toY(數字):拖動終點的 Y 座標
mobile_scroll
- 描述:在屏幕上執行滾動操作。
- 參數:
direction(字符串):滾動方向,可選值為:up,down,left,right
mobile_get_text
- 描述:獲取指定元素的文本內容。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 ID
mobile_set_text
- 描述:向指定元素設置文本內容。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDtext(字符串):要設置的文本內容
mobile_clear_text
- 描述:清除輸入框中的文本內容。
- 參數:
elementRef(字符串):輸入框元素的輔助功能/自動化 ID
mobile_click_element_by_text
- 描述:根據文本內容點擊指定的 UI 元素。
- 參數:
text(字符串):元素顯示的文本內容partialMatch(布爾值, 可選):是否允許部分匹配,默認為false
mobile_click_element_by_content_description
- 描述:根據內容描述點擊指定的 UI 元素。
- 參數:
contentDescription(字符串):元素的內容描述partialMatch(布爾值, 可選):是否允許部分匹配,默認為false
mobile_wait_for_element
- 描述:等待指定元素出現(例如:等待頁面加載完成)。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDtimeout(數字, 可選):等待超時時間,以毫秒為單位,默認為30000
mobile_take_screenshot
- 描述:截取屏幕並保存截圖。
- 參數:
filename(字符串, 可選):保存的文件名,默認自動生成。
mobile_device_time
- 描述:獲取設備當前時間。
- 參數:無
mobile_set_volume
- 描述:調整設備音量。
- 參數:
volumeLevel(數字):音量級別,取值範圍為0到1.0
mobile_toggle_airplane_mode
- 描述:開啟或關閉飛行模式。
- 參數:無
mobile_check_wifi_connection
- 描述:檢查設備是否連接到 Wi-Fi 網絡。
- 參數:
ssid(字符串, 可選):要檢查的 Wi-Fi SSIDtimeout(數字, 可選):等待超時時間,以秒為單位,默認為30
mobile_connect_to_wifi
- 描述:連接到指定的 Wi-Fi 網絡。
- 參數:
ssid(字符串):要連接的 Wi-Fi SSIDpassword(字符串, 可選):Wi-Fi 密碼
mobile_disconnect_WIFI
- 描述:斷開當前 Wi-Fi 連接。
- 參數:無
mobile_check_network_connection
- 描述:檢查設備的網絡連接狀態(包括移動數據和 Wi-Fi)。
- 參數:
networkType(字符串, 可選):要檢查的網絡類型,可選值為:wifi,mobile
mobile_set_geolocation
- 描述:設置設備的地理位置信息(適用於模擬定位場景)。
- 參數:
latitude(數字):緯度longitude(數字):經度altitude(數字, 可選):海拔,默認為0
mobile_unset_geolocation
- 描述:恢復設備的默認地理位置信息。
- 參數:無
mobile_back_to_home_screen
- 描述:返回主屏幕。
- 參數:無
mobile_launch_app
- 描述:啟動指定的應用程序。
- 參數:
packageName(字符串):應用的包名activityName(字符串, 可選):要啟動的 Activity 名稱,默認為應用默認啟動頁面
mobile_close_app
- 描述:關閉當前應用程序。
- 參數:
packageName(字符串):應用的包名
mobile_clear_app_data
- 描述:清除應用程序的數據和緩存。
- 參數:
packageName(字符串):應用的包名
mobile_install_apk
- 描述:在設備上安裝 APK 文件。
- 參數:
apkPath(字符串):APK 文件的路徑waitTime(數字, 可選):安裝完成後等待的時間,以秒為單位,默認為5
mobile_uninstall_apk
- 描述:卸載指定的應用程序。
- 參數:
packageName(字符串):應用的包名
mobile_push_file
- 描述:將文件推送到設備上。
- 參數:
localFilePath(字符串):本地文件路徑remoteFileName(字符串, 可選):設備上的文件名稱,默認與本地文件名相同
mobile_pull_file
- 描述:從設備拉取指定文件到本地。
- 參數:
remoteFileName(字符串):設備上的文件路徑localSavePath(字符串, 可選):本地保存路徑,默認為當前工作目錄
mobile_logcat_clear
- 描述:清理設備的 logcat 日誌。
- 參數:無
mobile_logcat_dump
- 描述:導出設備的 logcat 日誌到文件。
- 參數:
filename(字符串, 可選):保存的日誌文件名,默認自動生成。
mobile_input_text
- 描述:在輸入框中輸入文本(類似sendKeys操作)。
- 參數:
elementRef(字符串):輸入框元素的輔助功能/自動化 IDtext(字符串):要輸入的文本內容
mobile_input_number
- 描述:在數字輸入框中輸入數值。
- 參數:
elementRef(字符串):數字輸入框元素的輔助功能/自動化 IDnumberValue(數字):要輸入的數值
mobile_switch_to_webview
- 描述:切換到 WebView 窗口(適用於混合應用)。
- 參數:
webViewIndex(數字, 可選):要切換的 WebView 索引,默認為第一個WebView
mobile_switch_to_native
- 描述:切換回 Native 元素(適用於混合應用)。
- 參數:無
mobile_get_current_context
- 描述:獲取當前上下文(Native 或 WebView)。
- 參數:
result(字符串):當前上下文的類型,返回值為:NATIVE,WEBVIEW
mobile_wait_for_element_text
- 描述:等待指定元素的文本內容出現。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDexpectedText(字符串):期望的文本內容timeout(數字, 可選):等待超時時間,以毫秒為單位,默認為30000
mobile_compare_element_text
- 描述:比較指定元素的當前文本內容與預期文本是否一致。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDexpectedText(字符串):期望的文本內容ignoreCase(布爾值, 可選):是否忽略大小寫,默認為false
mobile_is_element_present
- 描述:檢查指定元素是否存在。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDresult(布爾值):存在返回true,否則返回false
mobile_is_element_enabled
- 描述:檢查指定元素是否啟用(可點擊)。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDresult(布爾值):啟用返回true,否則返回false
mobile_is_element_selected
- 描述:檢查指定元素是否被選中(如RadioButton、CheckBox等)。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDresult(布爾值):被選中返回true,否則返回false
mobile_is_element_displayed
- 描述:檢查指定元素是否可見。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDresult(布爾值):可見返回true,否則返回false
mobile_element_attribute
- 描述:獲取指定元素的某個屬性值。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDattributeName(字符串):要獲取的屬性名稱result(字符串):屬性對應的值
mobile_element_text
- 描述:獲取指定元素的文本內容。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDresult(字符串):文本內容
mobile_set_value
- 描述:設置輸入框中的值(類似於sendKeys操作)。
- 參數:
elementRef(字符串):輸入框元素的輔助功能/自動化 IDvalue(字符串):要設置的文本內容
mobile_press_element
- 描述:對指定元素進行點擊操作。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDtimes(數字, 可選):點擊次數,默認為1
mobile_long_press_element
- 描述:對指定元素進行長按操作。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDduration(數字, 可選):長按的時間,以毫秒為單位,默認為500
mobile_swipe_element
- 描述:對指定元素進行滑動操作(向左、向右)。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDdirection(字符串):滑動方向,可選值為:LEFT,RIGHTdistance(數字, 可選):滑動的距離,默認為元素寬度的一半
mobile_drag_element
- 描述:對指定元素進行拖拽操作。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDtargetElementRef(字符串, 可選):要拖拽到的目標元素的輔助功能/自動化 ID,默認為 null,表示拖拽到屏幕中心位置duration(數字, 可選):拖拽操作的時間,以毫秒為單位,默認為500
mobile_scroll_element
- 描述:對指定元素進行滾動操作。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDdirection(字符串):滾動方向,可選值為:UP,DOWN,LEFT,RIGHTsteps(數字, 可選):滾動的步數,默認為1
mobile_pinch_element
- 描述:對指定元素進行 pinch(捏)操作。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDscaleFactor(數字, 可選):捏合的比例因子,範圍在(0,1)之間,默認為0.5duration(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_zoom_element
- 描述:對指定元素進行 zoom(縮放)操作。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDscaleFactor(數字, 可選):縮放的比例因子,範圍在(0,1)或(1, infinity)之間,默認為2duration(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_rotate_element
- 描述:對指定元素進行旋轉操作。
- 參數:
elementRef(字符串):元素的輔助功能/自動化 IDdegrees(數字, 可選):旋轉的角度,範圍在-180到180之間,默認為90duration(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_tap_coordinates
- 描述:在指定的座標位置進行點擊操作。
- 參數:
x(數字):點擊的 x 座標y(數字):點擊的 y 座標
mobile_tap_elements
- 描述:對一組元素進行點擊操作,按順序依次點擊每個元素。
- 參數:
elements(數組):元素的輔助功能/自動化 ID 數組simultaneous(布爾值, 可選):是否同時點擊,默認為false
mobile_long_tap_coordinates
- 描述:在指定座標位置進行長按操作。
- 參數:
x(數字):長按的 x 座標y(數字):長按的 y 座標duration(數字, 可選):長按的時間,以毫秒為單位,默認為500
mobile_swipe_coordinates
- 描述:在指定座標位置進行滑動操作。
- 參數:
startX(數字):起始點的 x 座標startY(數字):起始點的 y 座標endX(數字):終止點的 x 座標endY(數字):終止點的 y 座標duration(數字, 可選):滑動操作的時間,以毫秒為單位,默認為500
mobile_swipe_elements
- 描述:對一組元素進行滑動操作,按順序依次滑動每個元素。
- 參數:
elements(數組):元素的輔助功能/自動化 ID 數組direction(字符串, 可選):滑動方向,默認為RIGHTsimultaneous(布爾值, 可選):是否同時滑動,默認為false
mobile_drag_coordinates
- 描述:在指定座標位置進行拖拽操作。
- 參數:
startX(數字):拖拽起點的 x 座標startY(數字):拖拽起點的 y 座標endX(數字):拖拽終點的 x 座標endY(數字):拖拽終點的 y 座標duration(數字, 可選):拖拽操作的時間,以毫秒為單位,默認為500
mobile_drag_elements
- 描述:對一組元素進行拖拽操作,按順序依次拖拽每個元素。
- 參數:
startElements(數組):起始點的元素輔助功能/自動化 ID 數組endElements(數組):終止點的元素輔助功能/自動化 ID 數組simultaneous(布爾值, 可選):是否同時拖拽,默認為false
mobile_pinch_coordinates
- 描述:在指定座標位置進行 pinch(捏)操作。
- 參數:
startX(數字):起始點的 x 座標startY(數字):起始點的 y 座標endX(數字):終止點的 x 座標endY(數字):終止點的 y 座標scaleFactor(數字, 可選):縮放比例,默認為0.5duration(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_pinch_elements
- 描述:對一組元素進行 pinch(捏)操作,按順序依次捏每個元素。
- 參數:
elements(數組):元素的輔助功能/自動化 ID 數組simultaneous(布爾值, 可選):是否同時捏,默認為false
mobile_zoom_coordinates
- 描述:在指定座標位置進行 zoom(縮放)操作。
- 參數:
x(數字):縮放的 x 座標y(數字):縮放的 y 座標scaleFactor(數字, 可選):縮放比例,默認為2duration(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_zoom_elements
- 描述:對一組元素進行 zoom(縮放)操作,按順序依次縮放每個元素。
- 參數:
elements(數組):元素的輔助功能/自動化 ID 數組simultaneous(布爾值, 可選):是否同時縮放,默認為false
mobile_rotate_coordinates
- 描述:在指定座標位置進行旋轉操作。
- 參數:
x(數字):旋轉的 x 座標y(數字):旋轉的 y 座標degrees(數字, 可選):旋轉角度,默認為90duration(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_rotate_elements
- 描述:對一組元素進行旋轉操作,按順序依次旋轉每個元素。
- 參數:
elements(數組):元素的輔助功能/自動化 ID 數組degrees(數字, 可選):旋轉角度,默認為90simultaneous(布爾值, 可選):是否同時旋轉,默認為false
注意事項
⚠️ 重要提示
- 參數名、類型及默認值請保持與示例中的統一,特別是布爾型參數如
simultaneous的處理。- 對於每個操作函數,請確保輸入參數的格式和數據類型正確,並進行必要的參數校驗。
- 如有必要,可以添加更多的註釋來解釋複雜的功能或特殊情況。
解決方案代碼
class MobileOperations {
constructor() {
this.operations = [];
}
addOperation(type, params) {
if (!this[type]) {
throw new Error('未知的操作類型');
}
this.operations.push({ type, params });
return this;
}
execute() {
for (const op of this.operations) {
this[op.type](op.params);
}
return this;
}
// 點擊操作
mobile_tap(params) {
const { x, y } = params;
if (typeof x !== 'number' || typeof y !== 'number') {
throw new Error('x 和 y 必須是數字');
}
console.log(`在座標 (${x}, ${y}) 點擊`);
}
// 長按操作
mobile_long_tap(params) {
const { x, y, duration = 500 } = params;
if (typeof x !== 'number' || typeof y !== 'number') {
throw new Error('x 和 y 必須是數字');
}
console.log(`在座標 (${x}, ${y}) 長按 ${duration} 毫秒`);
}
// 滑動操作
mobile_swipe(params) {
const { start, end, duration = 500 } = params;
if (typeof start.x !== 'number' || typeof start.y !== 'number') {
throw new Error('start 必須有 x 和 y 座標');
}
if (typeof end.x !== 'number' || typeof end.y !== 'number') {
throw new Error('end 必須有 x 和 y 座標');
}
console.log(`從 (${start.x}, ${start.y}) 滑動到 (${end.x}, ${end.y})`);
}
// 拖拽操作
mobile_drag(params) {
const { start, end, duration = 500 } = params;
if (typeof start.x !== 'number' || typeof start.y !== 'number') {
throw new Error('start 必須有 x 和 y 座標');
}
if (typeof end.x !== 'number' || typeof end.y !== 'number') {
throw new Error('end 必須有 x 和 y 座標');
}
console.log(`從 (${start.x}, ${start.y}) 拖拽到 (${end.x}, ${end.y})`);
}
// 捏合操作
mobile_pinch(params) {
const { points, scale = 0.5, duration = 500 } = params;
if (!Array.isArray(points)) {
throw new Error('points 必須是數組');
}
console.log(`執行捏合操作,點為 ${JSON.stringify(points)},縮放比例為 ${scale}`);
}
// 旋轉操作
mobile_rotate(params) {
const { center, startAngle, endAngle, duration = 500 } = params;
if (typeof center.x !== 'number' || typeof center.y !== 'number') {
throw new Error('center 必須有 x 和 y 座標');
}
console.log(`以點 (${center.x}, ${center.y}) 為中心,從 ${startAngle} 度旋轉到 ${endAngle} 度`);
}
// 執行示例操作
static example() {
const operations = new MobileOperations()
.addOperation('mobile_tap', { x: 100, y: 200 })
.addOperation('mobile_long_tap', { x: 300, y: 400, duration: 1000 })
.addOperation('mobile_swipe', {
start: { x: 50, y: 50 },
end: { x: 250, y: 250 }
})
.addOperation('mobile_drag', {
start: { x: 100, y: 100 },
end: { x: 300, y: 300 }
})
.addOperation('mobile_pinch', {
points: [{ x: 150, y: 150 }, { x: 250, y: 250 }],
scale: 0.8
})
.addOperation('mobile_rotate', {
center: { x: 200, y: 200 },
startAngle: 0,
endAngle: 360
});
operations.execute();
}
}
// 使用示例
MobileOperations.example();
解釋
此解決方案定義了一個 MobileOperations 類,用於管理移動設備的各種交互操作。每個操作(如點擊、長按、滑動等)都被封裝成獨立的方法,並且可以將這些操作添加到隊列中,最後通過 execute() 方法依次執行。
主要特點包括:
- 模塊化設計:每個操作都是一個獨立的方法,便於維護和擴展。
- 可組合性:允許用戶靈活地組合不同的操作來實現複雜的交互邏輯。
- 錯誤處理:在每個方法中都進行了參數驗證,確保輸入的正確性。
通過這種方式,開發者可以輕鬆地構建和執行各種移動設備的交互操作。
🔧 技術細節
移動設備的交互操作通常包括點擊、長按、滑動、拖拽、捏合和旋轉等基本操作。為了實現這些操作,可以將每一種操作封裝成一個函數,並允許它們組合在一起執行。
這個解決方案中定義了一個 MobileOperations 類,它包含各種移動設備操作的方法(如點擊、長按等),每個方法對應一種交互類型。通過使用 addOperation 方法可以將多種操作添加到操作隊列中,最後調用 execute() 方法來依次執行這些操作。
這種方法允許用戶靈活地組合不同的操作,並且每個操作獨立實現,便於擴展和維護。
📄 許可證
文檔未提及許可證相關內容,故跳過此章節。
mobile_take_screenshot
截取設備屏幕快照。如果需要點擊通過視圖層次可用的元素,則需先列出屏幕上元素。請勿緩存此結果。
swipe_on_screen
在屏幕上滑動
參數
direction : enum*
描述
mobile_press_button
按壓設備上的按鈕
參數
button : string*
描述
mobile_open_url
在設備上打開指定的URL
參數
url : string*
描述
mobile_type_keys
向聚焦元素輸入文本。如果submit參數為true,則會自動提交。
參數
text : string*
描述
參數
submit : boolean*
描述
mobile_list_elements_on_screen
列出屏幕上元素及其座標,包括顯示文本或無障礙標籤。請勿緩存此結果。
替代品
R
Rsdoctor
Rsdoctor 是一款專為 Rspack 生態系統打造的構建分析工具,全面兼容 webpack,提供可視化構建分析、多維度性能診斷及智能優化建議,幫助開發者提升構建效率與工程質量。
TypeScript
8.6K
5分
N
Next Devtools MCP
Next.js開發工具MCP服務器,為Claude、Cursor等AI編程助手提供Next.js開發工具和實用程序,包括運行時診斷、開發自動化和文檔訪問功能。
TypeScript
8.2K
5分
T
Testkube
Testkube是一個面向雲原生應用的測試編排與執行框架,提供統一平臺來定義、運行和分析測試,支持現有測試工具和Kubernetes基礎設施。
Go
5.1K
5分
M
MCP Windbg
一個MCP服務器,將AI模型與WinDbg/CDB集成,用於分析Windows崩潰轉儲文件和進行遠程調試,支持自然語言交互執行調試命令。
Python
9.4K
5分
R
Runno
Runno是一個JavaScript工具包集合,用於在瀏覽器和Node.js等環境中安全地運行多種編程語言的代碼,通過WebAssembly和WASI實現沙盒化執行,支持Python、Ruby、JavaScript、SQLite、C/C++等語言,並提供Web組件、MCP服務器等集成方式。
TypeScript
7.4K
5分

Netdata
Netdata是一個開源即時基礎設施監控平臺,提供每秒級指標收集、可視化、機器學習驅動的異常檢測和自動化告警,無需複雜配置即可實現全棧監控。
Go
9.4K
5分
M
MCP Server
Mapbox MCP服務器是一個Node.js實現的模型上下文協議服務器,為AI應用提供Mapbox地理空間API的訪問能力,包括地理編碼、興趣點搜索、路線規劃、等時線分析和靜態地圖生成等功能。
TypeScript
6.7K
4分
U
Uniprof
uniprof是一個簡化CPU性能分析的工具,支持多種編程語言和運行時,無需修改代碼或添加依賴,可通過Docker容器或主機模式進行一鍵式性能剖析和熱點分析。
TypeScript
8.2K
4.5分

Baidu Map
已認證
百度地圖MCP Server是國內首個兼容MCP協議的地圖服務,提供地理編碼、路線規劃等10個標準化API接口,支持Python和Typescript快速接入,賦能智能體實現地圖相關功能。
Python
34.7K
4.5分

Markdownify MCP
Markdownify是一個多功能文件轉換服務,支持將PDF、圖片、音頻等多種格式及網頁內容轉換為Markdown格式。
TypeScript
26.8K
5分

Firecrawl MCP Server
Firecrawl MCP Server是一個集成Firecrawl網頁抓取能力的模型上下文協議服務器,提供豐富的網頁抓取、搜索和內容提取功能。
TypeScript
101.9K
5分

Sequential Thinking MCP Server
一個基於MCP協議的結構化思維服務器,通過定義思考階段幫助分解複雜問題並生成總結
Python
28.6K
4.5分

Edgeone Pages MCP Server
EdgeOne Pages MCP是一個通過MCP協議快速部署HTML內容到EdgeOne Pages並獲取公開URL的服務
TypeScript
22.2K
4.8分

Magic MCP
Magic Component Platform (MCP) 是一個AI驅動的UI組件生成工具,通過自然語言描述幫助開發者快速創建現代化UI組件,支持多種IDE集成。
JavaScript
17.5K
5分

Notion Api MCP
已認證
一個基於Python的MCP服務器,通過Notion API提供高級待辦事項管理和內容組織功能,實現AI模型與Notion的無縫集成。
Python
16.4K
4.5分

Context7
Context7 MCP是一個為AI編程助手提供即時、版本特定文檔和代碼示例的服務,通過Model Context Protocol直接集成到提示中,解決LLM使用過時信息的問題。
TypeScript
65.9K
4.7分
