Skip to main content
Glama
chigwell

PyAutoGUI-MCP

by chigwell

PyAutoGUI-MCP exposes MCP tools dynamically from the PyAutoGUI API. It does not manually reimplement or wrap each function: it auto-registers the available API.

Install with pip

pip install pyautogui-mcp

Run the server:

pyautogui-mcp --transport stdio
pyautogui-mcp --transport http --host 127.0.0.1 --port 8000

MCP client config example:

{
  "mcpServers": {
    "pyautogui-mcp": {
      "command": "pyautogui-mcp",
      "args": ["--transport", "stdio"]
    }
  }
}

Run with uv

Dependencies are declared in pyproject.toml, so uv can resolve and run directly:

{
  "mcpServers": {
    "pyautogui-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/full/path/to/pyautogui-mcp",
        "run",
        "python",
        "-m",
        "pyautogui_mcp"
      ]
    }
  }
}

You can also launch manually:

uv run python -m pyautogui_mcp --transport stdio
uv run python -m pyautogui_mcp --transport http --host 127.0.0.1 --port 8000

Use in your own project

Import only what you need and run it under your own server lifecycle:

from pyautogui_mcp import mcp, register_pyautogui_api

register_pyautogui_api(prefix="pyautogui_")
mcp.run()  # or mcp.run(transport="http", host="127.0.0.1", port=8000)

Other exports:

from pyautogui_mcp import pyautogui_diagnose, pyautogui_tools

Desktop control notes

  • The server runs actions on the machine where it is launched (current desktop/display).

  • PyAutoGUI requires a real GUI session; headless environments will fail.

  • Safety: moving the mouse to a corner triggers the PyAutoGUI failsafe.

  • Optional pause between actions via PYAUTOGUI_PAUSE=0.1.

Tool examples

Tool names are exposed with the default pyautogui_ prefix (configurable with --prefix).

Tool

Inputs (common)

Output

pyautogui_screenshot

imageFilename (optional), region (optional [left, top, width, height])

MCP image content (PNG bytes)

pyautogui_screenshot_encoded

format (png/jpeg), quality (1-95, JPEG only), region

MCP image content (PNG/JPEG bytes)

pyautogui_position

none

cursor coordinates { "x": int, "y": int }

pyautogui_click

x, y, clicks, button, interval, duration

null (mouse click performed)

pyautogui_doubleClick

x, y, button, interval, duration

null (double-click performed)

pyautogui_rightClick

x, y, interval, duration

null (right-click performed)

pyautogui_moveTo

x, y, duration

null (mouse moved)

pyautogui_moveRel

xOffset, yOffset, duration

null (mouse moved relative)

pyautogui_dragTo

x, y, duration, button

null (drag performed)

pyautogui_dragRel

xOffset, yOffset, duration, button

null (drag performed)

pyautogui_write

message, interval

null (text typed)

pyautogui_typewrite

message, interval

null (text typed)

pyautogui_press

keys, presses, interval

null (key press performed)

pyautogui_hotkey

keys, interval

null (hotkey chord performed)

pyautogui_scroll

clicks, x, y

null (scroll performed)

pyautogui_tools

none

tool list { note, tools:[{name, description}] }

pyautogui_diagnose

none

{ python, platform, deps } diagnostic info

Use pyautogui_tools to list the exact tool set for your environment and PyAutoGUI version.

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
3Releases (12mo)

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chigwell/pyautogui-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server