loading…
Search for a command to run...
loading…
Exposes PyAutoGUI desktop automation functions as MCP tools, enabling mouse control, keyboard input, and screenshot capture.
Exposes PyAutoGUI desktop automation functions as MCP tools, enabling mouse control, keyboard input, and screenshot capture.
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.
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"]
}
}
}
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
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
PYAUTOGUI_PAUSE=0.1.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.
Run in your terminal:
claude mcp add pyautogui-mcp -- npx Yes, PyAutoGUI MCP is free — one-click install via Unyly at no cost.
No, PyAutoGUI runs without API keys or environment variables.
Self-hosted: the server runs locally on your machine via the install command above.
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.
CSA PROJECT - FZCO © 2026 IFZA Business Park, DDP, Premises Number 31174 - 001
Security
Low riskAutomated heuristic from public metadata — not a security guarantee.