mcp -microsoft-paint
MCP server from ghuntley/mcp-server-microsoft-paint
claude mcp add --transport stdio ghuntley-mcp-server-microsoft-paint cargo run --release \ --env RUST_LOG="info"
How to use
This MCP server provides a JSON-RPC 2.0 interface for automating and controlling Microsoft Paint on Windows. The server launches Paint (or connects to an existing instance) and accepts commands via standard input, returning results on standard output. Typical operations include initializing the Paint process, connecting to a running window, drawing primitives (lines, pixels, shapes), selecting tools, setting colors, and querying canvas dimensions. Use the provided methods to script drawing tasks or build automation workflows that interact with Paint programmatically through the MCP protocol. When running, you can issue requests such as initialize, connect, draw_line, draw_pixel, draw_shape, set_color, select_tool, and activate_window, among others, all encoded as JSON-RPC 2.0 payloads.
To start the server locally, build the binary in release mode and run it. Once running, send JSON-RPC requests to the server’s stdin and read responses from stdout. If you have a test client, you can exercise common workflows like launching Paint, drawing a line, and changing colors using those client scripts.
How to install
Prerequisites:
- Rust and Cargo installed on Windows (for building the server)
- Python installed for any test clients
Installation steps:
- Ensure Rust toolchain is installed. If needed, install via rustup:
- Clone or download the MCP server repository.
- Build the server in release mode:
cargo build --release - Run the server:
cargo run --release - (Optional) If you have a Python test client, ensure Python is installed and run tests that communicate with the server via stdin/stdout as demonstrated in the repo (e.g., python final_test.py).
Notes:
- Operating system: Windows 10/11 with Microsoft Paint installed.
- The server communicates using JSON-RPC 2.0 over standard I/O, so you’ll typically pipe requests into the process and read responses from it.
Additional notes
Tips and tips:
- Ensure Paint is launched or accessible before issuing connect or draw requests.
- If connections fail, try launching Paint manually, then start the MCP server.
- Set RUST_LOG=info or debug to get more verbose logs for troubleshooting.
- The server exposes multiple methods (initialize, connect, draw_line, draw_pixel, draw_shape, activate_window, get_canvas_dimensions, set_color, select_tool, and more); refer to the README for a full list and payload examples.
- If running on Windows in a headless environment, consider ensuring the user session has access to a visible desktop to allow Paint to render windows.
Related MCP Servers
grafbase
The Grafbase GraphQL Federation Gateway
mcp-guardian
Manage / Proxy / Secure your MCP Servers
surrealmcp
The official MCP server for SurrealDB
offeryn
Build tools for LLMs in Rust using Model Context Protocol
mcp-gateway
Transform any HTTP endpoint into an MCP server. Aggregate multiple MCP servers, manage configuration profiles, and serve them through a unified gateway with multi-tenant isolation.
mcp-protocol-sdk
[DEPRECATED] Moved to prism-mcp-rs - Enterprise-grade Rust MCP SDK