Paint MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Paint MCPdraw a line from (50,50) to (200,200)"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Paint MCP — controla Paint de Windows desde Claude
Servidor MCP local que le permite a Claude (vía Claude Code) abrir Paint de
Windows 11 y dibujar en el lienzo. Paint no tiene API, así que se controla por
automatización de GUI (pyautogui mueve el mouse en coordenadas de pantalla).
Requisitos
Windows 10/11 con Paint (
mspaint.exe)Python 3.10+ (probado en 3.14)
Related MCP server: MCPControl
Instalación
python -m pip install -r requirements.txtDependencias: mcp[cli], pyautogui, pillow, opencv-python, numpy (pygetwindow y
pywin32 entran como dependencias en Windows). opencv-python y numpy se usan para la
auto-calibración (detección del lienzo y del ícono del lápiz por imagen).
Cómo funciona
Las coordenadas de las tools son relativas al lienzo: (0,0) es la esquina superior
izquierda del área dibujable. El servidor las traduce a pantalla usando la posición de la
ventana de Paint + unos márgenes de calibración que descuentan el panel de herramientas
izquierdo, el ribbon superior, los bordes y la barra de estado.
Detalles que hicieron falta para que el dibujo funcione en el Paint de Windows 11 (WinUI):
Match por proceso, no por título. La ventana de Paint se ubica buscando el proceso
mspaint.exe. Buscar por título ("paint") fallaba porque VS Code abierto en la carpetaMCP-TEST-Painttambién contiene "paint" en su título.Selección del lápiz. Antes de dibujar se clickea el ícono del Lápiz en el ribbon. Esto además descarta cualquier selección activa (p. ej. la que deja
Ctrl+Aal limpiar), que si no haría que los arrastres muevan la selección en vez de dibujar.Priming. El primer arrastre después de tocar un botón del ribbon no pinta, así que se hace un arrastre corto sacrificable antes del trazo real.
dragTopor segmento. Arrastrar conmouseDown()+moveTo()solía dejar solo un punto; cada segmento se traza condragTo()(presiona-arrastra-suelta). Los segmentos comparten extremos, así que se ven continuos.
Auto-calibración
Para no depender de coordenadas fijas (que se rompen al cambiar de monitor, resolución o escala), el servidor se auto-calibra en cada uso:
Lienzo: se detecta la región dibujable buscando la banda blanca dominante dentro de la ventana (numpy). El resultado se cachea por geometría de ventana.
Lápiz: se ubica el ícono por reconocimiento de imagen (
cv2.matchTemplatesobreassets/pencil.png), tomando la mejor coincidencia en pantalla.
Si la detección falla (p. ej. sin opencv/numpy), cae automáticamente a los márgenes y
coordenadas fijas configurables por entorno (ver más abajo). get_canvas_info() informa si
está usando detected o fallback.
Nota: la plantilla
assets/pencil.pngy la detección asumen 100 % de escala de pantalla. Con otra escala (125 %, 150 %…) el ícono cambia de tamaño y puede no matchear; en ese caso se usa el fallback de coordenadas.
Tools disponibles
Tool | Descripción |
| Abre |
| Devuelve bounds de la ventana y región del lienzo (para depurar/calibrar). |
| Línea recta. |
| Rectángulo (4 líneas conectadas). |
| Trazo libre por una lista |
| Limpia el lienzo (Ctrl+A + Delete). |
| Guarda la región del lienzo como PNG (screenshot, sin usar el diálogo de Paint). |
Probar sin Claude
python test_local.pyAbre Paint, dibuja un rectángulo, una línea y un trazo libre, y guarda salida.png.
⚠️ Durante la ejecución el script toma control del mouse. No uses la PC mientras corre. Para abortar de emergencia, mueve el mouse a una esquina de la pantalla (FAILSAFE de pyautogui).
Calibración (fallback)
Normalmente no hace falta calibrar: la auto-detección de arriba se encarga. Estos valores
son el fallback que se usa solo si la detección por imagen falla (sin opencv/numpy, o
escala ≠ 100 %). Se ajustan por variables de entorno (no hace falta tocar el código):
Variable | Default | Qué controla |
| 218 | Barra de título + ribbon superior |
| 277 | Borde + panel de herramientas izquierdo |
| 285 | Borde/panel derecho |
| 135 | Barra de estado inferior |
| 262 | X del ícono Lápiz (relativa a la ventana) |
| 87 | Y del ícono Lápiz (relativa a la ventana) |
| 0.4 | Segundos por segmento (subir si Paint no registra el trazo) |
Cómo recalibrar: llamá get_canvas_info() para ver la región del lienzo y la posición
calculada del lápiz, o sacá un screenshot de pantalla completa y medí: la esquina superior
izquierda del lienzo blanco te da MARGIN_LEFT/MARGIN_TOP, y el ícono del Lápiz en el
ribbon te da PAINT_PENCIL_X/PAINT_PENCIL_Y.
Usar desde Claude Code
El archivo .mcp.json ya registra el servidor (scope de proyecto). Para activarlo:
Reinicia Claude Code en este directorio para que cargue
.mcp.json.Verifica con
/mcpque aparece el servidor paint (aprueba el servidor si te lo pide).Pídele a Claude algo como: "abre Paint y dibuja un cuadrado".
Límites del POC
Dibuja siempre con el Lápiz y color negro. Cambiar color / grosor / pincel / texto no está incluido (requiere clickear más botones del ribbon). Sería una v2.
La calibración (márgenes y posición del lápiz) depende de la resolución y escala de pantalla. Los defaults son para 2560×1080 al 100%; en otra config hay que ajustar las variables de entorno de arriba.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/miguel-alvarez-utn2020/MCP-PAINT'
If you have feedback or need assistance with the MCP directory API, please join our Discord server