macOS桌面自动化工具

mac-use-mcp是一个零原生依赖的macOS桌面自动化工具,通过MCP协议提供鼠标、键盘和屏幕控制功能,适用于UI测试、工作流自动化和AI代理操作。

  • by antbotlab
  • TypeScript
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 antbotlab/mac-use-mcp

使用说明

mac使用mcp

[!警告] 此工具可以完全控制鼠标、键盘和屏幕。 请在沙盒环境中使用,以保护您的隐私,避免您的代理意外丢失数据。您对通过此工具执行的任何操作负责。

通过MCP实现macOS桌面自动化的零原生依赖。

让AI代理在macOS上用眼睛和手——点击、打字、截图和检查任何应用程序。

用例

  • 自动化UI测试 --单击按钮,使用验证元素状态 get_ui_elements,通过以下方式验证屏幕内容 screenshot
  • 桌面工作流自动化 --启动应用程序 open_application,填写表格 type_text,通过浏览菜单 click_menu
  • 基于屏幕截图的监控 --定期捕获屏幕区域 screenshot 用于视觉差异或警报
  • 无障碍检查 --使用查询UI元素树 get_ui_elements 用于质量保证和合规检查
  • AI代理计算机使用 --通过以下方式在macOS上为LLMs提供眼睛和手 screenshot, click, type_text,以及更多

为什么mac使用mcp?

  • 只是工作 — npx mac-use-mcp 并授予两个macOS权限。没有node-gyp,没有Xcode工具,没有构建步骤。
  • 18个工具,一台服务器 --屏幕截图、点击、按键、窗口管理、可访问性检查和剪贴板。
  • 英特尔和苹果Silicon上的macOS 13+ --没有原生插件,没有架构难题。

安装

要求: macOS 13+和Node.js 22+。服务器通过以下方式进行通信 标准 运输。

此软件包仅适用于macOS。它将拒绝在其他操作系统上安装。

没有构建步骤。没有本机依赖关系。只需运行:

npx mac-use-mcp

npx 将在首次运行时提示安装该软件包。使用 npx -y mac-use-mcp 跳过确认。

[!提示] 模型选择很重要。 桌面自动化涉及屏幕截图——在令牌使用中累积的动作循环。建议使用具有扎实推理、良好视觉和可靠工具调用的快速模型:

型号 供应商
双子座3 Flash 谷歌
克劳德·十四行诗4.6 人类学
GPT-5 mini OpenAI
MiniMax-M2.5 MiniMax
Kimi K2.5 登月AI
Qwen3.5 阿里巴巴
GLM-4.7 智普AI

权限设置

mac使用mcp需要两个macOS权限才能运行。给他们一次,你就做好了。

无障碍

需要鼠标和键盘控制。

  1. 打开 系统设置 > 隐私和安全 > 无障碍
  2. 点击 + 按钮
  3. 添加您的MCP客户端应用程序(例如,Claude Desktop,您的终端模拟器)
  4. 确保已启用切换

屏幕录制

截图需要。

  1. 打开 系统设置 > 隐私和安全 > 屏幕录制
  2. 点击 + 按钮
  3. 添加您的MCP客户端应用程序
  4. 确保已启用切换
  5. 如果出现提示,请重新启动应用程序

验证权限

在授予权限并配置MCP客户端(请参阅下一节)后,使用 check_permissions 确认一切正常的工具:

> check_permissions
✓ Accessibility: granted
✓ Screen Recording: granted

MCP客户端配置

Claude Code
claude mcp add mac-use-mcp -- npx mac-use-mcp
Claude Desktop

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}
OpenAI Codex

添加 ~/.codex/config.toml:

[mcp_servers.mac-use]
command = "npx"
args = ["-y", "mac-use-mcp"]

或者通过CLI:

codex mcp add mac-use -- npx -y mac-use-mcp
Google Antigravity

添加 ~/.gemini/antigravity/mcp_config.json:

{
  "mcpServers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}
Gemini CLI

添加 ~/.gemini/settings.json:

{
  "mcpServers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}
VS Code / Copilot

添加 .vscode/mcp.json 在工作区中(或打开命令面板并运行 MCP:打开用户配置 用于全局设置):

{
  "servers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}
Cursor

添加 ~/.cursor/mcp.json (全球)或 .cursor/mcp.json (项目层面):

{
  "mcpServers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}
Windsurf

添加 ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}
Cline

打开Cline的MCP设置(在Cline扩展面板中,单击MCP服务器图标),然后添加:

{
  "mcpServers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}
Kiro

添加 ~/.aws/amazonq/mcp.json:

{
  "mcpServers": {
    "mac-use-mcp": {
      "command": "npx",
      "args": ["mac-use-mcp"]
    }
  }
}

工具

这个Node.js MCP服务器向任何兼容MCP的客户端公开了18个用于鼠标、键盘和屏幕控制的工具。

屏幕

工具 说明
screenshot 按标题(PNG或JPEG)捕获屏幕、区域或窗口
get_screen_info 获取每个显示器的显示计数、分辨率、原点和比例因子
get_cursor_position 获取当前光标坐标

输入

工具 说明
click 使用按钮、单击计数和修改器选项在屏幕坐标处单击
move_mouse 将光标移动到某个位置
scroll 在某个位置向上、向下、向左或向右滚动
drag 在可配置的持续时间内从一个点拖动到另一个点
type_text 在光标位置键入文本(支持Unicode、CJK和表情符号)
press_key 按下按键或按键组合(例如。, "cmd+c", "Return")

窗口和应用程序

工具 说明
list_windows 列出所有可见窗口的位置和大小
focus_window 激活应用程序并将特定窗口带到前面
open_application 按名称启动应用程序
click_menu 按路径单击菜单栏项(例如,“文件>另存为…”)

应用名称支持模糊匹配-- "chrome" 解析为 "Google Chrome", "code" 到 "Code"等等。

无障碍

工具 说明
get_ui_elements 通过辅助功能API查询UI元素-按角色或标题查找按钮、文本字段和其他控件

剪贴板

工具 说明
clipboard_read 以纯文本形式读取当前系统剪贴板
clipboard_write 将文本写入系统剪贴板

效用

工具 说明
wait 暂停指定的持续时间(以毫秒为单位,0-10000,默认值500)
check_permissions 验证可访问性和屏幕录制访问权限

例子

使用mac的常见工作流模式使用mcp工具:

特定窗口的屏幕截图

1. focus_window({ app: "Safari" })
2. screenshot({ mode: "window", window_title: "Safari" })

单击对话框中的按钮

1. get_ui_elements({ app: "Finder", role: "AXButton" })
   → finds "OK" button at position (500, 300)
2. click({ x: 500, y: 300 })

自动执行菜单操作

1. open_application({ name: "TextEdit" })
2. click_menu({ app: "TextEdit", path: "Format > Make Plain Text" })

在应用程序之间复制文本

1. focus_window({ app: "Safari" })
2. press_key({ key: "cmd+a" })       # select all
3. press_key({ key: "cmd+c" })       # copy
4. focus_window({ app: "Notes" })
5. press_key({ key: "cmd+v" })       # paste

运作原理

  • Swift二进制 处理鼠标输入(CGEvent)、屏幕捕获(CGWindowListCreateImage)、窗口枚举(CGWindowListCopyWindowInfo)和UI元素查询(Accessibility API)
  • AppleScript 处理键盘输入(系统事件 key code)、窗口焦点和菜单单击
  • Node.js MCP服务器 通过stdio协调一切,将MCP工具调用转换为系统操作
  • 没有原生Node.js插件 --Swift二进制文件是预编译的,并附带了npm包
  • 串行执行队列 防止系统操作之间的竞争情况

已知限制

  • 红杉上的屏幕录制提示:macOS 15显示每月的系统提示,要求重新确认屏幕录制访问。这是操作系统级别的行为,无法抑制。
  • 安全输入字段:密码字段和其他安全文本输入会阻止合成键盘事件。这是macOS的安全功能。
  • macOS 26上的键盘输入+:CGEvent键盘合成被静默阻止。键盘输入使用AppleScript(System Events key code)作为一种变通方法,在某些边缘情况下可能表现不同。
  • 系统对话框:由于macOS安全限制,某些系统级对话框(例如FileVault解锁、登录窗口)无法以编程方式进行交互。
  • 无头/CI:需要图形会话。不支持无头macOS环境(例如标准GitHub Actions运行器)。

故障排除

Permission prompts keep appearing

在“系统设置”>“隐私和安全”中为您的终端应用程序授予辅助功能和屏幕录制权限。可能需要重新启动终端。

macOS Sequoia permission dialogs

macOS 15(Sequoia)引入了更严格的权限提示。允许出现提示。这 check_permissions 该工具可以验证您当前的权限状态。

Secure input fields

一些密码字段和安全文本输入会阻止编程密钥事件。这是macOS的安全功能。使用 clipboard_write + press_key("cmd+v") 作为一种变通方法。

Screen recording shows black screenshots

确保您的终端应用程序获得了屏幕录制权限(而不仅仅是辅助功能)。授权后重新启动终端。

相关项目

  • 剧作家MCP --通过可访问性树实现浏览器自动化。mac将mcp用于仅限web的任务。
  • 躲猫猫 --使用ScreenCaptureKit实现macOS屏幕自动化。需要macOS 15+和Swift版本。
  • 很棒的mcp服务器 --整理整个生态系统中的MCP服务器列表。

贡献

看 贡献.md 用于开发设置和指南。

更新日志

安全

要报告漏洞,请参阅 安全.md.

支持

许可证

麻省理工学院 ©2026安博特实验室


macOS是苹果股份有限公司在美国和其他国家和地区注册的商标。