⚠️ 已归档
2026年3月23日,Anthropic宣布克劳德现在可以自动控制桌面,请参阅: 让克劳德在你的电脑上工作
在Claude Cowork和Claude Code中,您现在可以让Claude使用您的计算机完成任务。当Claude无法访问所需的工具时,它将指向、单击并导航屏幕上的内容以执行任务本身。它可以自动打开文件、使用浏览器和运行开发工具,无需设置。
现在这个仓库是多余的,因为现在可以通过他们自己的应用程序以一种可能更安全的方式实现,尽管显然仍然应该非常小心地使用它。因此,我将这个项目归档。它既可以作为创建它的时间的琥珀色快照中的蚊子,也可以作为不同工具框架的其他编排者的灵感来源。
______________________________________________________________________
披露该项目是使用Anthropic的人工智能编码助手Claude Code开发的,作为快速原型制作和开发的实验性“氛围编码”方法的一部分。
AutoMac MCP
一个旨在本地运行的MCP服务器,提供对本地操作系统UI的完全控制。
目前仅支持Mac。
⚠️ 警告:这是一个实验项目,允许人工智能助手直接控制操作系统的用户界面。这有潜在的危险,只能在受控环境中用于研究目的。该项目旨在测试LLM如何有效地利用自动化UI编排工具,而不是用于生产用途。
实验性,旨在与Cluade Desktop一起使用。使用MCP服务器集成命令确认提示功能来保证安全!
快速开始
- 安装依赖项:
uv sync- 添加到克劳德桌面 -前往“设置”>“开发人员”>“编辑配置”,并将以下内容添加到您的
claude_desktop_config.json文件(不要使用fastmcp install因为它不能可靠地用于基于紫外线的项目):
{
"mcpServers": {
"automac-mcp": {
"command": "/path/to/automac-mcp/.venv/bin/python",
"args": ["/path/to/automac-mcp/automac_mcp.py"]
}
}
}- 授予macOS权限 -在“系统设置”>“隐私和安全”中为您的终端启用辅助功能和屏幕录制权限。
- 重新启动克劳德桌面 并开始自动化您的macOS UI!
为了获得最佳效果,请在“系统首选项”>“辅助功能”>“显示”中启用“增加对比度”
权限和首次设置
要使用AutoMac MCP,您需要向您的终端或Python解释器授予可访问权限:
- 授予初始macOS权限
- 首选 系统设置 > 隐私和安全 - 将您的终端(terminal.app、iTerm2等)添加到 无障碍 和 屏幕录制 - 授予权限后重新启动终端
- 配置工具权限以实现完全自动化
⚠️ 用于实验性全自动化:当Claude首次尝试使用任何工具时,您将看到权限提示。要实现无缝自动化,请为每个工具选择“未来始终允许”。
这有风险 -它赋予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()-按回车/回车键keyboard_shortcut_escape_key()-按Esc键keyboard_shortcut_tab_key()-按Tab键keyboard_shortcut_space_key()-按空格键keyboard_shortcut_delete_key()-按Delete/Backspace键keyboard_shortcut_forward_delete_key()-按前进删除键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()-打开聚光灯搜索(Cmd+空格)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这样的人工智能助手通过标准化的界面与您的本地macOS系统进行交互。
什么是MCP?
MCP(模型上下文协议)是一种标准,使AI助手能够安全地访问外部资源和工具。MCP服务器通过两种主要类型公开功能:
- 工具:AI可以执行的操作(如点击、打字、滚动)
- 资源:AI可以访问的信息(如屏幕内容、正在运行的应用程序)
AutoMac MCP的工作原理
Claude Desktop ←→ MCP Protocol ←→ AutoMac MCP Server ←→ macOS System APIs- 克劳德桌面 通过MCP协议连接到MCP OSer
- AutoMac MCP服务器 接收请求并将其转换为系统调用
- macOS系统API 处理实际的UI交互和数据检索
- 结果通过同一条链流回克劳德
核心组件
MCP服务器框架
- 建于 FastMCP 简化MCP实施
- 处理JSON-RPC通信和MCP协议合规性
- 用途
@mcp.tool专属装饰师-资源(@mcp.resource)因为Claude Desktop不会自动调用资源,只会调用工具
UI控制层
- PyAutoGUI:跨平台输入控件(单击、键入、滚动)
- pyobjc+AppKit:原生macOS窗口管理和应用程序控制
- osascript+AppleScript:通过子流程调用实现系统级自动化
UI理解层
- macOS辅助功能API:原生UI树访问窗口/元素信息
- 简易光学字符识别:用于读取屏幕文本的光学字符识别
- 屏幕截图:结合OCR进行视觉UI理解
安全模型
AutoMac MCP需要明确的macOS访问权限,并依赖于Claude Desktop的命令确认提示来防止未经授权的操作。所有系统交互都通过MCP协议进行调解,为AI驱动的UI自动化提供了一个受控的接口。
提示提示
为了在Claude使用AutoMac MCP时获得最佳效果:
具体说明应用程序:始终指定要与之交互的应用程序。与其说“打开浏览器”,不如说“聚焦Chrome”或“聚焦Safari”
请求应用程序切换:在其他应用程序中执行操作后,始终要求Claude切换回Claude Desktop应用程序,否则您将无法看到自动化工作。例如:“单击Safari中的提交按钮,然后切换回Claude Desktop。”
使用清晰的动作序列:将复杂的任务分解为清晰的步骤并指定顺序。这有助于克劳德准确理解你想要实现的目标。
发展现状和路线图
已完成的功能
- ✅ 使用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欧元的预算: 1. 书籍与纸张英雄-4.55欧元(含20%折扣) 1. Hylics 2-7.39欧元(含50%折扣)-略高于预算 第一款游戏“书与纸的英雄”售价4.55欧元,完全符合您5欧元的预算,看起来是一个不错的选择。这是一款好评如潮的RPG。让我点击此游戏的“添加到购物车”。
mouse_single_click

让我检查一下游戏是否已添加到购物车中,并通过向下滚动查看更多选项来查看是否有其他价格合理的游戏。
scroll
get_screen_text
太好了!我可以看到“书籍与纸张英雄”已成功添加到您的购物车中——现在有一个“购物车(1)”指示器,我可以看到游戏的“已添加到购物车!”消息以及“在购物车中”状态。这款游戏的价格为4.55欧元,在您5欧元的预算范围内。 现在,我应该继续结账以完成购买。我将点击“查看我的购物车(1)”继续购买。
mouse_single_click

让我等待购物车页面加载,看看会出现什么。
get_screen_text
太好了!我可以看到购物车页面,购物车中有“书与纸的英雄”。预计总额为4.55欧元,完全在您的5欧元预算范围内。现在我需要点击“继续付款”完成购买。
mouse_single_click

让我等待付款页面加载,看看会出现什么。
get_screen_text
太棒了我可以看到付款方式选择页面。PayPal帐户已被选为付款方式,我可以看到它已设置为向“xxx@gmail.com。我将单击“继续”按钮继续购买。
mouse_single_click

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

get_screen_text
太好了!我可以看到“购买”按钮。这是以4.55欧元完成购买“书籍和纸张英雄”的最后一步。让我点击购买按钮以完成交易。
mouse_single_click

让我等待购买完成并查看确认。
get_screen_text
我注意到该页面显示了一份协议表格,需要在完成之前进行检查。让我向下滚动查看是否有需要选中的复选框,并查找最终的“购买”按钮。
scroll
get_screen_text
太好了!我可以看到“购买”按钮可见,页面显示了所有条款和条件。我需要先检查是否有任何复选框来同意条款。让我向上滚动一点,看看是否有需要点击的复选框,然后才能完成购买。
scroll
get_screen_text
让我看看复选框。我看到有一些条款需要达成一致。应该在某个地方有复选框可以点击。让我在另一个区域搜索复选框。我注意到消息“您必须同意Steam订阅者协议的条款才能完成此交易”,该消息建议应该有复选框可供单击。让我看看协议文本区域。
mouse_single_click
get_screen_text
我需要找到复选框。让我试着点击第二行协议,其中提到了提款权。
mouse_single_click

让我向下滚动,看看购买按钮现在是否可用,或者下面是否有更多条款。
scroll
get_screen_text
太棒了现在我可以看到“购买”按钮。看来条款协议可能已经被我之前的点击所接受,或者它们只是不需要明确点击复选框的文本。现在,我将单击“购买”按钮完成交易。
mouse_single_click

现在让我等待购买完成并检查结果。
get_screen_text

杰出的!购买已成功完成!我可以看到确认页面上有“谢谢您的购买!”的消息。现在,我需要按照要求切换回Claude应用程序。让我来做。
focus_app

太好了!我已成功完成您的请求。以下是所取得成就的总结: 采购摘要 ✅ 已成功从您的Steam愿望清单中购买游戏! 购买游戏:《书与纸的英雄》 - 价格:4.55欧元(在您的5欧元预算范围内) - 折扣:原价八折 - 类型:RPG,2D,冒险,独立,Roguelite - 评价:积极 - 付款方式:PayPal(xxx@gmail.com) 发生了什么: - 打开Steam并导航到您的愿望清单(141款游戏) - 在预算范围内找到了最佳选择——《书与纸的英雄》,售价4.55欧元 - 添加到购物车并完成结账 - 通过您的PayPal帐户完成付款 - 购买确认-您收到了“谢谢您的购买!”确认 其他好处: - 您通过此次购买获得了526个Steam积分 - 游戏现已注册到您的Steam帐户(xxx) - 电子邮件确认已发送到您的地址 - 您可以立即安装游戏,也可以在Steam库中找到它 总成本为4.55欧元,您的5欧元预算还剩0.45欧元。这款游戏似乎是一个不错的选择——这是一款好评如潮的RPG,提供20%的折扣,性价比很高!
