AutoMac MCP
⚠️ 已归档
2026 年 3 月 23 日,Anthropic 宣布 Claude 现在可以自动控制桌面,请参阅:让 Claude 在您的电脑上工作
在 Claude Cowork 和 Claude Code 中,您现在可以启用 Claude 使用您的电脑来完成任务。当 Claude 没有访问所需工具的权限时,它会指向、点击并导航屏幕上的内容来自行执行任务。它可以自动打开文件、使用浏览器并运行开发工具——无需任何设置。
现在这个仓库已经多余了,因为现在可以通过他们自己的应用程序以可能更安全的方式实现这一点,尽管显然仍应非常谨慎地使用它。因此,我正在归档这个项目。它可能作为创建时期的“琥珀中的蚊子”快照,或者作为其他工具框架编排器的灵感来源而有用。
披露:本项目是使用 Anthropic 的 AI 驱动编码助手 Claude Code 开发的,作为快速原型设计和开发的一种实验性“氛围编码 (vibe coding)”方法的一部分。
AutoMac MCP
一个旨在本地运行的 MCP 服务器,提供对本地操作系统 UI 的完全控制。
目前仅编写为支持 Mac。
⚠️ 警告:这是一个实验性项目,授予 AI 助手对操作系统用户界面的直接控制权。这具有潜在危险,仅应在受控环境中使用以进行研究。该项目旨在测试 LLM 利用自动化 UI 编排工具的有效性,而非用于生产环境。
实验性项目,旨在与 Claude Desktop 一起使用。使用 MCP 服务器集成命令确认提示功能以保持安全!
快速入门
安装依赖项:
uv sync添加到 Claude Desktop - 转到 Settings > Developer > Edit Config,并将以下内容添加到您的
claude_desktop_config.json文件中(不要使用fastmcp install,因为它在基于 uv 的项目中无法可靠工作):{ "mcpServers": { "automac-mcp": { "command": "/path/to/automac-mcp/.venv/bin/python", "args": ["/path/to/automac-mcp/automac_mcp.py"] } } }授予 macOS 权限 - 在 System Settings > Privacy & Security 中为您的终端启用辅助功能 (Accessibility) 和屏幕录制 (Screen Recording) 权限。
重启 Claude Desktop 并开始自动化您的 macOS UI!
为了获得最佳效果,请在 System Preferences > Accessibility > Display 中开启“增加对比度”。
权限与首次设置
要使用 AutoMac MCP,您需要向您的终端或 Python 解释器授予辅助功能权限:
授予初始 macOS 权限
转到 System Settings > Privacy & Security
将您的终端(Terminal.app、iTerm2 等)添加到 Accessibility 和 Screen Recording
授予权限后重启您的终端
配置完全自动化的工具权限
⚠️ 对于实验性完全自动化:当 Claude 首次尝试使用任何工具时,您会看到权限提示。要启用无缝自动化,请为每个工具选择“始终允许 (Always allow in future)”。
这有风险 - 它授予 AI 对您的 UI 的完全控制权,而无需确认提示。仅在受控环境中出于研究目的执行此操作,并始终密切监控 AI 的操作。
这种实验性方法测试了 LLM 驱动的操作系统自动化领域的当前最先进水平。
测试设置
运行 MCP 服务器 - 它现在应该可以访问窗口信息和屏幕截图
注意:根据您的设置,您可能需要分别向您的终端应用程序和 Python 解释器授予权限。
MCP 服务器命令:
输入控制:
get_screen_size()- 获取屏幕尺寸mouse_move(x, y)- 将鼠标指针移动到坐标mouse_single_click(x, y)- 在坐标处单击mouse_double_click(x, y)- 在坐标处双击type_text(text)- 输入指定的文本scroll(dx, dy)- 使用像素增量值滚动
键盘快捷键:
keyboard_shortcut_return_key()- 按 Return/Enter 键keyboard_shortcut_escape_key()- 按 Escape 键keyboard_shortcut_tab_key()- 按 Tab 键keyboard_shortcut_space_key()- 按 Space 键keyboard_shortcut_delete_key()- 按 Delete/Backspace 键keyboard_shortcut_forward_delete_key()- 按 Forward Delete 键keyboard_shortcut_arrow_up()- 按向上箭头键keyboard_shortcut_arrow_down()- 按向下箭头键keyboard_shortcut_arrow_left()- 按向左箭头键keyboard_shortcut_arrow_right()- 按向右箭头键keyboard_shortcut_select_all()- 全选文本 (Cmd+A)keyboard_shortcut_copy()- 复制所选内容 (Cmd+C)keyboard_shortcut_paste()- 从剪贴板粘贴 (Cmd+V)keyboard_shortcut_cut()- 剪切所选内容 (Cmd+X)keyboard_shortcut_undo()- 撤销上次操作 (Cmd+Z)keyboard_shortcut_redo()- 重做上次撤销的操作 (Cmd+Shift+Z)keyboard_shortcut_save()- 保存当前文档 (Cmd+S)keyboard_shortcut_new()- 创建新文档 (Cmd+N)keyboard_shortcut_open()- 打开文档 (Cmd+O)keyboard_shortcut_find()- 在文档中查找 (Cmd+F)keyboard_shortcut_close_window()- 关闭当前窗口 (Cmd+W)keyboard_shortcut_quit_app()- 退出当前应用程序 (Cmd+Q)keyboard_shortcut_minimize_window()- 最小化当前窗口 (Cmd+M)keyboard_shortcut_hide_app()- 隐藏当前应用程序 (Cmd+H)keyboard_shortcut_switch_app_forward()- 切换到下一个应用程序 (Cmd+Tab)keyboard_shortcut_switch_app_backward()- 切换到上一个应用程序 (Cmd+Shift+Tab)keyboard_shortcut_spotlight_search()- 打开 Spotlight 搜索 (Cmd+Space)keyboard_shortcut_force_quit()- 打开强制退出对话框 (Cmd+Option+Esc)keyboard_shortcut_refresh()- 刷新/重新加载 (Cmd+R)
UI 理解:
get_screen_layout()- 使用 macOS 辅助功能 API 获取窗口/应用程序信息get_screen_text()- 使用带有定位功能的 OCR 读取屏幕上的所有文本focus_app(app_name, timeout)- 将应用程序置于前台(支持超时)get_available_apps()- 列出所有正在运行的应用程序
实用工具:
play_sound_for_user_prompt()- 播放系统提示音以提醒用户
架构
AutoMac MCP 构建为 模型上下文协议 (MCP) 服务器,允许像 Claude 这样的 AI 助手通过标准化接口与您的本地 macOS 系统进行交互。
什么是 MCP?
MCP (Model Context Protocol) 是一种标准,使 AI 助手能够安全地访问外部资源和工具。MCP 服务器通过两种主要类型公开功能:
工具 (Tools):AI 可以执行的操作(如点击、输入、滚动)
资源 (Resources):AI 可以访问的信息(如屏幕内容、正在运行的应用程序)
AutoMac MCP 的工作原理
Claude Desktop ←→ MCP Protocol ←→ AutoMac MCP Server ←→ macOS System APIsClaude Desktop 通过 MCP 协议连接到 MCP 服务器
AutoMac MCP 服务器 接收请求并将其转换为系统调用
macOS 系统 API 处理实际的 UI 交互和数据检索
结果通过相同的链条流回 Claude
核心组件
MCP 服务器框架
使用 FastMCP 构建,简化了 MCP 实现
处理 JSON-RPC 通信和 MCP 协议合规性
仅使用
@mcp.tool装饰器 - 避免使用资源 (@mcp.resource),因为 Claude Desktop 不会自动调用资源,只会调用工具
UI 控制层
pyautogui:跨平台输入控制(点击、输入、滚动)
pyobjc + AppKit:原生 macOS 窗口管理和应用程序控制
osascript + AppleScript:通过子进程调用实现系统级自动化
UI 理解层
macOS 辅助功能 API:用于窗口/元素信息的原生 UI 树访问
easyocr:用于读取屏幕文本的光学字符识别
屏幕截图捕获:结合 OCR 进行视觉 UI 理解
安全模型
AutoMac MCP 需要明确的 macOS 辅助功能权限,并依赖 Claude Desktop 的命令确认提示来防止未经授权的操作。所有系统交互都通过 MCP 协议进行中介,为 AI 驱动的 UI 自动化提供了一个受控接口。
提示技巧
在使用 AutoMac MCP 与 Claude 配合时,为了获得最佳效果:
明确应用程序:始终指定您要与之交互的应用程序。不要说“打开浏览器”,而要说“聚焦 Chrome”或“聚焦 Safari”。
请求切换应用程序:在其他应用程序中执行操作后,始终要求 Claude 切换回 Claude Desktop 应用程序,否则您将无法看到自动化是否成功。例如:“点击 Safari 中的提交按钮,然后切换回 Claude Desktop。”
使用清晰的操作序列:将复杂的任务分解为清晰的步骤并指定顺序。这有助于 Claude 准确理解您想要完成的任务。
开发状态与路线图
已完成功能
✅ 使用 FastMCP 实现核心 MCP 服务器
✅ 基本输入控制(点击、输入、滚动、键盘快捷键)
✅ 通过辅助功能 API 实现 macOS UI 理解
✅ 基于 OCR 的屏幕文本读取(带定位)
✅ 应用程序聚焦和管理
计划增强
[ ] 增强的 UI 检测:更细粒度的元素识别(按钮、文本字段、菜单)
[ ] 高级交互:拖放、右键上下文菜单
[ ] 多显示器支持:处理多个显示器和窗口定位
[ ] 改进的 OCR:更好的文本区域检测和准确性
[ ] 视觉反馈:屏幕截图注释和 UI 元素高亮显示
[ ] 辅助功能集成:更深入地利用 macOS 辅助功能 API
案例研究:自动化购买 Steam 游戏
D3:这是一个真实的会话,系统代表我进行了购买。以下是我录制的视频中的对话记录和截图。

提示:打开 Steam 并从我的愿望清单中为我购买一款或多款新游戏,为我挑选最好的。您的预算是 5 欧元。我完全授权您完成购买。完成后别忘了切换回 Claude 应用程序并报告结果。
我会帮您打开 Steam 并查看您的愿望清单,以找到预算 5 欧元以内的好游戏。让我先打开 Steam,然后导航到您的愿望清单。
focus_app

太棒了!Steam 现在已打开。让我检查一下屏幕上当前可见的内容,看看如何导航到您的愿望清单。
get_screen_text
我可以看到 Steam 已打开,菜单栏可见。我需要访问您的愿望清单。我会点击菜单中的“账户”来找到愿望清单选项。
mouse_single_click
让我检查一下点击“账户”后出现了哪些菜单选项。
get_screen_text
完美!我可以看到屏幕右上角有“愿望清单 (141)”。让我点击它以访问您的愿望清单。
mouse_single_click

让我等一会儿让愿望清单加载,然后检查有哪些游戏可用。
get_screen_text
太棒了!我可以看到您的愿望清单已加载并按价格排序。我可以看到两款符合您 5 欧元预算的游戏:
Heroes of Book & Paper - 4.55 欧元(20% 折扣)
Hylics 2 - 7.39 欧元(50% 折扣)- 这略微超出了预算 第一款游戏“Heroes of Book & Paper”售价 4.55 欧元,完全在您的 5 欧元预算内,看起来是一个不错的选择。这是一款评价积极的 RPG 游戏。让我为这款游戏点击“添加到购物车”。
mouse_single_click

让我检查一下游戏是否已添加到购物车,并通过向下滚动查看更多选项,看看是否有其他实惠的游戏。
scroll
get_screen_text
完美!我可以看到“Heroes of Book & Paper”已成功添加到您的购物车 - 现在有一个“购物车 (1)”指示器,我还可以看到“已添加到您的购物车!”消息以及游戏的“在购物车中”状态。游戏价格为 4.55 欧元,在您的 5 欧元预算内。
现在我应该继续结账以完成购买。我会点击“查看我的购物车 (1)”以继续购买。
mouse_single_click

让我等待购物车页面加载并查看出现的内容。
get_screen_text
完美!我可以看到带有“Heroes of Book & Paper”的购物车页面。预计总额显示为 4.55 欧元,正好在您的 5 欧元预算内。现在我需要通过点击“继续付款”来完成购买。
mouse_single_click

让我等待付款页面加载并查看出现的内容。
get_screen_text
太棒了!我可以看到付款方式选择页面。PayPal 账户已被选为付款方式,我可以看到它已设置为向“xxx@gmail.com”收费。我会点击“继续”按钮以继续购买。
mouse_single_click

让我等待下一页加载并查看最终的审查/确认页面。
get_screen_text
我可以看到最终审查页面,其中包含所有详细信息:
游戏:Heroes of Book & Paper
价格:4.55 欧元(在您的 5 欧元预算内)
付款方式:PayPal 账户 (xxx@gmail.com)
总计:4.55 欧元 但是,我需要向下滚动以找到最终的“购买”按钮来完成交易。
scroll

get_screen_text
完美!我可以看到“购买”按钮。这是完成购买“Heroes of Book & Paper”(4.55 欧元)的最后一步。让我点击购买按钮以完成交易。
mouse_single_click

让我等待购买完成并查看确认信息。
get_screen_text
我注意到页面显示了一个协议表格,需要在完成前勾选。让我向下滚动看看是否有需要选择的复选框,并寻找最终的“购买”按钮。
scroll
get_screen_text
完美!我可以看到“购买”按钮可见,页面显示了所有条款和条件。我需要先检查是否有需要同意条款的复选框。让我向上滚动一点,看看在完成购买前是否有需要点击的复选框。
scroll
`get_screen_
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Appeared in Searches
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/digithree/automac-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server