Skip to main content
Glama

From a reference to a canvas

PointHand reproduced the Mona Lisa in Microsoft Paint through its own MCP server. The reusable script selects colors and draws mouse strokes into the canvas.

Related MCP server: AiPC

Built for desktop work

Observe

Interact

Create

Find apps and windows, capture screenshots, inspect the UI Automation tree, and record speaker loopback.

Move, click, drag, scroll, type, use key chords and work with the clipboard.

Draw freehand paths and geometric shapes with a native cursor and visible activity frame.

The TypeScript MCP server connects your agent to a native Rust host. Windows input, accessibility and the overlay run in that host. The portable package needs Node.js 20+; Rust and Python are only needed for development or optional components.

Release status: v0.2.0-alpha.5 is an alpha for supervised workflows with 28 MCP tools (the next release adds background mode, element search, waits, window management and update notices for 35). Accessibility lines name only the actions an element can run, and start_audio_recording records what Windows is playing. See the release notes and validation limits. Alpha 4 remains available.

Quick start

  1. Download the Windows x64 ZIP and its SHA-256 file from Releases.

  2. Verify the ZIP with Get-FileHash -Algorithm SHA256, then extract it.

  3. Install Node.js 20 or newer and add PointHand to your MCP client:

{
  "mcpServers": {
    "pointhand": {
      "command": "node",
      "args": ["C:/Tools/PointHand/client/dist/index.js"],
      "env": {
        "POINTHAND_ALLOW": "mspaint.exe,Illustrator.exe"
      }
    }
  }
}

Replace the path with the extracted package's client/dist/index.js. Set the allow-list to the apps you want the agent to control; leaving it empty allows every app.

Open a blank Paint canvas and try:

Use PointHand to inspect the Paint window, select a drawing tool and draw a small fish in the center of the canvas.

For the complete portrait workflow, follow the Mona Lisa tutorial, including the reference, ready-made plan and script instructions.

Use with Grok App / Grok CLI

PointHand is a plain stdio MCP server, so any MCP client can load it. Grok App (and its GrokCLI fork) recognise it as a one-click preset:

  1. Download and extract this release ZIP, install Node.js 20+.

  2. In the app open Settings → Extensions → MCP → Add server → Fill in PointHand. Replace the sample path with your extracted client/dist/index.js, then press Add.

  3. Optional: Install PointHand skill writes skills/pointhand/SKILL.md into the user skills folder so the agent knows the look → act → verify workflow. Terminal users can copy that file to ~/.grok/skills/pointhand/SKILL.md and add the same config by hand:

[mcp_servers.pointhand]
command = "node"
args = ["C:/Tools/PointHand/client/dist/index.js"]

[mcp_servers.pointhand.env]
POINTHAND_ALLOW = "mspaint.exe"

Physical Escape still stops PointHand at any time. Full walkthrough: the Grok App docs once the companion PR lands, or the Quick start section above.

Visible control. A clear way to stop.

  • Native feedback: a click-through glass frame, activity label, cursor trail and click ripple show PointHand's activity. The overlay targets 60 FPS and is excluded from screenshots by default.

  • Stop: once an action has started, mouse movement and clicks do not cancel it. Physical Escape stops further mutations until the server restarts.

  • Scoped access: restrict receiving apps with executable names or exact paths in POINTHAND_ALLOW.

  • Input cleanup: interrupted strokes release held buttons. Alpha 2 also provides an out-of-band emergency_stop tool that stops active and queued mutations until restart.

Use PointHand in a supervised desktop session. App permissions are a guardrail, not a sandbox against malicious local software. Window screenshots use the window's own pixels when Windows graphics capture is available, so a covered window stays where it is. Pointer actions bring that window forward and do not click a window that remains on top. That refusal names the covering process and returns a fresh screenshot of the target so the action can be retried once. Desktop screenshots are the visible composite. Elevated windows can still reject input. Read the security policy and input behavior guide.

Tested on the desktop

Scenario

Alpha 2 validation

Paint drawing

Live strokes, shapes and Turkish color-dialog controls through PointHand MCP

Extended desktop

125% primary + 100% virtual secondary, streamed to a phone with Sunshine

Coordinate precision

Exact click and stroke endpoints with the secondary display on either side

Stop

Escape and emergency_stop cancel a held-button drawing and release the button. Mouse movement does not.

Emergency stop

Active drawing cancelled, held button released and queued mutation blocked

Portable package

Windows CI checks ZIP extraction, SHA-256, executable manifest and isolated MCP startup

Streamed mixed-DPI overlay runs averaged approximately 57–59 FPS at a 60 FPS target. These are observed renderer timings, not a display-refresh guarantee.

Secure-desktop switching, display disconnection during input, more physical monitor combinations and a clean non-developer PC remain to verify. See the full validation checklist and multi-monitor report.

Help shape PointHand

Contributions are welcome in English or Turkish. You can help with code, documentation, creative examples or compatibility reports.

We especially need clean-install reports, English Paint checks and more physical-monitor/DPI coverage. Small, reproducible contributions help make the next release stronger.

Develop PointHand

The main implementation uses TypeScript + Rust + Windows APIs. The optional Python server is a reference implementation.

Directory

Responsibility

client/

MCP tools, request lifecycle and image results

host/

Native input, UI Automation, screenshots, clipboard, guards and overlay

scripts/

Build, packaging, verification and creative examples

pointhand/

Optional Python reference server

Requires stable Rust and Visual Studio Build Tools with Desktop development with C++, plus Node.js 20+.

./scripts/build-windows.ps1
npm ci --prefix client
npm run build --prefix client

The build writes the native executable and checksum manifest to bin/windows/x64/. Configure your MCP client with the absolute client/dist/index.js path in this checkout. POINTHAND_HOST can select a custom host executable.

To build and verify a portable package:

./scripts/package-windows.ps1
./scripts/verify-package.ps1
npm test --prefix client
node --test tests/js/*.test.mjs
cargo test --release --manifest-path host/Cargo.toml
cargo clippy --release --manifest-path host/Cargo.toml -- -D warnings
node --test scripts/host-regression.mjs

Optional Python checks require python -m pip install -e ".[test]", followed by python -m pytest.

Interactive tests move the real pointer and open a disposable test window. They use PointHand MCP and require Python with Tkinter:

node scripts/native-input-e2e.mjs
node scripts/native-multimonitor-e2e.mjs
node scripts/manual-physical-e2e.mjs

The multi-monitor test requires an extended second display. The manual test requires you to move a physical mouse or touchpad after drawing starts. Instructions and expected results are in the validation checklist.

Documentation

Guide

What you will find

Mona Lisa in Paint

Demo, drawing script and reusable stroke plan

Technical reference

Tool names, coordinates, key aliases, protocol and overlay settings

Pointer behavior

Motion, acceleration and drawing precision

Validation checklist

Completed checks and remaining coverage

Multi-monitor validation

Mixed-DPI measurements and hardware limits

Changelog

Published release and source-branch changes


Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to capture multi-monitor screenshots with coordinate grids and perform mouse, keyboard, scrolling, dragging, and window-management actions on Windows via MCP tools or CLI. It provides pixel-accurate desktop automation for computer-use agents.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Gives AI agents full control of a Windows computer over MCP through 63 native tools — screenshots and UI trees for vision, mouse/keyboard input, Chrome control via CDP, plus files, terminal, processes, and SSH/SFTP. The agent can look at the screen, click, type, launch apps, run commands, and verify each step with a fresh screenshot.
    47
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables agents to control Windows desktop applications through UI Automation and Win32, supporting window management, mouse/keyboard input, element inspection, screenshots, OCR, macro recording, and autonomous multi-app missions. It also provides an HTTP/stdio MCP interface, an operator UI, and optional telemetry and safety controls.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables MCP agents to drive Windows applications by targeting individual windows—clicking, typing, scrolling, dragging, and reading accessibility trees or screenshots—without stealing the user's focus, mouse, or keyboard. Runs entirely locally alongside the user, with per-app approval and no cloud account or usage limits.
    MIT