GimpMCP
Integrates with GIMP, allowing AI agents to drive image editing operations including layers, selections, filters, text, transforms, color adjustments, and arbitrary Script-Fu code execution.
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., "@GimpMCPopen cat.png and resize to 800x600"
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.
GimpMCP
An MCP server that lets an LLM (Claude Code, Claude Desktop, etc.) drive a running GIMP instance: images, layers, selections, gradients, text, transforms, color adjustments, any GEGL filter, or arbitrary Script-Fu (Scheme) code against GIMP's PDB.
How it works
GIMP ships a plug-in called plug-in-script-fu-server that turns GIMP into a
persistent TCP server: you send it Scheme source over a socket and it sends
back the printed result. This project exposes MCP tools that build the right
Scheme snippet, send it over the socket, and parse the reply.
Full GIMP access comes in three layers:
Curated tools (below) for the common operations, with clean parameters.
apply_gegl_filter— applies any of GIMP's ~400 GEGL filters by name (gegl:pixelize,gegl:oilify,gegl:lens-flare, ...) with keyword params.run_script_fu— runs arbitrary Scheme against the full PDB (~2,000 procedures), withsearch_gimp_apito discover what exists.
Related MCP server: mcp-toolbox
Live UI mode (watch edits happen in GIMP)
If the Script-Fu server runs inside your visible GIMP window, every edit is shown live on screen. To enable this, in GIMP:
Filters ▸ Development ▸ Script-Fu ▸ Script-Fu Server (older builds:
Filters ▸ Script-Fu ▸ Start Server), keep IP 127.0.0.1 and port 10008,
click Start.
If no GIMP is running at all, the first tool call auto-starts a headless
GIMP instead (fast, but edits are invisible). If GIMP's GUI is open but the
server isn't started, tools refuse with a hint rather than silently editing
in an invisible instance. gimp_status reports which mode you're connected to.
Setup
Install GIMP 3.0 if you haven't already: https://www.gimp.org/downloads/
From this directory:
python -m venv .venv .venv\Scripts\pip install -e .(Optional) If auto-detection can't find your GIMP install, set the
GIMP_EXECUTABLEenvironment variable to the full path ofgimp-console-3.0.exe(typically underC:\Program Files\GIMP 3\bin\).
Register with Claude Code
Add to your MCP config (e.g. via claude mcp add or your .mcp.json):
{
"mcpServers": {
"gimp": {
"command": "C:\\path\\to\\GimpMCP\\.venv\\Scripts\\python.exe",
"args": ["-m", "gimp_mcp.server"]
}
}
}Then ask Claude things like "open C:\photos\cat.png in GIMP, resize it to 800x600, and export it as cat_small.jpg".
Tools
Tool | Purpose |
| Check/start the server; reports GIMP version and GUI/headless mode |
| Run arbitrary Scheme code against the PDB |
| Search all bound Script-Fu symbols (procedures, enums) |
| Apply any GEGL filter by name with params |
| Load a file / create a blank image (auto-shows in GUI) |
| Show an image in a window / flush pending UI updates |
| Save to a path (format from extension); non-destructive |
| Inspect and manage open images |
| Whole-image transforms |
| Merge all layers down |
| Layer stack management |
| Layer properties |
| Selections |
| Linear/radial two-color gradient on the active layer/selection |
| Common filters (also reachable via |
| Color adjustments |
| Add a text layer, returns the new layer ID |
| Installed font names, filterable |
Example
examples/poster.py builds a complete layered
poster (gradient background, glowing shapes, positioned text with a screen-mode
glow) live in a visible GIMP window, then exports a PNG — a good tour of the API.
Platform support
Developed and fully verified on Windows + GIMP 3.0.8 (both the per-user
%LOCALAPPDATA%\Programs\GIMP 3 and system-wide Program Files install
locations are auto-detected). macOS and Linux path detection is included but
untested — set GIMP_EXECUTABLE to your gimp-console binary if detection
fails, and please report what you find. GIMP 2.10 is not supported: the
curated tools target GIMP 3.0's renamed PDB API (see below).
Verified against GIMP 3.0.8
Every tool above has been exercised end-to-end against a real, running GIMP
3.0.8 (Windows) Script-Fu server — see smoketest.py. GIMP 3.0 renamed or
removed a surprising number of PDB procedures compared to 2.10; here's what
changed and what this project uses instead:
Old (2.10) | Status in 3.0.8 | Used instead |
| arg order changed |
|
| removed |
|
| removed |
|
| signature simplified |
|
| removed |
|
| removed |
|
| removed |
|
| removed with no direct replacement | the generic |
The last one is the big one: GIMP 3.0's Script-Fu no longer exposes most GEGL
filters as individual named procedures. Anything not covered by a curated
tool here can likely still be reached via gimp-drawable-merge-new-filter
with the right gegl: operation name — check GIMP's share/gimp/3.0/scripts/*.scm
files (installed alongside GIMP) for real, working examples, or use
(oblist) in run_script_fu to list every currently-bound Script-Fu symbol
and grep for what you need.
If you're on a different GIMP version and something breaks, GIMP's own
Script-Fu console (Filters > Script-Fu > Console) plus (defined? 'some-name)
is the fastest way to check whether a procedure exists before wiring it up.
Protocol notes (for hacking on this further)
src/gimp_mcp/client.py implements the raw binary framing:
Request:
[0x47][len_hi][len_lo][script bytes]Response:
[0x47][err_code][len_hi][len_lo][result bytes]
err_code is 0 on success, non-zero on Script-Fu evaluation errors. Length
fields are 16-bit big-endian, so a single script is capped at 65535 bytes.
Every Script-Fu PDB call returns a list of its results even when there's only
one, hence the frequent (car ...) in the generated scripts.
License
MIT — see LICENSE.
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/SavithOnline/GimpMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server