这是一款适用于原生macOS应用程序的工具,就像Playwright用于浏览器一样强大。它能让Claude通过自然语言控制任何Mac应用程序,是在AI辅助下进行Mac应用程序开发和测试的完美选择。
git clone https://github.com/mb-dev/macos-ui-automation-mcp.git
cd macos-ui-automation-mcp
uv sync
⚠️ 重要提示
必须为父应用程序启用辅助功能:
- 如果使用终端:将终端添加到
系统设置 → 隐私与安全性 → 辅助功能中。- 如果使用VS Code:将VS Code添加到
系统设置 → 隐私与安全性 → 辅助功能中。- 如果使用Claude Code:将Claude Code添加到
系统设置 → 隐私与安全性 → 辅助功能中。父应用程序需要此权限,因为它是实际执行MCP服务器的程序。
在Claude Code MCP设置中添加以下内容:
{
"mcpServers": {
"macos-ui-automation": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/macos-ui-automation-mcp",
"run",
"macos-ui-automation-mcp"
]
}
}
}
现在你可以向Claude提出以下请求:
这是一个MCP(模型上下文协议)服务器,它赋予Claude查看和与任何macOS应用程序交互的能力。就像Playwright用于浏览器一样,它适用于原生Mac应用程序。
适用场景:
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查询查找元素:
# 所有应用程序中的所有按钮
$..[?(@.role=='AXButton')]
# 具有特定文本的按钮
$..[?(@.title=='Submit')]
# 所有启用的文本字段
$..[?(@.role=='AXTextField' && @.enabled==true)]
# 具有辅助功能标识符的元素
$..[?(@.ax_identifier=='loginButton')]
# 特定应用程序中的元素
$.processes[?(@.name=='Calculator')]..[?(@.role=='AXButton')]
此工具在开发和测试Mac应用程序时表现出色:
"测试我的登录流程:
1. 找到用户名字段并输入 'testuser'
2. 找到密码字段并输入 'password123'
3. 点击登录按钮
4. 验证是否出现成功消息"
"检查我的设置窗口:
- 所有按钮是否正确标注?
- 是否有任何没有辅助功能标识符的文本字段?
- 点击截图按钮以捕获当前状态"
"对我的应用程序进行辅助功能审核:
- 查找所有没有辅助功能标签的交互式元素
- 检查键盘导航是否正常工作
- 识别任何可能难以使用的元素"
我们没有提供内置的截图功能,但你可以轻松地将其添加到你的Mac应用程序中!查看我们基于实际应用程序的完整Swift实现示例。
关键点:
ScreenCaptureKit(macOS 14+)进行高质量捕获与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
# 测试MCP服务器
uv run macos-ui-automation-mcp
基于以下技术构建:
本项目采用MIT许可证,你可以在你的项目中自由使用!
系统设置 → 隐私与安全性 → 屏幕录制中find_elements_in_app)就像Playwright通过提供简单的API来控制浏览器,彻底改变了Web测试一样,这个工具也为原生macOS应用程序做了同样的事情。你无需编写复杂的GUI自动化脚本,只需用自然语言告诉Claude你想要测试或自动化的内容。
它非常适合AI辅助开发的时代!🤖
需要帮助? 查看示例文件夹或提出问题。更好的是,提交一个PR!😄