桌面自动化服务器

MCP Server for PyAutoGUI 是一个基于Model Context Protocol (MCP)的服务器,提供鼠标、键盘和屏幕交互控制,用于AI系统和开发者的桌面自动化任务。

  • by hathibelagal-dev
  • Python
  • 本地部署
  • 20 星标
  • 更新于
在 GitHub 查看 hathibelagal-dev/mcp-pyautogui

使用说明

PyAutoGUI的MCP服务器

mcp-pyautogui 实施a 模型上下文协议(MCP) 服务器 PyAutoGUI它提供对鼠标、键盘和屏幕交互的控制,允许AI系统在主机上自动化任务。

服务器运行超时 stdio 传输,并提供点击、打字、截图等工具,注重简单性和可靠性。它专为希望将桌面自动化集成到其工作流程中的开发人员和人工智能爱好者而设计。

特性

  • 控制鼠标移动、单击和拖动。
  • 模拟键盘输入(单键、文本、热键)。
  • 捕获屏幕截图并检索鼠标位置。
  • 获取平台特定逻辑的当前操作系统。
  • 使用布尔成功指标(如适用)进行一致的错误处理。

先决条件

  • Python 3.11+

您还必须授予相关权限。

安装

使用 pip 安装服务器。

pip install mcp-pyautogui

然后,您可以运行以下命令来确定服务器的安装位置:

which mcp-pyautogui

# Sample output:
# /Users/bob/miniconda3/envs/desk/bin/mcp-pyautogui

添加时使用该位置 mcp-pyautogui 到你的 claude_desktop_config.json 文件。以下是一个示例配置:

{
  "mcpServers": {
    "mcp-pyautogui": {
      "command": "/Users/bob/miniconda3/envs/desk/bin/mcp-pyautogui",
      "args": [
          ""
      ]
    }
  }
}

用法

如果您遵循了上述安装步骤,则不需要执行任何其他操作。只需使用Claude Desktop,您就可以自动看到此MCP服务器提供的所有工具。您可以通过以下方式测试此服务器 “你能点击(200200)吗?”.

服务器运行超时 stdio 传输,这意味着它通过标准输入/输出进行通信。要使用它,请连接一个兼容MCP的客户端(例如,AI助手或自定义脚本),该客户端可以发送JSON-RPC命令并接收响应。

示例命令

  • 点击(100200): click(100, 200) → 如果成功,则返回true。
  • 键入“hello”: type_text("hello") → 返回true。
  • 截图: take_screenshot("screenshot.png") → 保存到截屏.png。
  • 获取鼠标位置: get_mouse_position() → 返回(500300)(示例)。
  • 复制文本: hotkey("ctrl c") → 返回true。
  • 获取当前操作系统: get_os() → 返回“Windows”(如果在Windows上)。

可用工具的完整列表

  • click(x, y):在坐标(x,y)处单击鼠标左键。
    • 参数: x: int, y: int
    • 传回型别: bool
  • right_click(x, y):在坐标(x,y)处单击鼠标右键。
    • 参数: x: int, y: int
    • 传回型别: bool
  • move_to(x, y):将鼠标移动到坐标(x,y)超过3秒。
    • 参数: x: int, y: int
    • 传回型别: bool
  • drag_to(x, y, duration):在指定的持续时间(默认为1.0秒)内将鼠标拖动到(x,y)。
    • 参数: x: int, y: int, duration: float
    • 传回型别: bool
  • type_text(text):键入给定的文本。
    • 参数: text: str
    • 传回型别: bool
  • press_key(key):按下并释放单个按键(例如。, 'enter', 'space', 'a').
    • 参数: key: str
    • 传回型别: bool
  • hotkey(keys):同时按下多个键(例如。, 'ctrl c').空格分隔的字符串。
    • 参数: keys: str
    • 传回型别: bool
  • scroll(amount):按金额向上(正)或向下(负)滚动。
    • 参数: amount: int
    • 传回型别: bool
  • take_screenshot(filename):将屏幕截图保存到指定文件(例如。, 'screen.png').
    • 参数: filename: str
    • 传回型别: bool
  • get_mouse_position():获取当前鼠标坐标(x,y)。
    • 参数:无
    • 传回型别: str
  • get_os():获取当前操作系统名称(例如。, 'Windows', 'macOS', 'Linux').
    • 参数:无
    • 传回型别: str
  • double_click(x, y):在给定的(x,y)坐标处双击。
    • 参数: x: int, y: int
    • 传回型别: bool
  • get_screen_size():获取屏幕分辨率(宽度、高度)。
    • 参数:无
    • 传回型别: str
  • pixel_color(x, y):获取(x,y)处像素的RGB颜色。返回(r,g,b)。
    • 参数: x: int, y: int
    • 传回型别: str