loading…
Search for a command to run...
loading…
An MCP server for macOS that enables AI agents to control the desktop GUI through keyboard input, mouse actions, and screen captures. It provides stable low-lev
An MCP server for macOS that enables AI agents to control the desktop GUI through keyboard input, mouse actions, and screen captures. It provides stable low-level primitives for UI automation and agent-driven desktop workflows.
macinput is a macOS keyboard, mouse, and screenshot control tool for AI agents. This repository is now structured as an installable Python project and an MCP server so desktop agents can control a macOS GUI through standard MCP tool calls.
The project has two goals:
Important: permissions apply to the program that launches the MCP server, not only to Python. If you launch through Claude Desktop, Terminal, iTerm2, Cursor, or VS Code, that host app must be granted permission.
uvuv sync
pippython -m pip install -e .
stdio is the recommended default for desktop AI clients:
macinput-mcp
If your MCP host requires HTTP transport:
macinput-mcp --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp
Generic stdio configuration:
{
"mcpServers": {
"macinput": {
"command": "uv",
"args": [
"--directory",
"/path/to/macinput",
"run",
"macinput-mcp"
]
}
}
}
If the package is already installed into the current environment:
{
"mcpServers": {
"macinput": {
"command": "macinput-mcp",
"args": []
}
}
}
get_server_settingsget_mouse_positionmove_mouseclick_mousescroll_mousepress_keyboard_keykeyboard_key_downkeyboard_key_uptype_text_inputpaste_text_inputcapture_screenshotcleanup_screenshot_fileResources:
macinput://overviewmacinput://best-practicesmacinput://permissionsPrompt:
ui_action_protocol(goal, current_context="")These are part of the product surface, not decoration. They let hosts ship usage guidance together with the server instead of rewriting it in every system prompt.
For users:
stdio for desktop agent integrations.For agents:
MACINPUT_DEFAULT_SCREENSHOT_TTL30MACINPUT_MAX_SCREENSHOT_TTL300MACINPUT_MAX_TYPING_LENGTH2000MACINPUT_MIN_ACTION_DELAY0.05MACINPUT_DEFAULT_TYPING_INTERVAL0.02from macinput import click, move_to, press_key, type_text, capture_screen
move_to(400, 300)
click()
type_text("hello macOS")
press_key("a", modifiers=["command"])
path = capture_screen(cleanup_after=10)
print(path)
src/macinput/
__init__.py
__main__.py
cli.py
keyboard.py
mouse.py
screenshot.py
server.py
settings.py
docs/
mcp-engineering.md
tests/
uv sync --extra dev
uv run pytest
uv run ruff check .
The CI workflow runs lint and tests on push and pull_request. The release workflow builds distributions on workflow_dispatch and on version tags such as v0.1.0, then uploads artifacts and publishes to PyPI if your repository is configured for trusted publishing.
stdio by default.paste_text_input uses the system clipboard and currently preserves/restores plain-text clipboard content onlypress_keyboard_key, keyboard_key_down, and keyboard_key_up accept either string keys like "3" or numeric digit inputs like 3LICENSE.examples/ directory for common MCP hosts.Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"macinput": {
"command": "npx",
"args": []
}
}
}Extract design specs and assets
An Open-Sourced UI to install and manage MCP servers for Windows, Linux and macOS.
Build, validate, and deploy multi-agent AI solutions on the ADAS platform. Design skills with tools, manage solution lifecycle, and connect from any AI environm
MCP Bundles: Create custom bundles of tools and connect providers with OAuth or API keys. Use one MCP server across thousands of integrations, with programmatic