Content
# openowl
An MCP server that gives any AI assistant eyes and hands on your desktop — screenshots, clicking, typing, OCR, window management, accessibility-tree queries, workflow recording.
Apache-2.0 licensed. No account, no API key, no usage limits, no telemetry. 40+ tools.
> **Prefer a hosted version?** A managed cloud build with a signed binary, one-click setup, and email support is available at [openowl.dev](https://openowl.dev/?utm_source=github&utm_medium=readme&utm_campaign=oss-repo). Same code, no setup.
## Install
### From source (recommended)
```bash
git clone https://github.com/mihir-kanzariya/openowl
cd openowl
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[macos]" # or [windows]
openowl --version
```
`pip install -e .` adds the `openowl` console script to the venv. Anywhere that venv is on `PATH`, the command is callable.
### From PyPI _(coming soon)_
```bash
pip install "openowl[macos]" # or [windows]
# or zero-install via uvx:
uvx openowl
```
PyPI publish is queued for the first tagged release. Until then, install from source above.
## Configure your MCP client
The server speaks stdio. Point any MCP client at the `openowl` command — the path it lives at depends on your install method.
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"owl": {
"command": "/absolute/path/to/openowl/.venv/bin/openowl"
}
}
}
```
Replace the path with the output of `which openowl` after activating your venv. (Once PyPI publish lands you'll be able to use `"command": "uvx", "args": ["openowl"]` instead.)
### Claude Code
```bash
claude mcp add owl --transport stdio -s user -- /absolute/path/to/openowl/.venv/bin/openowl
```
### Codex / Cline / any MCP client
Run the `openowl` binary over stdio. Same configuration shape — point your client at the absolute path.
## Permissions (macOS)
On first run, macOS will prompt to grant **Accessibility** and **Screen Recording** permissions. The server checks both at startup and prints which are missing. Open System Settings → Privacy & Security → grant access → restart your MCP client.
Permissions are remembered per-binary path. Reinstalling into the same venv keeps them; switching to `uvx` (which uses an ephemeral path) re-prompts every run, so for daily use prefer the venv install above.
## Tools (40)
| Category | Tools |
|---|---|
| **Screen capture** | `screenshot`, `screenshot_baseline`, `screenshot_diff`, `manage_screenshots`, `get_screen_size` |
| **Input** | `click`, `type_text`, `paste_text`, `send_keys`, `scroll`, `drag`, `hover`, `get_mouse_position` |
| **Click via search** | `click_text`, `click_in_region`, `click_element`, `find_text`, `find_element`, `smart_find` |
| **Windows** | `list_windows`, `focus_window`, `launch_app`, `set_target_window`, `get_target_window`, `virtual_desktop` |
| **UI Automation** | `list_elements`, `get_focused_element`, `ui_fingerprint`, `detect_framework` |
| **Watching** | `wait_for_change`, `start_watcher`, `stop_watcher`, `get_notifications` |
| **Workflow recording** | `record_workflow`, `replay_workflow_tool`, `list_workflows_tool`, `delete_workflow_tool` |
| **System** | `clipboard`, `batch_actions`, `configure_uac` |
Run `openowl --version` to print the version.
## Pre-built workflows
Looking for ready-made automation recipes? See **[mihir-kanzariya/openowl-templates](https://github.com/mihir-kanzariya/openowl-templates)** — a separate repo of pre-built workflows for openowl + Claude Code. Clone, configure, run.
## Platforms
- **macOS** — full support (Accessibility + Screen Recording + Vision OCR APIs via PyObjC).
- **Windows** — full support via pywinauto + Win32 + RapidOCR.
- **Linux** — not supported.
## Development
```bash
git clone https://github.com/mihir-kanzariya/openowl
cd openowl
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,macos]" # or [dev,windows]
pytest # 20 tests
ruff check .
```
See `CONTRIBUTING.md` for the full workflow.
## License
Apache License 2.0. See `LICENSE` and `NOTICE` for details, including attribution for inherited code.
---
Maintained by [Mihir Kanzariya](https://github.com/mihir-kanzariya). For a hosted, managed version with a signed binary and email support, see [openowl.dev](https://openowl.dev/?utm_source=github&utm_medium=readme-footer&utm_campaign=oss-repo).
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
Python tool for converting files and office documents to Markdown.
awesome-claude-skills
A curated list of awesome Claude Skills, resources, and tools for...
antigravity-awesome-skills
The Ultimate Collection of 130+ Agentic Skills for Claude...
context-mode
MCP is the protocol for tool access. We're the virtualization layer for context.
claude-context-mode
claude-context-mode plugin reduces MCP context bloat, saving up to 99% of tokens.