PluginBench
MCP Server
Active
MIT

io.github.AmrDab/clawdcursor MCP Server

io.github.AmrDab/clawdcursor

Safe, local desktop control for AI agents—accessibility-first UI mapping with action verification and a single safety gate.

What is the io.github.AmrDab/clawdcursor MCP server?

Clawd Cursor is a local MCP server that gives any tool-calling AI agent safe control of the real desktop. It compiles the screen into a UI map with stable element IDs, acts on elements by name rather than pixels, verifies its own actions, and gates everything through one safety checkpoint—no vision model required for perception.

Clawd Cursor lets AI agents control any desktop application the way a human would: clicking, typing, reading screens, and opening apps. Unlike vision-centric approaches, it fuses the accessibility tree and OCR into a confidence-scored UI map, climbing to expensive screenshot/vision only as a last resort. Every action is verified against the live screen, and all desktop control routes through a single safety gate. It runs locally on Windows, macOS, and Linux, works with any AI agent (Claude, Cursor, Windsurf, etc.), and includes an on-screen kill switch.

How to install io.github.AmrDab/clawdcursor

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "clawdcursor": {
      "command": "npx",
      "args": [
        "-y",
        "clawdcursor",
        "mcp",
        "--compact"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • compile_ui — Fuses accessibility tree and OCR into a confidence-scored UI map with stable element IDs (el_NN), enabling element-based rather than pixel-based actions.
  • find_button — Locates a button by name or meaning and returns its stable element ID.
  • find_field — Locates a form field by name or meaning and returns its stable element ID.
  • expect — Verifies that an action produced the expected outcome on the live screen; returns DEVIATION if the UI didn't obey.
  • click — Clicks an element by stable ID.
  • type — Types text into a field.
  • key — Sends keyboard input (keys, shortcuts).
  • drag — Drags an element to a new position.
  • invoke — Invokes an action on an element.
  • set_value — Sets the value of a field.
  • open_app — Opens a desktop application.
  • batch — Collapses multiple known steps into one deterministic call; each step routes through the safety gate.
  • task — Delegates a task to the built-in agent loop (when LLM is configured on the daemon).
  • detect_webview — Detects and switches Electron/WebView2 apps to browser control via CDP.
  • safety.evaluate — Single safety chokepoint that gates all desktop actions: allow, confirm, or block.

Use cases

  • Open a desktop app (Outlook, Slack, etc.) and perform GUI-driven tasks like replying to emails or sending messages without API integration.
  • Automate legacy or proprietary applications that have no CLI or public API by driving their GUI.
  • Fill out complex forms across web and native apps by locating fields by name and typing values.
  • Verify that each action succeeded before proceeding, catching UI deviations and preventing cascading errors.
  • Use as a fallback execution layer when native APIs or CLIs aren't available, with full desktop control gated through a safety checkpoint.

io.github.AmrDab/clawdcursor MCP server FAQ

What is Clawd Cursor?

Clawd Cursor is a local MCP server that gives AI agents safe control of the desktop. It reads the screen via accessibility tree and OCR (not vision), acts on elements by stable ID, verifies each action, and gates everything through one safety checkpoint. It works with any AI agent (Claude, Cursor, Windsurf, etc.) on Windows, macOS, and Linux.

Is it free?

Yes. Clawd Cursor is open-source (MIT license) and published to npm. Installation is free; it runs entirely locally with no cloud service or subscription required.

How do I install it in Cursor or Claude Desktop?

Install globally with `npm i -g clawdcursor`, then add it to your editor's MCP config: `{"mcpServers": {"clawdcursor": {"command": "clawdcursor", "args": ["mcp", "--compact"]}}}`. Cursor and VS Code also support one-click install buttons in the README.

Does it require authentication or API keys?

No. Clawd Cursor runs entirely locally and requires no external authentication, API keys, or cloud services. On macOS, you must grant Accessibility and (optionally) Screen Recording permissions once.

What are the system requirements?

Node.js 20+. Windows installs cleanly. macOS needs Xcode Command Line Tools for screenshots/vision. Linux needs tesseract-ocr, python3-gi, gir1.2-atspi-2.0, and (on Wayland) ydotool.

How is it safer than vision-based desktop agents?

It uses the accessibility tree first (free, no vision model), then OCR (cheap, local), and only sends screenshots to the model as a last resort. Every action is verified against the live screen, and all desktop control routes through a single safety gate with allow/confirm/block options. An on-screen banner with a kill switch lets you stop the agent at any time.

README (reference)

Source of truth, from the repository.

<h1 align="center">Clawd Cursor</h1> <p align="center"> <strong>Safe desktop control for any AI agent.</strong> Compiles the screen into a UI map and acts on elements by stable id (screenshot/vision only as a last resort),<br> <strong>verifies its own actions</strong>, and gates everything through one safety checkpoint. Local &middot; cross-OS &middot; any model. </p> <p align="center"> <a href="LICENSE"><img src="https://img.shields.io/github/license/AmrDab/clawdcursor?color=a855f7" alt="MIT license"></a> <a href="https://github.com/AmrDab/clawdcursor/releases/latest"><img src="https://img.shields.io/github/v/release/AmrDab/clawdcursor?color=22c55e&label=release" alt="Latest release"></a> <a href="https://www.npmjs.com/package/clawdcursor"><img src="https://img.shields.io/npm/v/clawdcursor?color=cb3837&logo=npm" alt="npm"></a> <img src="https://img.shields.io/badge/node-%E2%89%A520-339933?logo=nodedotjs&logoColor=white" alt="Node 20+"> <img src="https://img.shields.io/badge/platform-win%20%7C%20mac%20%7C%20linux-0ea5e9" alt="Cross-platform"> <a href="https://github.com/AmrDab/clawdcursor/actions/workflows/cross-platform.yml"><img src="https://img.shields.io/github/actions/workflow/status/AmrDab/clawdcursor/cross-platform.yml?branch=main&label=tests" alt="Tests"></a> <a href="https://discord.gg/hW29nrEZ8G"><img src="https://img.shields.io/badge/Discord-join-5865F2?logo=discord&logoColor=white" alt="Discord"></a> </p> <p align="center"> <a href="#install">Quickstart</a> &middot; <a href="#why-its-different">Why it's different</a> &middot; <a href="#the-engine">The engine</a> &middot; <a href="#how-it-works">How it works</a> &middot; <a href="#the-toolbox">Tools</a> &middot; <a href="#platform-support">Platforms</a> &middot; <a href="CHANGELOG.md">Changelog</a> </p> <!-- ─────────────────────────────────────────────────────────────────────────── DEMO: the single highest-leverage thing on this page for a *visual* tool. Record a 15–25s screen capture of clawdcursor driving a real app end-to-end (open app → find a field by name → type → verify), export to docs/demo.gif, and uncomment the block below (it will sit right under the hero). <p align="center"> <img src="docs/demo.gif" width="760" alt="clawdcursor driving a desktop app"> <br><em>Opening an app, finding a field by name, typing, and verifying the result — accessibility-first, locally.</em> </p> ─────────────────────────────────────────────────────────────────────────── -->

What it is

Clawd Cursor is a local MCP server that gives any tool-calling agent — Claude Code, Cursor, Windsurf, OpenClaw, the Claude Agent SDK, or your own loop — safe control of the real desktop. It clicks, types, reads the screen, opens apps, and drives any GUI the way a human would: native apps, the browser, even a canvas.

Most "let an agent use the computer" tools take a screenshot and feed it to a vision model — slow, expensive, and brittle. Clawd Cursor compiles the screen into one UI map: it fuses the accessibility tree and OCR into a confidence-scored set of elements, each tagged with a stable el_NN id, and acts on elements by id — not pixel coordinates. Coordinates appear only in the last-resort screenshot/vision tier (live pixels off the current frame), for canvas-only apps or tasks that genuinely need spatial reasoning. The result is cheaper, faster, private, and — uniquely — it checks that each action actually did what it claimed.

If a human can do it on a screen, your agent can too. No API, no integration, no problem — only the right sequence of reads, clicks, keys, and waits. Use it as the last-mile fallback: native API exists? Use it. CLI? Use it. Clawd Cursor is for the click, the legacy app, the GUI with no public surface.


Why it's different

The desktop-agent space is crowded. The closest install-and-go peers are Windows-MCP and Terminator (desktop MCP servers); browser-only tools (browser-use, Playwright MCP) are adjacent; and OmniParser / UI-TARS are vision-centric parsing approaches you'd build an agent around, not products you install. Here's the honest comparison across those approaches — what Clawd Cursor does that the popular options don't:

Clawd Cursorbrowser-usePlaywright MCPOmniParser / UI-TARScomputer-use
Any desktop app, not just the web✅web onlyweb only✅✅
Cross-OS (Windows + macOS + Linux)✅——variessandbox
Perception without a vision model✅ compiled a11y + OCR mapDOMa11y tree❌ vision-centric❌ vision
Verifies its own actions (deviation)✅————
Single safety chokepoint (allow/confirm/block)✅————
Any model / vendor✅✅not an agentmodel-specificClaude only
MCP-native (one config, any host)✅librarytest framework—tool-use API
Local-only, no cloud required✅✅✅needs a modelscreens → cloud

Three things here are genuinely rare:

  1. Cheapest-tier-first perception, fully local. Accessibility tree (free) → OCR (cheap) → screenshot (expensive — the only tier that puts pixels in the model's context; "screenshot" and "vision" are the same step). The agent climbs only when it must, so token cost tracks task difficulty — and with a local model, nothing leaves the machine. Vision-centric agents (OmniParser, UI-TARS) need a screenshot in the model for every observation.
  2. It verifies. Pass expect on a consequential action and Clawd Cursor re-checks the live screen (with a short settle window for async UIs) and reports a DEVIATION instead of a hollow "success." A completed task can't be marked done on evidence that was already true before it acted.
  3. One safety gate. Every call — from an editor over stdio, an external agent over HTTP, or the built-in loop — routes through a single safety.evaluate() chokepoint (allow / confirm / block) before it touches the desktop. The agent cannot bypass it.

Plus: an on-screen "desktop control in progress" banner with a blinking red dot whenever an agent is driving — double-click it to stop. A human at the machine always knows, and always has a kill switch.


Install

clawdcursor is an MCP server published to npm — install it into any MCP-capable agent (Claude Code, Claude Desktop, Cursor, Windsurf, Zed, OpenAI Codex, or your own loop) the same way you install any other MCP server.

1 — Install the engine + grant consent (once)

npm i -g clawdcursor
clawdcursor consent --accept    # one-time desktop-control consent (required)
clawdcursor grant               # macOS only — approve Accessibility + Screen Recording

Zero-install also works — swap clawdcursor for npx -y clawdcursor in any snippet below and npx fetches it on demand. A global install is recommended anyway: it's pinnable and inspectable on disk (safer for a tool with full desktop control than auto-fetching latest every run), and it's the path on which the macOS native helper builds at install time. Requires Node.js 20+.

Per-OS prerequisites. Windows installs clean — sharp and @nut-tree-fork/nut-js ship prebuilt binaries, so no C++/Python build tools are needed. macOS needs Xcode Command Line Tools (xcode-select --install) for screenshots / vision; core accessibility-driven control still works without them. Linux needs a few system packages npm can't install: tesseract-ocr (OCR), python3-gi + gir1.2-atspi-2.0 (accessibility tree), and — on Wayland — ydotool (synthetic input).

2 — Add it to your agent (pick your host)

One click, if your host supports it:

Add to Cursor Add to VS Code

These hand the host the npx config below, so they work with or without a global install. Everything that follows is the same thing done by hand, per host.

Claude Code

claude mcp add clawdcursor -s user -- clawdcursor mcp --compact

OpenAI Codex — add to ~/.codex/config.toml:

[mcp_servers.clawdcursor]
command = "clawdcursor"
args = ["mcp", "--compact"]

Cursor / Windsurf / Claude Desktop — add to the host's MCP config:

{
  "mcpServers": {
    "clawdcursor": { "command": "clawdcursor", "args": ["mcp", "--compact"] }
  }
}

Zed — Zed uses context_servers (not mcpServers) in settings.json:

{
  "context_servers": {
    "clawdcursor": { "command": { "path": "clawdcursor", "args": ["mcp", "--compact"] } }
  }
}

That's the whole setup. Ask your agent: "open Outlook and reply to the latest email from Sarah."

Or: one-command plugin (Claude Code)

Skip the manual config — this repo ships a plugin that registers the tools and bundles the usage skill in one step. It resolves the package's bin (never a hard-coded dist/ path), so an upgrade can't break it:

claude plugin marketplace add AmrDab/clawdcursor
claude plugin install clawdcursor@clawdcursor
<details> <summary>One-line installers (npm i -g, plus Node-version, PATH, and consent checks)</summary>
# Windows (PowerShell)
powershell -c "irm https://clawdcursor.com/install.ps1 | iex"
# macOS / Linux
curl -fsSL https://clawdcursor.com/install.sh | bash
</details>

Notes. You never run clawdcursor mcp yourself — the host spawns it over stdio on demand. clawdcursor doctor is not part of MCP setup; it only configures the built-in LLM for the autonomous agent daemon. On macOS, Accessibility is required (primary control path); Screen Recording is optional (vision fallback only). For editor permission allowlists, use the server-level wildcard mcp__clawdcursor rather than per-tool entries — it survives tool renames.


The engine

The perception + verification core (the UI State Compiler, since v1.5.0):

  • compile_ui fuses the accessibility tree and OCR into one confidence-scored map of the screen, every element tagged with a stable el_NN id. Act on an element by {element_id, snapshot_id} instead of pixels — near-free in tokens, and it survives DPI, resize, and layout shifts. find_button / find_field locate a target by meaning and hand you the id.
  • Reactive verification. expect on an action → Clawd Cursor confirms the outcome on the live screen and returns a DEVIATION when the UI didn't obey.
  • Cross-platform parity. The compiler, secure-field redaction, and coordinate handling run on Windows, macOS, and Linux; the external-agent (MCP) surface resolves el_NN refs through the safety gate and discloses when it attached to your existing browser.

Set-of-Mark-style element IDs and a11y/OCR fusion aren't new ideas on their own — what's rare is doing them locally, a11y-first (no vision model required), with a built-in verification gate and one safety chokepoint, across three operating systems, behind a single MCP config.

See the changelog for the full release history, or the latest release.


How it works

Where the brain lives decides how you run it. Both modes can run side-by-side.

Brain lives…ModeCommandWhat you call
In your editor (Claude Code, Cursor, Windsurf, Zed)Direct toolsclawdcursor mcpEach tool, via stdio MCP
In a headless agent with its own LLM (OpenClaw, Agent SDK, your loop)Direct toolsclawdcursor agent --no-llmSame, over HTTP MCP
Inside Clawd Cursor itself (scheduled / "submit and walk away")Thin agent loopclawdcursor agent + doctor-configured LLMtask / submit_task
External brain that delegates sub-tasks to the built-in loopDirect + delegationclawdcursor agent + your clienttask({instruction:…}) to hand off

The loop

Read the a11y tree (cheap) → act on named targets → verify from fresh observations → escalate perception only when needed (OCR → screenshot, the one tier that sends pixels to the model). Sparse a11y tree? system.detect_webview switches Electron/WebView2 apps to browser.* over CDP. Canvas-only (Paint, Figma, games)? Screenshot + coordinate click.

flowchart TB
    task["User task"] --> loop["Agent LLM loop<br/>plans · chooses tools · verifies"]
    loop --> observe{"Cheapest observation<br/>that answers the question"}

    observe -- "obs·a11y — free" --> a11y["A11y tree<br/>(structured text + el_NN handles)"]
    observe -- "obs·ocr — cheap" --> ocr["OCR (OS-level, no vision LLM)"]
    observe -- "obs·dom — medium" --> dom["Browser DOM (CDP)"]
    observe -- "obs·vision — expensive" --> vision["Screenshot (image into context)"]

    a11y --> act
    ocr --> act
    dom --> act
    vision --> act

    act["Act<br/>click/type/key/drag · invoke/set_value · open_app · batch"] --> safety
    safety["Single safety gate<br/>safety.evaluate() → allow / confirm / block"] -- allowed --> tools["Tool registry<br/>98 granular + 7 compound"]
    safety -- needs user --> confirm["Human confirmation"] --> tools
    safety -- denied --> blocked["blocked"]

    tools --> desktop["Real desktop"]
    desktop --> verify{"expect → does state match?"}
    verify -- pass --> done["done"]
    verify -- "DEVIATION" --> loop

    classDef agentNode fill:#dbeafe,stroke:#2563eb,color:#0f172a;
    classDef gate fill:#ede9fe,stroke:#7c3aed,color:#0f172a;
    classDef obsNode fill:#fef9c3,stroke:#ca8a04,color:#0f172a;
    classDef actNode fill:#ffedd5,stroke:#ea580c,color:#0f172a;
    classDef stop fill:#fee2e2,stroke:#dc2626,color:#0f172a;
    class loop,verify agentNode;
    class safety,confirm,tools gate;
    class observe,a11y,ocr,dom,vision obsNode;
    class act actNode;
    class blocked stop;

batch for deterministic stretches. When the next N steps are known, collapse them into one call — each step still routes through the safety gate; on any guard miss or error the batch halts with a per-step trace.

Task delegation. With an LLM configured on the daemon, an external agent can hand off at any point: task({"instruction":"…"}). The built-in loop takes the wheel and reports back — offload grunt work to a cheaper model without burning your own context.


The toolbox

Two catalogs ship side-by-side. The toolbox is 7 compound tools, each with an action enum covering ~10–20 verbs (~1,500 tokens total — about 12× smaller than granular, the computer_20250124 shape editor hosts already know). The granular surface is the 98 underlying primitives, one schema per verb (for runtimes that need top-level tools, or for debugging). Both run through the same safety.evaluate() chokepoint; the full catalog is always visible via MCP tools/list.

ToolboxActions
computerscreenshot, click, double_click, right_click, triple_click, hover, move, scroll, scroll_horizontal, drag, drag_path, type, key, wait
accessibilityread_tree, find, get_element, focused, invoke, focus, set_value, get_value, expand, collapse, toggle, select, state, list_children, wait_for, compile_ui, find_button, find_field, smart_click, smart_type, smart_read
windowlist, active, focus, maximize, minimize, restore, close, resize, list_displays, screen_size, open_app, open_file, open_url, switch_tab, navigate
systemclipboard_read, clipboard_write, system_time, ocr, undo, shortcuts_list, shortcuts_run, delegate, detect_webview, relaunch_with_cdp, system_prompt, build_uri, open_uri, open_app, open_file, open_url, detect_app, app_guide, learn_app
browserconnect, page_context, read_text, click, type, select_option, evaluate, wait_for, list_tabs, switch_tab, scroll
taskrun (default; bounded-sync — waits up to timeouts, returns {status:"running"} + progress if longer, re-call to keep waiting), status, abort. Delegates to the built-in loop. Requires clawdcursor agent with an LLM.
batch{steps:[…]} — collapse N calls into one round-trip; each step {name, arguments, expect?}, re-perceived and safety-gated, halts with a trace on any miss.
computer({ action: "key", combo: "mod+s" })          // Cmd+S / Ctrl+S, resolved per-OS
accessibility({ action: "invoke", name: "Send" })    // click by name, not pixels
window({ action: "open_app", name: "Outlook" })
task({ instruction: "open Notepad and type hello" }) // hand off to the thin loop

Cheapest-tier-first perception

Every observation has a cost. Start at the cheapest rung that works; climb only when it fails. The live log (CLAWD_LOG=pretty, default on a TTY) shows the ladder in real time via per-call badges.

TierBadgeCostSourceWhen
T1 structuredobs·a11y~freeaccessibility.*, window.*, browser.read_text, clipboardDefault. Text + bounds, no image, no vision LLM.
T2 OCRobs·ocrcheapsystem.ocr, smart_read / smart_click / smart_typeA11y tree empty/sparse. OS-level text out, no image bytes.
T3 DOMobs·dommediumbrowser.read_text / page_context (CDP)WebView / Electron / Chrome content.
T4 screenshot (vision)obs·visionexpensivecomputer.screenshotThe only tier that puts pixels in the model's context. Canvas-only apps or spatial reasoning. Last resort.

Acting tools log act. Watching obs·a11y → act → obs·a11y on a normal turn — and the rare climb to obs·vision — is the whole efficiency model, visible.


Transports

One protocol — MCP — two transports, same catalog and JSON-RPC envelope. Both stateless; no session handshake.

TransportWhenClient config
stdio MCPEditor hosts. Tools appear on demand — no daemon.{"command":"clawdcursor","args":["mcp","--compact"]}
HTTP MCPHeadless agents, daemons, orchestration, Agent SDK. POST JSON-RPC to http://127.0.0.1:3847/mcp.Run clawdcursor agent. Bearer token at ~/.clawdcursor/token.
# HTTP MCP — list tools
# (the Accept header is required — the MCP spec's Streamable HTTP transport
#  rejects requests that don't accept both JSON and SSE with a 406)
curl -s -X POST http://127.0.0.1:3847/mcp \
  -H "Authorization: Bearer $(cat ~/.clawdcursor/token)" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Platform support

Platform code lives behind a single PlatformAdapter interface (src/platform/{windows,macos,linux}.ts + wayland-backend.ts). Business logic never reads process.platform.

PlatformUI AutomationOCRBrowser (CDP)Input
Windows 10/11 (x64 / ARM64)UIA via PowerShell bridgeWindows.Media.OcrChrome / Edgenut-js
macOS 12+ (Intel / Apple Silicon)JXA + System Events (TCC-safe)Apple VisionChrome / Edgenut-js + System Events
Linux X11AT-SPI via python3-giTesseractChrome / Edgenut-js
Linux WaylandAT-SPI via python3-giTesseractChrome / Edgeydotool / wtype
  • Windows — no setup; the PowerShell bridge spawns on demand.
  • macOS — first run needs Accessibility (required) + Screen Recording (optional); clawdcursor grant walks the dialogs. Retina/HiDPI handled in-adapter — don't pre-scale coordinates.
  • Linux X11 — apt install tesseract-ocr python3-gi gir1.2-atspi-2.0.
  • Linux Wayland — same, plus ydotool + ydotoold (preferred) or wtype (keyboard only).

Safety & privacy

TierActionsBehavior
AllowReading, opening apps, navigation, typing into non-sensitive fields, minimizeExecutes immediately
ConfirmSends, deletes, purchases, transfers, close-window/quit-app & show-desktop key combos, sensitive appsPauses for approval (batch({allowConfirm:true}) to authorize)
BlockCtrl+Alt+Del, lock / log-out / force-quit / shutdown key sequencesRefused outright (no path)
  • Network isolation. Binds to 127.0.0.1. Verify: netstat -an | findstr 3847 (Windows) / | grep 3847 (Unix).
  • Bearer-token auth on every HTTP request (~/.clawdcursor/token).
  • Sensitive-app policy. Email, banking, password managers, private messaging auto-elevate to Confirm.
  • No telemetry by default. Nothing phones home. Screenshots stay in RAM; with a local model nothing leaves the machine; with a cloud provider, screenshots go only to the endpoint you configured. clawdcursor report is opt-in and previews exactly what it sends.
  • Prompt-injection defense. Screen text is returned inside <untrusted-screen-content> tags — data, never instructions.
  • Log privacy. Logs redact password-field values (AXSecureTextField, UIA IsPassword=true).

See SECURITY.md for private vulnerability reporting.


Architecture

DirectoryWhat lives here
src/core/Thin agent loop (runAgent), sense layer (a11y / snapshot / fingerprint / UI compiler), reactive verification, focus guard, safety gate.
src/tools/98 granular tools + 7 compound aggregators + batch, playbooks, registry, dispatch.
src/platform/PlatformAdapter + Windows / macOS / Linux / Wayland, OCR engine, CDP driver, URI handler.
src/llm/Provider clients (Claude, GPT, Gemini, Llama, Kimi, Ollama, …), credentials, model config.
src/surface/CLI, MCP server (stdio + HTTP), dashboard, doctor, onboarding, control banner.

The PlatformAdapter is the only thing platform code talks to; safety.evaluate() is the only way tools execute. Those two seams are the whole point.


CLI

For humans diagnosing an install. Agents connect via MCP.

clawdcursor consent         Manage desktop-control consent (--accept / --revoke / --status)
clawdcursor grant           Grant macOS permissions (interactive, macOS only)
clawdcursor doctor          Configure the AI provider for `agent` mode (+ diagnostics)
clawdcursor status          Readiness check (consent, permissions, AI config)
clawdcursor mcp             stdio MCP server — editor hosts spawn this; you don't
clawdcursor agent           Daemon: HTTP MCP on :3847, optional built-in thin loop
clawdcursor agent --no-llm  Daemon, tool surface only (no built-in brain)
clawdcursor stop            Stop every running mode
clawdcursor uninstall       Remove all config and data

Options:  --port <n> (default 3847) · --compact · --no-banner · --provider <name> · --accept

Development

git clone https://github.com/AmrDab/clawdcursor.git && cd clawdcursor
npm install
npm run build       # tsc + postbuild  →  dist/surface/cli.js
npm test            # vitest (1,000+ tests)
npm run lint        # eslint
npm link            # global `clawdcursor` shim (Admin shell on Windows)

Tests run on Node 20 & 22 against Ubuntu, macOS, and Windows in CI, plus a coverage ratchet, a perf tripwire, and an npm audit gate.

Tech: TypeScript · Node 20+ · nut-js · Playwright · sharp · Express · Model Context Protocol SDK · Zod · commander.


Contributing

PRs welcome — see CONTRIBUTING.md for the dev loop, branch conventions, and the test matrix every change clears. Bugs and features in issues; private security reports via SECURITY.md.

License

MIT — see LICENSE.

Acknowledgments

Built on the Model Context Protocol SDK, nut-js, Playwright, the Anthropic computer_20250124 tool shape, and the AT-SPI / UIA / AX trees that make app-agnostic GUI automation possible at all.


<p align="center"> <a href="https://clawdcursor.com">clawdcursor.com</a> &middot; <a href="https://discord.gg/hW29nrEZ8G">Discord</a> &middot; <a href="CHANGELOG.md">Changelog</a> &middot; <a href="https://www.npmjs.com/package/clawdcursor">npm</a> </p>

Related MCP servers

MCP server with derived GitHub issue tools: normalized fetch, new-issue watch, claim status.

0
Python
MIT
View repository →

Cross-device AI memory with encrypted activity capture and context handoff between AI tools

View repository →

High-performance, modular MCP v2 server with safe profiles, worker pool, caching, and stdio.

3
TypeScript
MIT
View repository →

Graph-native semantic dependency analysis for codebases—know what breaks before you break it.

140
Rust
MIT
View repository →

Token-efficient semantic compression for numerical data. 95%+ token reduction.

1
Python
MIT
View repository →

On-chain provenance lookup for AnchorRegistry. Resolve AR-IDs, hashes, and full trees. Authless.

0
TypeScript
MIT
View repository →