PyAutoGUI
FreeNot checkedExposes PyAutoGUI desktop automation functions as MCP tools, enabling mouse control, keyboard input, and screenshot capture.
About
Exposes PyAutoGUI desktop automation functions as MCP tools, enabling mouse control, keyboard input, and screenshot capture.
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.
Install PyAutoGUI in Claude Desktop, Claude Code & Cursor
unyly install pyautogui-mcpInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add pyautogui-mcp -- uvx pyautogui-mcpFAQ
Is PyAutoGUI MCP free?
Yes, PyAutoGUI MCP is free — one-click install via Unyly at no cost.
Does PyAutoGUI need an API key?
No, PyAutoGUI runs without API keys or environment variables.
Is PyAutoGUI hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install PyAutoGUI in Claude Desktop, Claude Code or Cursor?
Open PyAutoGUI on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare PyAutoGUI with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
