Paint MCP
Controls Windows Paint from Claude via GUI automation, enabling drawing of lines, rectangles, and freehand strokes on the canvas.
README
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)
Instalación
python -m pip install -r requirements.txt
Dependencias: 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 |
|---|---|
open_paint() |
Abre mspaint, lo maximiza y lo enfoca (si ya está abierto, solo lo enfoca). |
get_canvas_info() |
Devuelve bounds de la ventana y región del lienzo (para depurar/calibrar). |
draw_line(x1,y1,x2,y2) |
Línea recta. |
draw_rectangle(x,y,width,height) |
Rectángulo (4 líneas conectadas). |
draw_polyline(points) |
Trazo libre por una lista [[x,y],...]. |
clear_canvas() |
Limpia el lienzo (Ctrl+A + Delete). |
save_canvas(path) |
Guarda la región del lienzo como PNG (screenshot, sin usar el diálogo de Paint). |
Probar sin Claude
python test_local.py
Abre 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 |
|---|---|---|
PAINT_MARGIN_TOP |
218 | Barra de título + ribbon superior |
PAINT_MARGIN_LEFT |
277 | Borde + panel de herramientas izquierdo |
PAINT_MARGIN_RIGHT |
285 | Borde/panel derecho |
PAINT_MARGIN_BOTTOM |
135 | Barra de estado inferior |
PAINT_PENCIL_X |
262 | X del ícono Lápiz (relativa a la ventana) |
PAINT_PENCIL_Y |
87 | Y del ícono Lápiz (relativa a la ventana) |
PAINT_DRAW_DURATION |
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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。