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
,RIGHT
distance
(數字, 可選):滑動的距離,默認為元素寬度的一半
mobile_drag_element
- 描述:對指定元素進行拖拽操作。
- 參數:
elementRef
(字符串):元素的輔助功能/自動化 IDtargetElementRef
(字符串, 可選):要拖拽到的目標元素的輔助功能/自動化 ID,默認為 null,表示拖拽到屏幕中心位置duration
(數字, 可選):拖拽操作的時間,以毫秒為單位,默認為500
mobile_scroll_element
- 描述:對指定元素進行滾動操作。
- 參數:
elementRef
(字符串):元素的輔助功能/自動化 IDdirection
(字符串):滾動方向,可選值為:UP
,DOWN
,LEFT
,RIGHT
steps
(數字, 可選):滾動的步數,默認為1
mobile_pinch_element
- 描述:對指定元素進行 pinch(捏)操作。
- 參數:
elementRef
(字符串):元素的輔助功能/自動化 IDscaleFactor
(數字, 可選):捏合的比例因子,範圍在(0,1)
之間,默認為0.5
duration
(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_zoom_element
- 描述:對指定元素進行 zoom(縮放)操作。
- 參數:
elementRef
(字符串):元素的輔助功能/自動化 IDscaleFactor
(數字, 可選):縮放的比例因子,範圍在(0,1)
或(1, infinity)
之間,默認為2
duration
(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_rotate_element
- 描述:對指定元素進行旋轉操作。
- 參數:
elementRef
(字符串):元素的輔助功能/自動化 IDdegrees
(數字, 可選):旋轉的角度,範圍在-180
到180
之間,默認為90
duration
(數字, 可選):操作的時間,以毫秒為單位,默認為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
(字符串, 可選):滑動方向,默認為RIGHT
simultaneous
(布爾值, 可選):是否同時滑動,默認為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.5
duration
(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_pinch_elements
- 描述:對一組元素進行 pinch(捏)操作,按順序依次捏每個元素。
- 參數:
elements
(數組):元素的輔助功能/自動化 ID 數組simultaneous
(布爾值, 可選):是否同時捏,默認為false
mobile_zoom_coordinates
- 描述:在指定座標位置進行 zoom(縮放)操作。
- 參數:
x
(數字):縮放的 x 座標y
(數字):縮放的 y 座標scaleFactor
(數字, 可選):縮放比例,默認為2
duration
(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_zoom_elements
- 描述:對一組元素進行 zoom(縮放)操作,按順序依次縮放每個元素。
- 參數:
elements
(數組):元素的輔助功能/自動化 ID 數組simultaneous
(布爾值, 可選):是否同時縮放,默認為false
mobile_rotate_coordinates
- 描述:在指定座標位置進行旋轉操作。
- 參數:
x
(數字):旋轉的 x 座標y
(數字):旋轉的 y 座標degrees
(數字, 可選):旋轉角度,默認為90
duration
(數字, 可選):操作的時間,以毫秒為單位,默認為500
mobile_rotate_elements
- 描述:對一組元素進行旋轉操作,按順序依次旋轉每個元素。
- 參數:
elements
(數組):元素的輔助功能/自動化 ID 數組degrees
(數字, 可選):旋轉角度,默認為90
simultaneous
(布爾值, 可選):是否同時旋轉,默認為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
列出屏幕上元素及其座標,包括顯示文本或無障礙標籤。請勿緩存此結果。

Search1api
Search1API MCP Server是一個基於Model Context Protocol (MCP)的服務器,提供搜索和爬取功能,支持多種搜索服務和工具。
TypeScript
317
4分

Duckduckgo MCP Server
已認證
DuckDuckGo搜索MCP服務器,為Claude等LLM提供網頁搜索和內容抓取服務
Python
799
4.3分

MCP Alchemy
已認證
MCP Alchemy是一個連接Claude Desktop與多種數據庫的工具,支持SQL查詢、數據庫結構分析和數據報告生成。
Python
304
4.2分

Postgresql MCP
一個基於FastMCP庫的PostgreSQL數據庫MCP服務,提供對指定表的CRUD操作、模式檢查和自定義SQL查詢功能。
Python
87
4分

Agentic Radar
Agentic Radar是一個用於分析和評估代理系統的安全掃描工具,幫助開發者、研究人員和安全專家理解代理系統的工作流程並識別潛在漏洞。
Python
536
5分

MCP Scan
MCP-Scan是一款針對MCP服務器的安全掃描工具,用於檢測提示注入、工具汙染和跨域升級等常見安全漏洞。
Python
598
5分

Cloudflare
Changesets是一個用於管理多包或單包倉庫版本和發佈的構建工具。
TypeScript
1.5K
5分

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

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

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

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

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

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

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

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

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