mac使用mcp
\[!警告\] 此工具可以完全控制鼠标、键盘和屏幕。 请在沙盒环境中使用,以保护您的隐私,避免您的代理意外丢失数据。您对通过此工具执行的任何操作负责。
通过MCP实现macOS桌面自动化的零原生依赖。
让AI代理在macOS上用眼睛和手——点击、打字、截图和检查任何应用程序。
 ](https://www.npmjs.com/package/mac-use-mcp) ](https://www.npmjs.com/package/mac-use-mcp)  
用例
- 自动化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-mcpnpx将在首次运行时提示安装该软件包。使用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权限才能运行。给他们一次,你就做好了。
无障碍
需要鼠标和键盘控制。
- 打开 系统设置 > 隐私和安全 > 无障碍
- 点击 + 按钮
- 添加您的MCP客户端应用程序(例如,Claude Desktop,您的终端模拟器)
- 确保已启用切换
屏幕录制
截图需要。
- 打开 系统设置 > 隐私和安全 > 屏幕录制
- 点击 + 按钮
- 添加您的MCP客户端应用程序
- 确保已启用切换
- 如果出现提示,请重新启动应用程序
验证权限
在授予权限并配置MCP客户端(请参阅下一节)后,使用 check_permissions 确认一切正常的工具:
> check_permissions
✓ Accessibility: granted
✓ Screen Recording: grantedMCP客户端配置
Claude Code
claude mcp add mac-use-mcp -- npx mac-use-mcpClaude 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-mcpGoogle 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是苹果股份有限公司在美国和其他国家和地区注册的商标。
