dcc-mcp-gimp
Production-oriented GIMP 3 adapter for the DCC Model Context Protocol ecosystem.
Illustrative workflow generated with OpenAI ImageGen from the retained source in docs/images/sources; it is not a GIMP screenshot or host-validation artifact.
The adapter keeps GIMP API ownership inside a persistent GIMP 3 Python plug-in. An authenticated loopback JSON-lines bridge accepts a fixed catalog of typed commands, bounds connections, requests, responses, queue depth, image size, layer traversal, paths, file size, and execution time, then marshals every host operation onto GIMP's GLib main thread. It exposes no arbitrary Python, Script-Fu, action, or PDB-procedure execution.
Install
pip install dcc-mcp-gimp
dcc-mcp-gimp-install
dcc-mcp-gimp-doctor
Set at least one allowed file root before launching GIMP and the MCP server:
export DCC_MCP_GIMP_ALLOWED_ROOTS=/absolute/project/root
dcc-mcp-gimp
On Windows, separate multiple roots with ;; on POSIX, use :. The plug-in and
client share a per-user token at ~/.dcc-mcp/gimp-bridge-token by default. An
explicit token may instead be supplied through DCC_MCP_GIMP_BRIDGE_TOKEN and
must contain at least 32 characters. Token values are never returned by status
or diagnostics.
Restart GIMP after installation, then invoke the registered persistent
python-fu-dcc-mcp-gimp-bridge procedure. The MCP endpoint defaults to
http://127.0.0.1:8767/mcp; the plug-in bridge defaults to
127.0.0.1:3848.
Typed capabilities
- Inspect bridge readiness, open images, active image metadata, and recursive layer trees.
- Create or open bounded images under configured roots.
- Create/select/fill/rename/show/hide/lock/fade/delete layers through typed parameters.
- Preserve layered work as XCF and export PNG, JPEG, WebP, or TIFF with byte counts and SHA-256 digests.
- Flatten only with
confirm=true; overwrite only withoverwrite=true. - Close only bridge-opened displays, and require
discard_changes=truefor dirty images.
GIMP image and layer IDs are process-local and must be rediscovered after a restart. File paths outside configured roots are rejected; paths attached to untrusted user images are redacted to a basename.
Architecture and validation
The GIMP host remains the sole owner of image state and main-thread affinity. The Python package owns MCP lifecycle, typed Skill declarations, installation, diagnostics, and the authenticated bridge client. No generic code evaluation crosses this boundary.
python -m pip install -e ".[dev]"
python -m pytest
python -m ruff check src tests tools
python tools/lint_skills.py
python -m build
python -m twine check dist/*
The real-host acceptance script is tests/live_gimp_smoke.py. It creates a
bounded layered image, exercises all typed commands, saves XCF, exports PNG,
verifies both artifacts, reopens the XCF, and cleans up only bridge-owned
displays.
Official references: GIMP 3 Python plug-ins, GIMP Image API, and GIMP file save/export API.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dcc_mcp_gimp-0.3.0.tar.gz.
File metadata
- Download URL: dcc_mcp_gimp-0.3.0.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2e1aa1a158d867d987d19d5be848c3252aed97b73cac14ce316390a42d0a878c
|
|
| MD5 |
1deada95b6acbd266256b0c57947d594
|
|
| BLAKE2b-256 |
afa189f36f8eab7235f16f5014110a49d4517c48531b5d02cc7244991b40f4d0
|
Provenance
The following attestation bundles were made for dcc_mcp_gimp-0.3.0.tar.gz:
Publisher:
release.yml on dcc-mcp/dcc-mcp-gimp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_gimp-0.3.0.tar.gz -
Subject digest:
2e1aa1a158d867d987d19d5be848c3252aed97b73cac14ce316390a42d0a878c - Sigstore transparency entry: 2437564895
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-gimp@4ea18202bf5f7c1708ad770fc870b735f5706bfc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/dcc-mcp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ea18202bf5f7c1708ad770fc870b735f5706bfc -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_gimp-0.3.0-py3-none-any.whl.
File metadata
- Download URL: dcc_mcp_gimp-0.3.0-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e03544e7a2ed04b658c9e1fd14c58209f0c1f1ae5159d06e267a6f280c497186
|
|
| MD5 |
da129b950a05cab75c13f6eea105aab1
|
|
| BLAKE2b-256 |
d4a4ac98c7af64baedbb60c9c06cb4ccb8e698e158477ea0f0ddefc7d6d3ed78
|
Provenance
The following attestation bundles were made for dcc_mcp_gimp-0.3.0-py3-none-any.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-gimp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_gimp-0.3.0-py3-none-any.whl -
Subject digest:
e03544e7a2ed04b658c9e1fd14c58209f0c1f1ae5159d06e267a6f280c497186 - Sigstore transparency entry: 2437564940
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-gimp@4ea18202bf5f7c1708ad770fc870b735f5706bfc -
Branch / Tag:
refs/heads/main - Owner: https://github.com/dcc-mcp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4ea18202bf5f7c1708ad770fc870b735f5706bfc -
Trigger Event:
push
-
Statement type: