Skip to main content
Glama

Krita MCP v4

This v4 implementation is built from nanayax3/krita-mcp.

This canonical NixOS/Krita 6 bridge is a strict protocol-v4 implementation. It contains:

  • a PyQt6 Krita plugin with loopback HTTP endpoints;

  • an asynchronous, typed FastMCP 4.0.3 server;

  • contract and security tests that run without importing Krita.

There is no v3 or pixel-paint compatibility surface.

Install

Copy krita-plugin/kritamcp/ and krita-plugin/kritamcp.desktop into Krita's Python plugin directory, enable “Krita MCP Bridge” in the Python Plugin Manager, and restart Krita. Install the wrapper environment with:

python -m venv .venv
.venv/bin/pip install -r requirements.txt

Configure the MCP client to run this repository's server.py.

Related MCP server: Krita Illustration MCP

Security and transport

The plugin binds only to 127.0.0.1:5678. At startup it creates a random 256-bit bearer token at $XDG_RUNTIME_DIR/krita-mcp/token with mode 0600. The token is required for /v4/capabilities and /v4/command and is never logged. /health is the only unauthenticated endpoint.

The bridge validates request size, action names, queue depth, revisions, request-id retries, stroke batch limits, and allowlisted resolved paths. One session owns the writer lease; disconnect or timeout releases it without closing the document.

Protocol

See docs/API.md. The command envelope contains protocol version, request/session IDs, optional document ID, expected revision for every write, an action, and parameters. Mutating replies are cached by request ID within the session, making retries idempotent.

Documents created by v4 are RGBA/U16, 300 PPI, using sRGB-elle-V2-srgbtrc.icc. KRA save and PNG export are separate operations. Projection capture explicitly converts to 8-bit sRGB.

Painting accepts one native paintLine per line stroke or one native cubic paintPath per curved stroke. Every stroke supplies complete brush state. Line pressure is supported; cubic pressure, tilt, rotation, and speed are rejected. Candidate transactions use ephemeral paint layers and never snapshot a full U16 canvas.

Verification

python -m unittest discover -s tests -v

Headless tests cover schemas, authentication, idempotency, revision conflicts, path/symlink traversal, resource identity, unsupported sensors, limits, transaction ownership, and source-level native painting invariants. Live Krita verification requires the user-started application and plugin.

License

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI-driven 2D drawing and animation in Blender, allowing MCP clients to create Grease Pencil drawings, keyframes, materials, and renders directly inside a running Blender instance.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI models to directly control a local Krita instance by inspecting real canvas previews, managing documents and layers, importing and masking generated images, inpainting, painting with the brush engine, checkpointing, and exporting KRA/PNG files.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants to create, paint, edit, inspect, and export images in a running GIMP 3.2 instance via MCP.
      178 PyPI
      GPL 3.0
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables LLM-driven painting agents to control Krita through MCP tools, iteratively reconstructing a target image by observing canvas snapshots, diff heatmaps, and session state. It exposes observation, drawing, brush, color, layer, selection, vector, filter, document I/O, and session tools for closed-loop artwork generation.
      MIT