gimp-mcp
Allows an agent to control GIMP 3 in detail: creating and opening images, managing layers and layer masks, making selections, painting and drawing (brush, pencil, eraser, clone, gradient), adding and editing text, applying color adjustments and GEGL filters, scaling/cropping/rotating, and exporting to formats like PNG/JPEG/WebP/GIF/TIFF/PDF. It also offers full access via PDB search/call and running arbitrary Python inside GIMP, plus image previews so the agent can see the result of each step.
Click on "Deploy 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., "@gimp-mcp Open logo.png, add a text layer saying Hello, and export as PNG"
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.
gimp-mcp
Servidor MCP para controlar GIMP 3 con detalle desde un agente (Claude, OpenClaw, Claude Code, Claude Desktop...): capas, selecciones, pintura, texto, ajustes de color, filtros GEGL, cualquier procedimiento de la PDB y Python libre dentro de GIMP. Incluye una vista previa en imagen para que el agente vea el resultado de cada paso.
Cómo funciona
Agente ──MCP (stdio)──> gimp-mcp ──TCP 127.0.0.1:9877──> plugin mcp-bridge (dentro de GIMP)mcp-bridge es un plugin Python de GIMP 3 que escucha solo en
127.0.0.1y ejecuta las órdenes con la API de GIMP. Cada petición lleva un token aleatorio guardado en el perfil de GIMP (%APPDATA%\GIMP\3.x\mcp-bridge.token), así que otros programas no pueden usarlo sin él.gimp-mcp instala/actualiza el plugin automáticamente y arranca GIMP si no está abierto. Si GIMP ya está abierto, le pasa la orden de activar el puente a esa misma ventana.
GIMP se lanza fuera del job del cliente MCP, así que no se cierra (ni pierdes trabajo) cuando el cliente reinicia el servidor.
Related MCP server: Editmamei
Requisitos
GIMP 3.0 o posterior (probado con 3.2.6 en Windows 11)
Python 3.10+ y uv
Instalación
git clone https://github.com/EdvardKS/mcp-gimp.git
cd mcp-gimp
uv sync
uv run gimp-mcp --install-plugin # opcional: se hace solo al primer usoSi GIMP estaba abierto al instalar el plugin por primera vez, ciérralo y vuelve a abrirlo para que lo registre.
OpenClaw
openclaw mcp set gimp '{"command":"C:/ruta/a/mcp-gimp/.venv/Scripts/gimp-mcp.exe","args":[],"env":{"GIMP_MCP_MODE":"gui"}}'
openclaw mcp probePara que el agente sepa cuándo y cómo usar todo esto (flujo de trabajo, recetas de calidad y
entrega del archivo por Telegram/WhatsApp con MEDIA:), copia la skill incluida a tu workspace:
Copy-Item -Recurse openclaw/skills/gimp-studio ~/.openclaw/workspace/skills/
openclaw skills list # debe aparecer "gimp-studio ✓ ready"La skill combina el MCP de GIMP con la generación de imágenes nativa de OpenClaw
(image_generate). Para activarla configura un proveedor de imagen, por ejemplo Gemini
(requiere facturación activa en Google AI Studio):
openclaw config patch --file imagegen.json5
# imagegen.json5:
# { agents: { defaults: { mediaModels: { image: { primary: "google/gemini-3.1-flash-image" } } } } }Claude Code / Claude Desktop
{
"mcpServers": {
"gimp": {
"command": "C:/ruta/a/mcp-gimp/.venv/Scripts/gimp-mcp.exe",
"env": { "GIMP_MCP_MODE": "gui" }
}
}
}Configuración (variables de entorno)
Variable | Por defecto | Uso |
|
|
|
|
| Puerto local del puente |
|
|
|
| autodetectado | Carpeta |
|
| Segundos máximos por operación |
|
| Segundos de espera al arrancar GIMP |
|
| Si GIMP ya está abierto y no activa el puente en este tiempo (p. ej. tiene un diálogo abierto), se levanta un GIMP oculto sin ventana como plan B |
Herramientas (42)
Área | Herramientas |
Estado e imágenes |
|
Imagen completa |
|
Capas |
|
Selección |
|
Pintura |
|
Texto |
|
Color |
|
Filtros |
|
Acceso total |
|
Las operaciones de edición se agrupan en un único paso de deshacer de GIMP, y las herramientas
llevan anotaciones MCP (readOnlyHint / destructiveHint) para que el cliente sepa cuáles
solo leen y cuáles pueden borrar o sobrescribir.
Pruebas
Con GIMP sin ventana y en otro puerto para no tocar tu sesión:
$env:GIMP_MCP_MODE="headless"; $env:GIMP_MCP_PORT="9878"
uv run python tests/smoke_test.py # ejecuta todas las herramientas
uv run python tests/mcp_client_test.py # prueba por el protocolo MCP realSeguridad
gimp_run_python y gimp_pdb_call permiten ejecutar código arbitrario dentro de GIMP (que puede
leer y escribir archivos del usuario). El puente solo acepta conexiones locales con token, pero
da al agente el mismo poder que tendría un script de GIMP: actívalo solo para agentes de confianza.
Licencia
MIT
Available Tools
42 toolsgimp_add_layer_from_fileB
Inserta otra imagen (logo, foto...) como capa nueva. Sin x/y queda centrada. width/height opcionales para escalarla (si das uno, mantiene proporción).
Inputs: path (required), x, y, name, +4 more.
gimp_add_textA
Añade una capa de texto editable. (x,y) es la ESQUINA SUPERIOR IZQUIERDA de la capa de texto, no su centro: para centrar usa align='center' (ambos ejes) o 'center_x' (centrado horizontal a la altura y). size en px. box_width fija el ancho de caja para que el texto haga saltos de línea. Usa gimp_list_resources('fonts') para ver fuentes. Comprueba en la respuesta que x+width y y+height no superan el tamaño de la imagen (si no, el texto sale cortado).
Inputs: text (required), x, y, font, +8 more.
gimp_adjustA
Ajustes de color sobre la capa (respetando la selección):
brightness_contrast: brightness, contrast (-1..1)
hue_saturation: hue (-180..180), saturation y lightness (-100..100)
levels: low, high (0..1), gamma (0.1..10) · auto_levels / white_balance: automáticos
desaturate, invert · threshold: low, high (0..1) · posterize: levels (2..256)
colorize: color (tono) · color_balance: cyan_red, magenta_green, yellow_blue (-100..100)
curves: curve_points=[x1,y1,x2,y2,...] en 0..1 (valor) · exposure: exposure (EV)
color_temperature: temperature (K, <6500 enfría, >6500 calienta)
shadows_highlights: shadows, highlights (-100..100)
Inputs: operation (required), hue, low, high, +17 more. Returns: result
gimp_apply_filterA
Aplica cualquier filtro GEGL a una capa (respeta la selección). Ejemplos: gegl:gaussian-blur {std-dev-x, std-dev-y} · gegl:unsharp-mask {std-dev, scale} · gegl:dropshadow {x, y, radius, color, opacity} · gegl:pixelize {size-x, size-y} · gegl:noise-reduction {iterations} · gegl:vignette {radius, softness, color} · gegl:cartoon · gegl:emboss · gegl:edge-sobel · gegl:mosaic · gegl:waves · gegl:ripple · gegl:lens-distortion · gegl:bloom · gegl:high-pass · gegl:oilify · gegl:motion-blur-linear {length, angle} · gegl:sepia {scale} · gegl:mono-mixer · gimp:threshold-alpha... Usa gimp_filter_info para ver las propiedades de una operación. non_destructive=True lo deja como filtro editable en vez de fusionarlo con la capa.
Inputs: operation (required), image_id, layer_id, properties, +1 more. Returns: result
gimp_close_imageADestructive
Cierra una imagen. Por seguridad falla si tiene cambios sin guardar, salvo discard_changes=True.
Inputs: image_id, discard_changes. Returns: result
gimp_convert_modeC
Convierte el modo de color de la imagen. Para indexed, colors = nº de colores de la paleta.
Inputs: mode (required), colors, image_id.
gimp_cropA
Recorta la imagen: a un rectángulo (x,y,width,height), a la selección actual (to_selection) o quitando bordes uniformes (autocrop).
Inputs: x, y, width, height, +3 more.
gimp_delete_layerCDestructive
Elimina una capa.
Inputs: layer_id (required). Returns: result
gimp_drawB
Pinta un trazo que pasa por points=[x1,y1,x2,y2,...] (coordenadas de imagen) con la herramienta indicada. closed=True cierra el trazo volviendo al primer punto.
Inputs: points (required), size, tool, color, +4 more. Returns: result
gimp_duplicate_imageB
Duplica una imagen completa (con capas) en una imagen nueva.
Inputs: image_id.
gimp_duplicate_layerC
Duplica una capa (queda justo encima de la original).
Inputs: layer_id (required), name.
gimp_edit_textC
Modifica una capa de texto existente.
Inputs: layer_id (required), font, size, text, +2 more.
gimp_export_imageADestructive
Exporta la imagen al formato que indique la extensión (png, jpg, webp, gif, tif, bmp, pdf...).
quality (1-100) aplica a jpg/webp. flatten=True une las capas antes de exportar (sobre una copia, la imagen original no cambia).
Inputs: path (required), flatten, quality, image_id. Returns: result
gimp_fillB
Rellena la selección (o la capa entera si no hay selección). fill: 'foreground', 'background', 'white', 'transparent', 'pattern' o un color concreto ('#ff0000').
Inputs: fill, image_id, layer_id. Returns: result
gimp_filter_infoARead-only
Sin operation: lista las operaciones GEGL disponibles que contengan query.
Con operation: muestra sus propiedades (nombre, tipo, valor por defecto, rango, descripción).
Inputs: query, operation.
gimp_gradientC
Rellena con degradado de (x1,y1) a (x2,y2). Por defecto va de start_color a end_color (o frente→fondo); gradient permite usar un degradado de GIMP por nombre.
Inputs: x1 (required), x2 (required), y1 (required), y2 (required), +7 more. Returns: result
gimp_image_infoBRead-only
Detalle de una imagen: tamaño, modo, resolución, selección y árbol de capas con ids.
Inputs: image_id.
gimp_layer_maskB
Máscaras de capa: add (white=todo visible, black=todo oculto, selection=desde la selección, alpha, copy, grayscale), apply (aplica y elimina la máscara) o remove (la descarta).
Inputs: layer_id (required), action, mask_type.
gimp_layer_orderB
Mueve una capa en la pila: raise/lower (un paso), top/bottom, o position (0 = arriba).
Inputs: action (required), layer_id (required), position.
gimp_list_imagesBRead-only
Lista las imágenes abiertas en GIMP (id, nombre, archivo, tamaño).
Inputs: no named parameters.
gimp_list_resourcesBRead-only
Lista recursos de GIMP (fuentes, pinceles, degradados, patrones, paletas) filtrando por texto.
Inputs: kind (required), limit, query.
gimp_merge_layersADestructive
Combina capas: merge_down (la capa con la de debajo), merge_visible (todas las visibles) o flatten (todo en una capa sin transparencia).
Inputs: action (required), image_id, layer_id.
gimp_modify_selectionB
Modifica la selección actual: grow/shrink/border (px), feather (radio px), sharpen (quita difuminado).
Inputs: action (required), amount, image_id.
gimp_new_imageC
Crea una imagen nueva. background: color, 'transparent', 'foreground' o 'background'.
Inputs: width (required), height (required), mode, name, +1 more.
gimp_new_layerC
Crea una capa (o un grupo de capas si group=True). fill: 'transparent' o un color. position 0 = arriba del todo. parent_id: grupo donde meterla.
Inputs: x, y, fill, mode, +8 more.
gimp_open_imageB
Abre un archivo de imagen (png, jpg, xcf, psd, webp, tif, pdf...) y devuelve su info.
Inputs: path (required).
gimp_pdb_callADestructive
Llama a cualquier procedimiento PDB por nombre con argumentos por nombre. Valores especiales: 'image' se rellena con image_id, 'drawable' con layer_id y 'drawables' con [layer_id]; 'run-mode' es NONINTERACTIVE por defecto; 'file' acepta una ruta; colores como texto. Consulta antes gimp_pdb_info.
Inputs: name (required), image_id, layer_id, arguments.
gimp_pdb_infoBRead-only
Muestra los argumentos y valores de retorno de un procedimiento PDB.
Inputs: name (required).
gimp_pdb_searchBRead-only
Busca procedimientos de la PDB de GIMP (incluye plugins y Script-Fu) por nombre.
Inputs: query (required), limit.
gimp_previewBRead-only
Devuelve una vista previa PNG de la imagen (o de una sola capa) para VER el resultado.
Úsala tras cada cambio importante para comprobar que ha quedado bien.
Inputs: image_id, layer_id, max_size.
gimp_resize_canvasB
Cambia el tamaño del lienzo sin escalar el contenido. fill: color para rellenar el espacio nuevo (si no, queda transparente).
Inputs: width (required), height (required), fill, anchor, +1 more.
gimp_rotate_flip_imageA
Gira la imagen entera 90/180/270 grados (sentido horario) y/o la voltea.
Inputs: flip, rotate, image_id.
gimp_run_pythonBDestructive
Ejecuta código Python dentro de GIMP 3 (API GObject: Gimp, Gegl, Gio, GLib ya importados).
Asigna la respuesta a la variable result (o usa print). Helpers disponibles:
_img(id) imagen, _item(id) capa, _drawable(img, id) capa activa, _color('#hex'),
_gegl(drawable, 'gegl:op', {props}), _pdb_run('proc', **args), _image_info(img), _undo(img).
Las variables persisten entre llamadas.
Inputs: code (required).
gimp_save_imageADestructive
Guarda en formato XCF de GIMP (con capas). Sin path, guarda sobre su archivo .xcf actual.
Inputs: path, image_id. Returns: result
gimp_scale_imageB
Escala la imagen entera. Indica width y/o height (mantiene proporción si falta uno) o percent.
Inputs: width, height, percent, image_id, +1 more.
gimp_selectA
Crea o modifica la selección. rectangle/ellipse/rounded_rectangle usan x,y,width,height (radius para las esquinas); polygon usa points=[x1,y1,x2,y2,...]; from_alpha selecciona lo opaco de layer_id. operation combina con la selección previa. feather difumina el borde (px).
Inputs: shape (required), x, y, width, +7 more.
gimp_select_by_colorC
Selecciona por color. Con color: todos los píxeles de ese color. Con x,y: la varita mágica (contiguous=True) o el color de ese punto en toda la imagen. threshold 0-255.
Inputs: x, y, color, image_id, +5 more.
gimp_set_colorsB
Ajusta el contexto de pintura: color de frente/fondo, pincel (nombre), tamaño, opacidad y modo. Sin argumentos devuelve los valores actuales.
Inputs: brush, opacity, background, brush_size, +2 more.
gimp_set_layerA
Cambia propiedades de una capa: nombre, visibilidad, opacidad (0-100), modo de fusión (normal, multiply, screen, overlay, soft-light, hard-light, difference, addition, subtract, darken-only, lighten-only, hue, saturation, color, value...), posición x/y, bloqueo de alfa, o la marca como capa activa (select=True).
Inputs: layer_id (required), x, y, mode, +5 more.
gimp_statusARead-only
Comprueba la conexión con GIMP (lo arranca si hace falta) y lista las imágenes abiertas.
Inputs: no named parameters.
gimp_stroke_selectionC
Dibuja el contorno de la selección actual con el grosor (px) y color indicados.
Inputs: color, width, image_id, layer_id. Returns: result
gimp_transform_layerB
Transforma una capa: escalar (px o %), rotar (grados, sentido horario, sobre su centro), voltear, mover a x/y absolutos (esquina superior izquierda), centrar en la imagen (align), o ajustar el tamaño del borde de la capa al de la imagen.
Inputs: flip, align, move_x, move_y, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 42 tools
Most tools map to a distinct resource+action pair (image, layer, selection, color, filter, text). There is some overlap: gimp_status and gimp_list_images both report open images, and gimp_pdb_call and gimp_run_python are broad escape hatches that can accomplish many of the same things, but descriptions clarify intent well.
Every tool uses the gimp_ prefix followed by a consistent snake_case verb_noun pattern (gimp_open_image, gimp_delete_layer, gimp_create_*, gimp_list_resources). Naming is highly predictable throughout.
42 tools is heavy and pushes into the lower band, but GIMP is a genuinely large domain (images, layers, selections, color, filters, PDB, scripting) so most tools are justified. A few, like the overlapping status/list and pdb/run_python pairs, could be consolidated.
The surface covers the full image lifecycle: create/open/close/save/export/duplicate, layer CRUD and ordering, selection creation and modification, color/context, drawing, text, filters, PDB introspection and Python escape hatches. No obvious domain gaps remain.
Maintenance
Related MCP Connectors
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Generate AI video, images and audio, and browse your history, from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceMCP server that bridges GIMP 3.0 with natural language commands, enabling conversational image editing through Claude Desktop and other MCP clients. Exposes GIMP's full PyGObject API for AI-powered image manipulation.292GPL 3.0
- AlicenseAqualityBmaintenanceEditmamei provides a natural-language interface for Adobe Photoshop, running as a local MCP server. Rather than focusing on generative AI, it acts as an AI orchestration layer that plans edits and executes them with native Photoshop tools.65698 npm20Functional Source , Version 1.1, MIT Future
- AlicenseBqualityBmaintenanceEnables AI agents to operate GIMP 3 end-to-end: open and inspect images, call every PDB procedure, apply GEGL filters destructively or as layer effects, measure pixels, render before/after/diff comparisons, cut out subjects with AI segmentation, and run multi-step recipes across folders.3276 PyPI5Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to create, paint, edit, inspect, and export images in a running GIMP 3.2 instance via MCP.178 PyPIGPL 3.0