GIMP Agent MCP
PYPI · GIMP-AGENT-MCP
Edit in GIMP 3 with AI agents: live previews, grouped edits, pixel measurements and recipes.
Available components
Last scanned (7 hours ago)
Scores higher than 88% of PyPI servers
Category Design and Media
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 28 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to SarutobiSasuke8/gimp-agent-mcp). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 57 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability66
- 50% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Partial
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 3679 tokens (~91/item across 40 items; 39 tools + 1 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
- Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (95% of tools); any adoption earns full credit.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "gimp_shutdown" implies "shutdown" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 41 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Checks we ran (16)
- Malware scan
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Security disclosure
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −5
- Stability: pass → 0.63 functional
- 1 Nov 26 +15
- Malware scan: unverified → pass ▲ security
- 31 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- 30 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 29 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Stability: 0.97 → pass security
- 28 Oct 26 0
- Stability: pass → 0.97 functional
- 27 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 26 Oct 26 −15
- Malware scan: pass → unverified ▼ security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/gimp-agent-mcp@0.5.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | SarutobiSasuke8/gimp-agent-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/SarutobiSasuke8/gimp-agent-mcp/.github/workflows/release.yml@refs/tags/v0.5.0 |
| Rekor log index | 2758538937 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:ca834b7f8cf55285158ecfd9d5a1a557197aebb04c4b9a4197ed57d6af58ab9f |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | Known build tool | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 28 packages
| Packages resolved | 28 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
gimp_adjust ~120
Common adjustments without discovery. action: brightness_contrast, hue_saturation, curves, desaturate, invert, blur, sharpen, noise, pixelate. mode='append' keeps GEGL actions editable; mode='merge' bakes pixels. curves is destructive and needs params={channel:'value', points:[0,0,1,1]}. Returns the installed operation description used.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| layer_id | integer | yes | – |
| mode | string | – | – |
| name | – | – | – |
| params | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_apply_filter ~179
Apply a GEGL operation to a layer. mode='merge' bakes it in; mode='append' adds a non-destructive layer effect. Examples: white outline = op="gegl:dropshadow", params={"x":0,"y":0,"radius":0,"grow-radius":8,"color":"white"}; soft shadow = {"x":0,"y":6,"radius":12,"opacity":0.4}; blur = op="gegl:gaussian-blur", params={"std-dev-x":4,"std-dev-y":4}. gimp_help("filters") lists the useful ops.
| Name | Type | Req | Description |
|---|---|---|---|
| blend_mode | – | – | – |
| layer_id | integer | yes | – |
| mode | string | – | – |
| name | – | – | – |
| op | string | yes | – |
| opacity | – | – | – |
| params | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_batch_recipe ~70
Run a recipe over every file matching input_glob, writing to output_dir. Recipes must accept input_path and output_path.
| Name | Type | Req | Description |
|---|---|---|---|
| input_glob | string | yes | – |
| name | string | yes | – |
| output_dir | string | yes | – |
| output_ext | – | – | – |
| params | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_canvas ~122
Common canvas operations without PDB discovery. action: scale, crop, resize, rotate (angle 90/180/270), flip (direction horizontal/vertical), merge_visible, flatten. Operations bake pixels or layer structure and return the installed PDB description plus final image info.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| angle | – | – | – |
| direction | – | – | – |
| height | – | – | – |
| image_id | integer | yes | – |
| merge_type | string | – | – |
| width | – | – | – |
| x | integer | – | – |
| y | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_close_image ~24
Close an image without saving.
| Name | Type | Req | Description |
|---|---|---|---|
| image_id | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_context ~74
Read a document's selected layers, selection bounds and bridge colour/brush context. Optionally select layers or present a GUI document. With multiple images pass image_id; focused-image detection is unavailable, never inferred from list order.
| Name | Type | Req | Description |
|---|---|---|---|
| image_id | – | – | – |
| present | boolean | – | – |
| selected_layer_ids | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_draw ~147
Fill or draw without PDB discovery. action: fill_layer, fill_selection, rectangle, ellipse, rectangle_outline, ellipse_outline, line. Colours use the normal CSS/#hex convention; coordinates are image pixels. Shapes clear their temporary selection. Drawing bakes pixels and returns every installed PDB operation used.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| color | string | – | – |
| height | – | – | – |
| image_id | integer | yes | – |
| layer_id | integer | yes | – |
| line_width | number | – | – |
| method | string | – | – |
| width | – | – | – |
| x | – | – | – |
| x2 | – | – | – |
| y | – | – | – |
| y2 | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_drop_snapshot ~44
Release a stored comparison snapshot. At most 16 may be retained per bridge; snapshots are also cleaned up when the bridge closes.
| Name | Type | Req | Description |
|---|---|---|---|
| snapshot_id | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_edit_batch ~146
Run 1..100 edits on one image in ONE undo group. steps=[{op:'layer'|'text'|'select'|'path'|'layer_mask'|'apply_filter', params:{...}}]. Params use the corresponding tool arguments; image_id is injected. Reference an earlier result with {'$ref':'0.id'}. Check complete/error: failure stops later steps, preserves partial work, and always closes the undo group. One Ctrl+Z in GIMP reverts it; this is not automatic rollback or programmatic undo. No edits by another bridge request interleave within the batch.
| Name | Type | Req | Description |
|---|---|---|---|
| image_id | integer | yes | – |
| steps | array | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_export ~116
Export an image; the extension chooses the format (.png .webp .jpg .tiff .bmp .gif .xcf). options are passed to the format's export procedure, e.g. {"quality": 0.85} for JPEG (0..1), {"quality": 80, "lossless": false} for WebP, {"compression": 9} for PNG. Unknown option names return the valid list.
| Name | Type | Req | Description |
|---|---|---|---|
| image_id | integer | yes | – |
| options | – | – | – |
| path | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_filter_describe ~34
Describe a GEGL operation's properties (names, types, ranges, defaults).
| Name | Type | Req | Description |
|---|---|---|---|
| op | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_filter_search ~48
Search the GEGL operations available as filters (e.g. 'blur', 'shadow', 'levels', 'noise').
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_help ~58
Read this first. How to work with GIMP through this server, by topic: start, filters, colours, text, masks, paths, layers, measure, recipes, compose, errors, or all.
| Name | Type | Req | Description |
|---|---|---|---|
| topic | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
gimp_image_info ~39
Full structure of one image: layer tree with item ids, channels, paths, selection bounds, resolution.
| Name | Type | Req | Description |
|---|---|---|---|
| image_id | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_launch ~55
Start GIMP 3 with the bridge running. mode='gui' opens the normal window; 'headless' runs gimp-console with no UI.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | – |
| wait_seconds | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_layer ~192
Layer operations. action: new (image_id, name, width, height, fill, x, y, position), set (name, visible, opacity, mode, x, y, lock), move (dx, dy), reorder (position, parent_id), duplicate, merge_down, delete, resize_to_image, scale (width, height), add_alpha, crop_to_content, info.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| dx | – | – | – |
| dy | – | – | – |
| fill | – | – | – |
| height | – | – | – |
| image_id | – | – | – |
| layer_id | – | – | – |
| local_origin | boolean | – | – |
| lock | – | – | – |
| merge_type | – | – | – |
| mode | – | – | – |
| name | – | – | – |
| opacity | – | – | – |
| parent_id | – | – | – |
| position | – | – | – |
| visible | – | – | – |
| width | – | – | – |
| x | – | – | – |
| y | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_layer_effect ~84
Edit or delete a non-destructive layer effect (ids from gimp_layer_effects). action='set' updates params/visible/opacity/blend_mode; 'delete' removes it.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| blend_mode | – | – | – |
| filter_id | integer | yes | – |
| opacity | – | – | – |
| params | – | – | – |
| visible | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_layer_effects ~31
List the non-destructive filters currently attached to a layer.
| Name | Type | Req | Description |
|---|---|---|---|
| layer_id | integer | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
gimp_layer_mask ~88
Layer masks. action='add' with type selection|alpha|alpha-transfer|white|black|copy; 'apply' bakes the mask in; 'remove' discards it; 'enable'/'disable' toggle it; 'show'/'hide' preview it.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| layer_id | integer | yes | – |
| type | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_list_fonts ~35
List installed font names, optionally filtered by a regex.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | – |
| limit | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_list_images ~25
List open images with ids, dimensions, file path, and layer count.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
gimp_list_recipes ~20
List tested multi-step recipes and their parameters.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | array | yes | – |
No examples provided.
gimp_measure ~115
Measure pixels instead of guessing from a render. kind='color' (rgba at image x,y), 'bbox' (bounding box of non-transparent pixels), 'histogram' (mean/median/std per channel), 'dominant' (top k colours). Defaults to the selected layer.
| Name | Type | Req | Description |
|---|---|---|---|
| channels | – | – | – |
| image_id | – | – | – |
| k | integer | – | – |
| kind | string | yes | – |
| layer_id | – | – | – |
| threshold | integer | – | – |
| x | – | – | – |
| y | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_new_image ~60
Create an RGB image with one layer. fill: 'transparent', 'white', 'black', 'foreground', 'background' or any colour.
| Name | Type | Req | Description |
|---|---|---|---|
| fill | string | – | – |
| height | integer | – | – |
| width | integer | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_open ~41
Open an image file (PNG, JPEG, WebP, XCF, PSD, SVG, ...) and return its structure.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_path ~148
Vector paths. action='create' (image_id, strokes=[{type:'line'|'bezier', points:[[x,y],...], closed:bool}]; bezier points after the first are control1, control2, anchor triples), 'select' (path to selection), 'stroke' (draw it on layer_id with color and width), 'fill' (fill it on layer_id), 'delete'.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | – |
| color | – | – | – |
| image_id | – | – | – |
| layer_id | – | – | – |
| name | – | – | – |
| op | string | – | – |
| path_id | – | – | – |
| strokes | – | – | – |
| width | number | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_pdb_call ~162
Call any PDB procedure by name with arguments keyed by name. Pass images/items as ids, colours as strings, enums by nick. Example: name="gimp-image-scale", args={"image": 3, "new-width": 800, "new-height": 600}; name="gimp-image-select-round-rectangle", args={"image": 3, "operation": "replace", "x": 10, "y": 10, "width": 200, "height": 80, "corner-radius-x": 20, "corner-radius-y": 20}. Use gimp_pdb_describe first when unsure.
| Name | Type | Req | Description |
|---|---|---|---|
| args | – | – | – |
| name | string | yes | – |
| undo_group | boolean | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_pdb_describe ~38
Describe a PDB procedure: arguments with types, defaults and enum choices, plus return values.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_pdb_search ~53
Search GIMP's Procedure Database by words in the procedure name (e.g. 'image scale', 'layer text', 'file png').
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
| query | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_remove_background ~115
AI subject cut-out. Runs a segmentation model on the layer and writes the result as an editable layer mask (mode='mask') or bakes it into the alpha channel (mode='apply'). Needs the optional segmentation extra. Models: u2net (default), isnet-general-use, u2net_human_seg, isnet-anime, silueta.
| Name | Type | Req | Description |
|---|---|---|---|
| alpha_matting | boolean | – | – |
| layer_id | integer | yes | – |
| mode | string | – | – |
| model | string | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_render ~108
Render an image as PNG. layer_id isolates a layer; region crops. Diagnostic overlays may include grid, layers, selection and points. points=[{"x": 100, "y": 80, "label": "target"}]. Overlays affect only the returned preview.
| Name | Type | Req | Description |
|---|---|---|---|
| grid_size | integer | – | – |
| image_id | – | – | – |
| layer_id | – | – | – |
| max_size | integer | – | – |
| overlay | – | – | – |
| points | – | – | – |
| region | – | – | – |
No output schema declared.
No examples provided.
gimp_render_compare ~82
Side-by-side render of a snapshot and the current image. panels is a comma list of before, after, diff (diff = pixel difference, black means identical).
| Name | Type | Req | Description |
|---|---|---|---|
| drop_snapshot | boolean | – | – |
| image_id | integer | yes | – |
| max_size | integer | – | – |
| panels | string | – | – |
| snapshot_id | integer | yes | – |
No output schema declared.
No examples provided.
gimp_run_python ~81
Run Python inside GIMP. Gimp, Gegl, Gio, GLib and helpers image_by_id/item_by_id/make_color are available; the namespace persists between calls. Returns stdout plus the expression value or `result`. Pass image_id to wrap the call in one undo step.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | – |
| image_id | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_run_recipe ~42
Run a recipe by name with parameters. Recipes are Python jobs executed inside GIMP with defaults applied.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | – |
| params | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_select ~176
Selection in one tool. mode: rect, ellipse (x,y,width,height), color (color, threshold 0..1, layer_id), alpha (layer_id: select the layer's opaque pixels), item (item_id: path or channel), all, none, invert, grow/shrink/feather/border (amount), bounds (just report). op: replace, add, subtract, intersect. Returns the selection bounds.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | – | – | – |
| color | – | – | – |
| height | – | – | – |
| image_id | integer | yes | – |
| item_id | – | – | – |
| layer_id | – | – | – |
| mode | string | – | – |
| op | string | – | – |
| sample_merged | boolean | – | – |
| threshold | number | – | – |
| width | – | – | – |
| x | – | – | – |
| y | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_shutdown ~44
Stop the bridge. quit_gimp defaults to True for headless sessions and False for the GUI (unsaved work is not prompted for).
| Name | Type | Req | Description |
|---|---|---|---|
| quit_gimp | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_snapshot ~39
Take a hidden snapshot of an image's current state so gimp_render_compare can show before/after later.
| Name | Type | Req | Description |
|---|---|---|---|
| image_id | integer | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
gimp_status ~31
Check whether GIMP and the agent bridge are reachable. Returns GIMP version, mode, and open images.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
gimp_text ~132
Create a text layer (image_id + text) or edit one (layer_id). size in px, font by name (gimp_list_fonts), colour, justify left|center|right|fill, spacing, optional fixed box.
| Name | Type | Req | Description |
|---|---|---|---|
| box_height | – | – | – |
| box_width | – | – | – |
| color | – | – | – |
| font | – | – | – |
| image_id | – | – | – |
| justify | – | – | – |
| layer_id | – | – | – |
| letter_spacing | – | – | – |
| line_spacing | – | – | – |
| name | – | – | – |
| size | – | – | – |
| text | – | – | – |
| x | – | – | – |
| y | – | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the GIMP Agent MCP server?
GIMP Agent MCP runs locally as a PyPI package, launched with uvx gimp-agent-mcp serve. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · gimp-agent-mcp
claude mcp add sarutobisasuke8-gimp-agent-mcp -- uvx gimp-agent-mcp serve
What is the GIMP Agent MCP server?
GIMP Agent MCP is listed in the public MCP registry as io.github.SarutobiSasuke8/gimp-agent-mcp. Edit in GIMP 3 with AI agents: live previews, grouped edits, pixel measurements and recipes. This page covers its PyPI package (gimp-agent-mcp).
Is the GIMP Agent MCP server safe to use?
GIMP Agent MCP scores 85 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the GIMP Agent MCP server expose?
GIMP Agent MCP exposes 39 tools: gimp_help, gimp_status, gimp_launch, gimp_shutdown, gimp_context, and 34 more. Their descriptions and schemas cost roughly 3,218 tokens of context every time the server is loaded.
Is the GIMP Agent MCP server still maintained?
GIMP Agent MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the GIMP Agent MCP server under?
GIMP Agent MCP declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the GIMP Agent MCP server?
VerifyMCP ran 16 checks on GIMP Agent MCP, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.