桌面自动化控制服务

一个用于macOS桌面自动化的MCP服务器,提供鼠标、键盘控制、屏幕捕获与分析功能,适用于自动化测试和开发辅助。

  • by Lodimup
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 Lodimup/macos-control-mcp

使用说明

macOS控制MCP服务器

使用FastMCP和PyAutoGUI实现macOS桌面自动化的模型上下文协议(MCP)服务器。 此MCP可完全控制您的MacOS桌面。它可以与Linux和windows一起工作,但这些都没有经过测试。 毫无疑问,这是非常危险的。在容器、VM等中运行。

特性

鼠标控制

  • 将鼠标移动到坐标
  • 单击(左、右、中)
  • 双击
  • 滚动
  • 拖放
  • 获取鼠标位置

键盘控制

  • 键入文本
  • 按各个键
  • 执行热键组合(Cmd+C、Cmd+V等)
  • 按住并松开钥匙

屏幕截图与分析

  • 截图(全屏或区域)
  • 获取屏幕分辨率
  • 在屏幕上查找图像
  • 获取坐标处的像素颜色

公用事业

  • 睡眠/暂停执行
  • 配置故障保护和暂停设置

安装

先决条件

  • macOS
  • Python 3.10或更高版本
  • uv包管理器

设置

  1. 克隆或导航到项目目录:

    cd ~/macos-control-mcp
    
  2. 安装依赖项:

    uv sync
    
  3. 授予必要的权限:

    • 无障碍通道:系统设置→ 隐私和安全→ 无障碍
    • 屏幕录制:系统设置→ 隐私和安全→ 屏幕录制

    将终端(或您的终端应用程序)添加到这两个权限中。

配置Claude桌面以进行开发

将此添加到您的Claude Desktop配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "macos-control": {
      "command": "uv",
      "args": [
        "--directory",
        "<path_to_folder>/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)。

服务器未响应

  1. 检查克劳德桌面日志: ~/Library/Logs/Claude/
  2. 验证配置中的路径是否与安装匹配
  3. 重新启动克劳德桌面

许可证

麻省理工学院

鸣谢

内置: