🚀 macOS版Playwright MCP 🎭
這是一款適用於原生macOS應用程序的工具,就像Playwright用於瀏覽器一樣強大。它能讓Claude通過自然語言控制任何Mac應用程序,是在AI輔助下進行Mac應用程序開發和測試的完美選擇。
🚀 快速開始
1. 安裝
git clone https://github.com/mb-dev/macos-ui-automation-mcp.git
cd macos-ui-automation-mcp
uv sync
2. 設置輔助功能權限
⚠️ 重要提示
必須為父應用程序啟用輔助功能:
- 如果使用終端:將終端添加到
系統設置 → 隱私與安全性 → 輔助功能中。
- 如果使用VS Code:將VS Code添加到
系統設置 → 隱私與安全性 → 輔助功能中。
- 如果使用Claude Code:將Claude Code添加到
系統設置 → 隱私與安全性 → 輔助功能中。
父應用程序需要此權限,因為它是實際執行MCP服務器的程序。
3. 配置Claude Code
在Claude Code MCP設置中添加以下內容:
{
"mcpServers": {
"macos-ui-automation": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/macos-ui-automation-mcp",
"run",
"macos-ui-automation-mcp"
]
}
}
}
4. 開始自動化操作!
現在你可以向Claude提出以下請求:
- "查找計算器應用程序中的所有按鈕"
- "點擊我應用程序中的提交按鈕"
- "點擊截圖按鈕以捕獲當前窗口"
- "通過填寫憑證並點擊提交來測試登錄流程"
✨ 主要特性
這是一個MCP(模型上下文協議)服務器,它賦予Claude查看和與任何macOS應用程序交互的能力。就像Playwright用於瀏覽器一樣,它適用於原生Mac應用程序。
適用場景:
- 🧪 測試Mac應用程序 - "測試我應用程序中的登錄流程"
- 🔍 應用程序開發 - "檢查所有按鈕是否正確標註"
- 🤖 UI自動化 - "填寫此表單並提交"
- 📱 應用程序探索 - "向我展示訪達中的所有交互式元素"
📦 安裝指南
git clone https://github.com/mb-dev/macos-ui-automation-mcp.git
cd macos-ui-automation-mcp
uv sync
💻 使用示例
基礎用法
$..[?(@.role=='AXButton')]
$..[?(@.title=='Submit')]
$..[?(@.role=='AXTextField' && @.enabled==true)]
$..[?(@.ax_identifier=='loginButton')]
$.processes[?(@.name=='Calculator')]..[?(@.role=='AXButton')]
高級用法
"測試我的登錄流程:
1. 找到用戶名字段並輸入 'testuser'
2. 找到密碼字段並輸入 'password123'
3. 點擊登錄按鈕
4. 驗證是否出現成功消息"
📚 詳細文檔
可用工具
| 屬性 |
詳情 |
find_elements |
使用JSONPath查找UI元素 |
find_elements_in_app |
在特定應用程序中搜索 |
click_by_accessibility_id |
使用輔助功能操作進行點擊 |
click_at_position |
在屏幕座標處點擊 |
type_text_to_element_by_selector |
向元素中輸入文本 |
get_app_overview |
獲取正在運行的應用程序的概述 |
list_running_applications |
列出所有正在運行的應用程序 |
check_accessibility_permissions |
驗證設置是否正確 |
JSONPath示例
使用強大的JSONPath查詢查找元素:
$..[?(@.role=='AXButton')]
$..[?(@.title=='Submit')]
$..[?(@.role=='AXTextField' && @.enabled==true)]
$..[?(@.ax_identifier=='loginButton')]
$.processes[?(@.name=='Calculator')]..[?(@.role=='AXButton')]
應用程序測試
此工具在開發和測試Mac應用程序時表現出色:
測試自動化
"測試我的登錄流程:
1. 找到用戶名字段並輸入 'testuser'
2. 找到密碼字段並輸入 'password123'
3. 點擊登錄按鈕
4. 驗證是否出現成功消息"
UI驗證
"檢查我的設置窗口:
- 所有按鈕是否正確標註?
- 是否有任何沒有輔助功能標識符的文本字段?
- 點擊截圖按鈕以捕獲當前狀態"
輔助功能審核
"對我的應用程序進行輔助功能審核:
- 查找所有沒有輔助功能標籤的交互式元素
- 檢查鍵盤導航是否正常工作
- 識別任何可能難以使用的元素"
添加截圖功能
我們沒有提供內置的截圖功能,但你可以輕鬆地將其添加到你的Mac應用程序中!查看我們基於實際應用程序的完整Swift實現示例。
關鍵點:
- 使用
ScreenCaptureKit(macOS 14+)進行高質量捕獲
- 自動找到你的應用程序窗口
- 將帶時間戳的截圖保存到“文檔/截圖”文件夾中
- 與這個MCP完美集成 - 只需添加一個輔助功能標識符!
與Playwright MCP一起使用:
"點擊截圖按鈕以捕獲當前窗口"
MCP將通過輔助功能ID找到你的按鈕並觸發截圖!
開發設置
對於貢獻者和高級用戶:
git clone https://github.com/mb-dev/macos-ui-automation-mcp.git
cd macos-ui-automation-mcp
uv sync --dev
uv run python -m pytest tests/ -v
uv run ruff check src/ tests/ mcp_server_wrapper.py
uv run ruff format
uv run macos-ui-automation-mcp
🔧 技術細節
架構
基於以下技術構建:
- FastMCP - MCP服務器框架
- PyObjC - macOS輔助功能API綁定
- Pydantic - 類型安全的數據模型
- JSONPath - 強大的元素查詢
- 全面的測試套件 - 用於在不使用真實UI的情況下進行測試的模擬系統
📄 許可證
本項目採用MIT許可證,你可以在你的項目中自由使用!
⚠️ 重要提示
輔助功能權限
- 必須授予父應用程序(終端、VS Code等)
- 而不是Python或MCP服務器本身
- 這是在macOS上進行任何UI自動化所必需的
截圖權限
- 如果你的應用程序具有截圖功能,它需要屏幕錄製權限
- 將你的應用程序添加到
系統設置 → 隱私與安全性 → 屏幕錄製中
- 這與輔助功能權限是分開的
性能提示
- 儘可能使用特定應用程序的搜索(
find_elements_in_app)
- 淺層搜索在獲取概述時更快
- 深層搜索更全面但速度較慢
侷限性
- 需要輔助功能API訪問權限(某些應用程序可能會限制此權限)
- 最適合原生macOS應用程序
- 某些系統級元素可能無法訪問
🎭 為什麼叫“Mac版Playwright”?
就像Playwright通過提供簡單的API來控制瀏覽器,徹底改變了Web測試一樣,這個工具也為原生macOS應用程序做了同樣的事情。你無需編寫複雜的GUI自動化腳本,只需用自然語言告訴Claude你想要測試或自動化的內容。
它非常適合AI輔助開發的時代!🤖
需要幫助? 查看示例文件夾或提出問題。更好的是,提交一個PR!😄