{"_id":"@atomicbotai/computer-use-mcp","_rev":"7-f22e449df2c283a43789694dbc4a81ef","name":"@atomicbotai/computer-use-mcp","dist-tags":{"latest":"0.1.7"},"versions":{"0.1.1":{"name":"@atomicbotai/computer-use-mcp","version":"0.1.1","license":"MIT","_id":"@atomicbotai/computer-use-mcp@0.1.1","maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"bin":{"computer-use-mcp":"dist/bin.js"},"dist":{"shasum":"08d86177cea5f3c51c0cdaedc43da155c54e1b55","tarball":"https://registry.npmjs.org/@atomicbotai/computer-use-mcp/-/computer-use-mcp-0.1.1.tgz","fileCount":8,"integrity":"sha512-Yvi/42G6Q/r80bdfd91/TdHl8TWH/SyAvhXWZawhL2x1uu0O6e1F/ifteOLVX7FBuPz75EiOpvrn0uTnc0FyRA==","signatures":[{"sig":"MEUCIQCZf7SHZI8iYMp/CCvF4e6k6F0x/9y2gOAstDnM6OEG5gIgOB2qJTYOODNRSSiUaiY5rn3Elr4kW/ziinmqjyDagAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12527},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"8e9df2e6e9b27682c235096ad75aa50a2795a7e1","scripts":{"build":"tsc","start":"node dist/bin.js","release":"./release.sh","publish:dry":"./publish.sh --dry-run","publish:npm":"./publish.sh"},"_npmUser":{"name":"alexkalina","email":"kalina@atomicbot.ai"},"_npmVersion":"10.9.4","description":"MCP server exposing desktop computer-use as an MCP tool","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@atomicbotai/computer-use":"^0.1.5","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/computer-use-mcp_0.1.1_1775823516748_0.42722555895287573","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@atomicbotai/computer-use-mcp","version":"0.1.2","license":"MIT","_id":"@atomicbotai/computer-use-mcp@0.1.2","maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"bin":{"computer-use-mcp":"dist/bin.js"},"dist":{"shasum":"07c701c5fa3818705185412bc69b8e5b35ba2b0e","tarball":"https://registry.npmjs.org/@atomicbotai/computer-use-mcp/-/computer-use-mcp-0.1.2.tgz","fileCount":8,"integrity":"sha512-R8I1k5XGvENlo0h+WYUPxgb2fFGZMzdv5PZkx6tK7MGVbKpBxBJcAymSugI68KDRvCaZxNi4ogo/jfHwD7rd/A==","signatures":[{"sig":"MEUCIQCqEZgDEUR/VpNC4lDsLuUO2DItR2CxbdVXCFMhZ0A6PQIgOt73CTzDgcH08rFVFo2e82noDzhWf2ssFxcF6F60krk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13500},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"6cef93d7df1be63e6eebd774bc0f71baf320e52d","scripts":{"build":"tsc","start":"node dist/bin.js","release":"./release.sh","publish:dry":"./publish.sh --dry-run","publish:npm":"./publish.sh"},"_npmUser":{"name":"alexkalina","email":"kalina@atomicbot.ai"},"_npmVersion":"10.9.4","description":"MCP server exposing desktop computer-use as an MCP tool","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@atomicbotai/computer-use":"^0.1.5","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/computer-use-mcp_0.1.2_1775823763110_0.08066351533618676","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@atomicbotai/computer-use-mcp","version":"0.1.3","license":"MIT","_id":"@atomicbotai/computer-use-mcp@0.1.3","maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"bin":{"computer-use-mcp":"dist/bin.js"},"dist":{"shasum":"0f67b7b68a01dc3060cde2f922a97d10619f05b7","tarball":"https://registry.npmjs.org/@atomicbotai/computer-use-mcp/-/computer-use-mcp-0.1.3.tgz","fileCount":8,"integrity":"sha512-mVEYl2MhAgOn1V4FpZe9RbmE7Xlcea1/8HvtR84ZzWk/e5gaWYL4bprNyD9heuQ9FvmryOQ1Dn+EH4wi3dhfTQ==","signatures":[{"sig":"MEYCIQCS5X14pIUpzkW+Sp7bcF4hmMTUVk6jHh4JTmo6nl65qwIhAL8XtwEaL6Ugo3OXWxlhq+fwNeI7f6+L06aMkmZvtqHO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13500},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"c1b327e5b192b51645f01357f0f14b03c31076cf","scripts":{"build":"tsc","start":"node dist/bin.js","release":"./release.sh","publish:dry":"./publish.sh --dry-run","publish:npm":"./publish.sh"},"_npmUser":{"name":"alexkalina","email":"kalina@atomicbot.ai"},"_npmVersion":"10.9.4","description":"MCP server exposing desktop computer-use as an MCP tool","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@atomicbotai/computer-use":"^0.1.6","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/computer-use-mcp_0.1.3_1775824079713_0.5488853821538424","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@atomicbotai/computer-use-mcp","version":"0.1.4","license":"MIT","_id":"@atomicbotai/computer-use-mcp@0.1.4","maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"bin":{"computer-use-mcp":"dist/bin.js"},"dist":{"shasum":"e539b343490f0e773a77565d12aa34aa3d4c034b","tarball":"https://registry.npmjs.org/@atomicbotai/computer-use-mcp/-/computer-use-mcp-0.1.4.tgz","fileCount":8,"integrity":"sha512-rQC1UiseT5AsVxA+Mlj7nmn8FdZt4tQ9zin8IG+1MTT4E02UX4K0+vcnIbG99ANlNdsIi5VRwm8p0PwwTb7CdA==","signatures":[{"sig":"MEUCIC8V3xtsXs6Ob0bQZ8fSvJiIDhcAcOSIO3zPjOKIKYeHAiEAgcrHG3cKzarCiAMJEQlid3SiiyGxO21CEg42kwWtywY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"ad317dca06818824cf9c189aa39199789293ee5b","scripts":{"build":"tsc","start":"node dist/bin.js","release":"./release.sh","publish:dry":"./publish.sh --dry-run","publish:npm":"./publish.sh"},"_npmUser":{"name":"alexkalina","email":"kalina@atomicbot.ai"},"_npmVersion":"10.9.4","description":"MCP server exposing desktop computer-use as an MCP tool","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@atomicbotai/computer-use":"^0.1.9","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/computer-use-mcp_0.1.4_1776436210389_0.40078754301696473","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@atomicbotai/computer-use-mcp","version":"0.1.5","license":"MIT","_id":"@atomicbotai/computer-use-mcp@0.1.5","maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"bin":{"computer-use-mcp":"dist/bin.js"},"dist":{"shasum":"5bfe3edcf87c9c4eb04150bf734081f513a0c55b","tarball":"https://registry.npmjs.org/@atomicbotai/computer-use-mcp/-/computer-use-mcp-0.1.5.tgz","fileCount":8,"integrity":"sha512-gC2589PCcnWmdU52QuVrDiqtSrafcJEnmwIPcxqosNWaQ+/iqn3TNXYcWrgJpCxjLB5g/iK/qJc31W68UIPBCg==","signatures":[{"sig":"MEYCIQCEA9uMRXIYVaa3cdu7RnVbTslhKlk9/vNja1A/BOu+5gIhAKT2Qf381ixOJYIsrwEf1DC947ArsIrBO/2KoLFiFNLZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"4e4ac40e9efd510dc442fd9a134715cfd9faa41a","scripts":{"build":"tsc","start":"node dist/bin.js","release":"./release.sh","publish:dry":"./publish.sh --dry-run","publish:npm":"./publish.sh"},"_npmUser":{"name":"alexkalina","email":"kalina@atomicbot.ai"},"_npmVersion":"10.9.4","description":"MCP server exposing desktop computer-use as an MCP tool","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@atomicbotai/computer-use":"0.1.10","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/computer-use-mcp_0.1.5_1776448482540_0.8756360020069442","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@atomicbotai/computer-use-mcp","version":"0.1.6","license":"MIT","_id":"@atomicbotai/computer-use-mcp@0.1.6","maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"bin":{"computer-use-mcp":"dist/bin.js"},"dist":{"shasum":"17d8bf58bce51f92dba2660c7935251303c3136a","tarball":"https://registry.npmjs.org/@atomicbotai/computer-use-mcp/-/computer-use-mcp-0.1.6.tgz","fileCount":8,"integrity":"sha512-vYFiWzsSzuCsrxaHrLLti8kS88JBvQtprAf+BFlFp3wjv1WlKC9TlHMFQDPqNYv8mpUb1Mus3A9i4QWGx3x/tA==","signatures":[{"sig":"MEQCIEGX+Df8xSP7bk/8eJsmO1M1xodJGnmHShT2JiOkbAjFAiBfBTuPR/jgR1gqeFBuuH/KNwK2k0HvQ5yMPaaLVlyTGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13213},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=22"},"gitHead":"fd90023fb200167ed172d52bbc37c67351bac1ec","scripts":{"build":"tsc","start":"node dist/bin.js","release":"./release.sh","publish:dry":"./publish.sh --dry-run","publish:npm":"./publish.sh"},"_npmUser":{"name":"alexkalina","email":"kalina@atomicbot.ai"},"_npmVersion":"10.9.4","description":"MCP server exposing desktop computer-use as an MCP tool","directories":{},"_nodeVersion":"22.22.0","dependencies":{"@atomicbotai/computer-use":"0.1.11","@modelcontextprotocol/sdk":"^1.12.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.0","@types/node":"^25.6.0"},"_npmOperationalInternal":{"tmp":"tmp/computer-use-mcp_0.1.6_1776449918828_0.8548494709801249","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@atomicbotai/computer-use-mcp","version":"0.1.7","description":"MCP server exposing desktop computer-use as an MCP tool","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"computer-use-mcp":"dist/bin.js"},"scripts":{"build":"tsc","start":"node dist/bin.js","release":"./release.sh","publish:npm":"./publish.sh","publish:dry":"./publish.sh --dry-run"},"dependencies":{"@atomicbotai/computer-use":"0.1.12","@modelcontextprotocol/sdk":"^1.12.1"},"devDependencies":{"@types/node":"^25.6.0","typescript":"^5.7.0"},"engines":{"node":">=22"},"license":"MIT","_id":"@atomicbotai/computer-use-mcp@0.1.7","gitHead":"ddede7ce2d945e17bc772ccf429af442ad9230fd","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-p2uCkE9quj/6zIjFJXerT8ITqMfKod0o+VLl0RfmxzqnMXrPauc2VjhaGuA4OL41QHdFYxOXepJxriMNZWQmWw==","shasum":"99291a28fb957d49b19845b218bf983dd089ffc2","tarball":"https://registry.npmjs.org/@atomicbotai/computer-use-mcp/-/computer-use-mcp-0.1.7.tgz","fileCount":8,"unpackedSize":13213,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIERNIlu+HO/4EwHwZMVW5KJtMrOb1rEtMdRzvlUWkeuSAiA4sJnBxWgKqB4366jAoD3qiNPPZhSvMJwgQbaXiHAnhA=="}]},"_npmUser":{"name":"alexkalina","email":"kalina@atomicbot.ai"},"directories":{},"maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/computer-use-mcp_0.1.7_1776450690023_0.20040489867708322"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-10T12:18:36.635Z","modified":"2026-04-17T18:31:30.276Z","0.1.1":"2026-04-10T12:18:36.901Z","0.1.2":"2026-04-10T12:22:43.237Z","0.1.3":"2026-04-10T12:27:59.845Z","0.1.4":"2026-04-17T14:30:10.544Z","0.1.5":"2026-04-17T17:54:42.745Z","0.1.6":"2026-04-17T18:18:39.038Z","0.1.7":"2026-04-17T18:31:30.163Z"},"license":"MIT","description":"MCP server exposing desktop computer-use as an MCP tool","maintainers":[{"name":"dtorey","email":"dtorey@atomicbot.ai"},{"name":"alexkalina","email":"kalina@atomicbot.ai"}],"readme":"# @atomicbotai/computer-use-mcp\n\n**Give your AI agent real eyes — not just blurry screenshots.**\n\nAn MCP server that turns any MCP-compatible client into a desktop operator — with native OCR that actually reads what's on screen.\n\n[![npm](https://img.shields.io/npm/v/@atomicbotai/computer-use-mcp)](https://www.npmjs.com/package/@atomicbotai/computer-use-mcp)\n[![license](https://img.shields.io/npm/l/@atomicbotai/computer-use-mcp)](./LICENSE)\n![node](https://img.shields.io/badge/node-%3E%3D22-brightgreen)\n\n---\n\n## Why not just screenshots?\n\nMost computer-use tools send a downscaled screenshot to the model and hope it figures out where to click. That works for large buttons. It fails everywhere else.\n\n**The problem:** when a 2560×1600 screen is downscaled to fit a model's context window, small text becomes unreadable. Button labels, menu items, form placeholders, status bar text — all of it blurs into noise. The agent guesses coordinates and misses. It clicks the wrong button, types in the wrong field, or loops retrying the same failed action.\n\n**The solution:** this server pairs every screenshot with **native OCR** that extracts text with pixel-precise coordinates. Instead of guessing, the agent gets a structured map of the UI:\n\n```\nFull-resolution screenshot captured (2560×1600) with grid overlay.\nOCR anchors: \"Send\" at (1450, 890); \"Cancel\" at (1300, 890); \"Subject\" at (200, 145)\nOCR layout: [e1 \"Send\" center=(1450, 890) box=(1400, 875, 100x30)] ...\n```\n\nThe agent knows exactly where \"Send\" is. No guessing. No retries. No wasted tokens on failed clicks.\n\n### Screenshot-only vs Screenshot + OCR\n\n| | Screenshot only | Screenshot + OCR |\n|---|---|---|\n| Small text (12px labels) | Unreadable after downscale | Extracted with exact coordinates |\n| Click accuracy | ~60-70% on complex UIs | ~95%+ with anchor-guided clicks |\n| Retry loops | Common (3-5 attempts per action) | Rare |\n| Token cost | High (retries burn tokens) | Low (first-attempt success) |\n| Complex forms | Struggles with similar-looking fields | Identifies each field by label text |\n| Status/error text | Misses or hallucinates content | Reads actual text with confidence scores |\n\n## How OCR works under the hood\n\nThe `screenshot_full` action:\n\n1. Takes a **full-resolution** screenshot (no downscaling)\n2. Runs OCR via **native platform engine** — zero dependencies, no API keys, fully offline\n3. Deduplicates and sorts text elements by reading order (top→bottom, left→right)\n4. Returns anchor points with coordinates in screenshot-image space\n5. Generates a structured prompt the model can act on immediately\n\n| Platform | OCR Engine | Setup required |\n|----------|-----------|----------------|\n| **macOS** | Apple Vision framework | None — uses `xcrun swift` |\n| **Windows** | Windows.Media.Ocr | None — built-in UWP API |\n| **Linux** | — | Not available yet (graceful no-op) |\n\nAll processing is **local and offline**. No data leaves the machine.\n\n---\n\n## Quick start\n\n### Run with npx (zero install)\n\n```bash\nnpx @atomicbotai/computer-use-mcp\n```\n\n### Or install globally\n\n```bash\nnpm install -g @atomicbotai/computer-use-mcp\ncomputer-use-mcp\n```\n\n## Connect to your MCP client\n\nAdd the following to your MCP client's config file (Claude Desktop, Cursor, Windsurf, Cline, or any other MCP-compatible client):\n\n```json\n{\n  \"mcpServers\": {\n    \"computer-use\": {\n      \"command\": \"npx\",\n      \"args\": [\"@atomicbotai/computer-use-mcp\"],\n      \"env\": {\n        \"COMPUTER_USE_OVERLAY_ENABLED\": \"1\",\n        \"COMPUTER_USE_OVERLAY_LABEL\": \"AI Agent\"\n      }\n    }\n  }\n}\n```\n\n\n## All 19 actions\n\nThe server exposes a single MCP tool called **`computer`**:\n\n| Action | What it does |\n|--------|-------------|\n| `screenshot` | Capture screen (auto-downscaled with grid overlay) |\n| `screenshot_full` | Full-resolution capture + OCR text anchors |\n| `click` / `double_click` / `triple_click` | Click at coordinates |\n| `type` | Insert literal text |\n| `press` | Keyboard shortcuts (`cmd+s`, `enter`, etc.) |\n| `submit_input` | Press Enter to submit |\n| `scroll` | Scroll in any direction |\n| `cursor_position` | Get cursor location |\n| `mouse_move` | Move cursor |\n| `drag` | Drag and drop |\n| `wait` | Pause (max 30s) |\n| `hold_key` | Hold key combo (max 10s) |\n| `display_list` | List connected displays |\n| `read_clipboard` / `write_clipboard` | Clipboard access |\n| `open_app` / `switch_app` | Launch or focus apps by name |\n\nCoordinates are automatically mapped from screenshot image space to real screen points — the agent works in screenshot coordinates, the library handles the translation.\n\n## Configuration\n\nAll configuration via environment variables:\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `COMPUTER_USE_OVERLAY_ENABLED` | `1` | Set to `0` to disable the \"agent active\" overlay |\n| `COMPUTER_USE_OVERLAY_COLOR` | `00BFFF` | Overlay color (hex without `#`) |\n| `COMPUTER_USE_OVERLAY_LABEL` | `Atomic bot` | Text shown on the overlay |\n| `COMPUTER_USE_DEBUG_ARTIFACTS` | `0` | Set to `1` to save screenshots, OCR, and results per action |\n| `COMPUTER_USE_DEBUG_DIR` | `./computer-use-debug` | Directory for debug output |\n| `COMPUTER_USE_LOCK_DIR` | `~/.atomic-computeruse` | Directory for session lock file |\n\n## Safety features\n\n- **Session lock** — prevents two agents from controlling the desktop simultaneously\n- **Visual overlay** — native \"agent active\" indicator so you always know when automation is running\n- **Guardrails** — blocks misclicks in system dock/launcher and dangerous submit zones\n- **Debug artifacts** — save every screenshot, OCR result, and action output for post-mortem analysis\n\n## Programmatic usage\n\n```typescript\nimport { createServer } from \"@atomicbotai/computer-use-mcp\";\n\nconst server = createServer();\n// Connect your own MCP transport\n```\n\n## Platform support\n\n| Feature | macOS | Windows | Linux |\n|---------|:-----:|:-------:|:-----:|\n| Screenshot + actions | ✅ | ✅ | ✅ |\n| OCR | ✅ Vision | ✅ Media OCR | — |\n| Overlay | ✅ Swift | ✅ PowerShell | — |\n| Drag (native) | ✅ | ✅ | ✅ fallback |\n\n## Built on\n\n- [`@atomicbotai/computer-use`](https://www.npmjs.com/package/@atomicbotai/computer-use) — the core desktop automation library with standalone OCR, actions, overlay, and more\n- [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) — official MCP SDK\n\n## License\n\nMIT\n","readmeFilename":"README.md"}