About Pyautogui MCP
Pyautogui MCP is an MCP server published by chigwell in the Developer Tools category: mCP server exposing PyAutoGUI for desktop automation with dynamic tool registry and stdio/http transports.
The repository has 4 stars and 0 forks, with the last commit 9 months ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/chigwell/pyautogui-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (16)
pyautogui_click`x`, `y`, `clicks`, `button`, `interval`, `duration`
Parameters not published.
pyautogui_diagnosenone
Parameters not published.
pyautogui_doubleClick`x`, `y`, `button`, `interval`, `duration`
Parameters not published.
pyautogui_dragRel`xOffset`, `yOffset`, `duration`, `button`
Parameters not published.
pyautogui_dragTo`x`, `y`, `duration`, `button`
Parameters not published.
pyautogui_hotkey`keys`, `interval`
Parameters not published.
pyautogui_moveRel`xOffset`, `yOffset`, `duration`
Parameters not published.
pyautogui_moveTo`x`, `y`, `duration`
Parameters not published.
pyautogui_positionnone
Parameters not published.
pyautogui_press`keys`, `presses`, `interval`
Parameters not published.
Show all 16 tools
pyautogui_rightClick`x`, `y`, `interval`, `duration`
Parameters not published.
pyautogui_screenshot`imageFilename` (optional), `region` (optional `[left, top, width, height]`)
Parameters not published.
pyautogui_screenshot_encoded`format` (`png`/`jpeg`), `quality` (1-95, JPEG only), `region`
Parameters not published.
pyautogui_scroll`clicks`, `x`, `y`
Parameters not published.
pyautogui_typewrite`message`, `interval`
Parameters not published.
pyautogui_write`message`, `interval`
Parameters not published.
Ask AI
Ask AI about Pyautogui MCP
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository just now. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- !Tests presentNo tests found. Behaviour changes may go unnoticed between versions.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
- !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.
Releases
README
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.
README fetched from the repository just now. The original is authoritative.