macOS控制MCP服务器
使用FastMCP和PyAutoGUI实现macOS桌面自动化的模型上下文协议(MCP)服务器。 此MCP可完全控制您的MacOS桌面。它可以与Linux和windows一起工作,但这些都没有经过测试。 毫无疑问,这是非常危险的。在容器、VM等中运行。
特性
鼠标控制
- 将鼠标移动到坐标
- 单击(左、右、中)
- 双击
- 滚动
- 拖放
- 获取鼠标位置
键盘控制
- 键入文本
- 按各个键
- 执行热键组合(Cmd+C、Cmd+V等)
- 按住并松开钥匙
屏幕截图与分析
- 截图(全屏或区域)
- 获取屏幕分辨率
- 在屏幕上查找图像
- 获取坐标处的像素颜色
公用事业
- 睡眠/暂停执行
- 配置故障保护和暂停设置
安装
先决条件
- macOS
- Python 3.10或更高版本
- uv包管理器
设置
- 克隆或导航到项目目录:
cd ~/macos-control-mcp- 安装依赖项:
uv sync- 授予必要的权限:
- 无障碍通道:系统设置→ 隐私和安全→ 无障碍 - 屏幕录制:系统设置→ 隐私和安全→ 屏幕录制
将终端(或您的终端应用程序)添加到这两个权限中。
配置Claude桌面以进行开发
将此添加到您的Claude Desktop配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"macos-control": {
"command": "uv",
"args": [
"--directory",
"
/macos-control-mcp",
"run",
"macos-control-mcp"
]
}
}
}用法示例
在Claude Desktop中配置后,您可以使用自然语言控制您的Mac:
鼠标控制
- 将鼠标移动到位置500、300
- 在坐标100、200处单击
- “双击屏幕中央”
- 在400、500处单击鼠标右键
- “向下滚动5次点击”
键盘控制
- “键入‘Hello World’”
- “按Enter键”
- “按Cmd+C复制”
- “按Cmd+Shift+3进行屏幕截图”
屏幕捕获
- “截图”
- “屏幕分辨率是多少?”
- “获取像素的颜色为100,100”
联合行动
- 将鼠标移动到500、300并单击
- “类型”test@example.com'然后按Tab键“
- 按Cmd+Space,键入“Safari”,然后按Enter键
可用工具
鼠标工具
move_mouse(x, y, duration)-将光标移动到坐标click_mouse(x, y, button, clicks, interval)-点击位置double_click(x, y)-双击right_click(x, y)-右键单击scroll_mouse(clicks, x, y)-滚轮drag_mouse(x, y, duration, button)-拖动到指定位置get_mouse_position()-获取当前光标位置
键盘工具
type_text(text, interval)-键入文本press_key(key, presses, interval)-按一个键hotkey(*keys)-按组合键key_down(key)-按住一个键key_up(key)-松开钥匙
屏幕工具
get_screen_size()-获取屏幕分辨率take_screenshot(region)-捕获屏幕locate_on_screen(image_path, confidence)-查找图片get_pixel_color(x, y)-获取RGB颜色
实用工具
sleep(seconds)-暂停执行set_failsafe(enabled)-配置故障保护set_pause(duration)-设置动作暂停
安全特性
故障保护
默认情况下,将鼠标移动到任何屏幕角落都会中止PyAutoGUI操作。这可以通过以下方式禁用 set_failsafe(False).
暂停
默认情况下,在操作之间插入0.1秒的暂停。用……调整 set_pause(duration).
发展
运行测试
uv run pytest手动运行服务器
uv run macos-control-mcp故障排除
“权限被拒绝”错误
确保您已向终端应用程序授予“辅助功能”和“屏幕录制”权限。
“找不到图像”错误
使用时 locate_on_screen,尝试降低置信度参数(默认值为0.9)。
服务器未响应
- 检查克劳德桌面日志:
~/Library/Logs/Claude/ - 验证配置中的路径是否与安装匹配
- 重新启动克劳德桌面
许可证
麻省理工学院
鸣谢
内置:
