Kitsu MCP Server

Kitsu MCP Server

Enables LLMs to interact with Kitsu production tracker via its Zou API, providing tools for project management, asset and task operations, and cross-platform migration support.

Category
Visit Server

README

Kitsu MCP server

Connect any AI agent to Kitsu

A Model Context Protocol server that gives LLM agents (Claude Desktop, Claude Code, Cursor, …) access to Kitsu — CGWire's open-source production tracker — through its Zou API and the official Gazu SDK.

30 tools, one write family, a dry_run safety gate on every write. Tested live against a self-hosted Kitsu — including whole-project ShotGrid ↔ Kitsu and ftrack → Kitsu migrations carrying structure + statuses + casting + thumbnails + video version media (multiple versions) + notes + custom fields, verified by read-back and torn down with remove_project.

Part of a small tracker-MCP trio — see Migrating projects between platforms.

The 30 tools

Generic power tools (full reach over the Zou REST API):

  • get — GET any Zou route (the escape hatch)
  • create · update · delete — write to any Zou model collection
  • remove_project — delete a project (Kitsu requires close→force; the generic delete can't)

Media / versions (a "version" = a preview file on a task; thumbnails derive from previews):

  • upload_preview — upload an image/movie as a version on a task (+ optionally set the entity thumbnail)
  • download_preview — pull a preview's media (image or movie) to disk
  • list_previews — versions on a task
  • log_time — log time on a task (the person must be assigned to it — a Kitsu rule)

Schema & discovery (Kitsu is configurable — learn the site first):

  • list_projects
  • list_asset_types · list_task_types · list_task_statuses (with workflow flags) · list_departments
  • list_metadata_descriptors · add_metadata_descriptor · set_metadata — Kitsu's schema-as-data custom fields (for_client + per-department); define a field and set values (migration carries custom fields)

Typed convenience (structure, creation + the review loop):

  • list_assets · list_shots · list_sequences · list_tasks
  • new_project · new_sequence · new_asset · new_shot · new_task (entity-aware type resolution)
  • set_task_status — post a comment that sets a task's status (the Kitsu review loop)
  • set_casting — cast assets into a shot (breakdown)
  • project_summary — a normalized project snapshot (counts + per-shot cast/status/thumbnail, canonical statuses) for cross-tracker verify/diff
  • whoami

The new_* + media + set_casting tools make Kitsu a viable migration target — read structure, statuses, casting, thumbnails and version media from another tracker (e.g. shotgrid-mcp) and recreate the project here. See Migrating projects between platforms.

Dry-run modes

Every write takes dry_run (default false = perform the write). create / update / delete / set_task_status support two preview levels:

  • dry_run="plan" (or true) — client-side echo of the intent. No server contact.
  • dry_run="preflight" — a real dry run: resolves every reference against live data, validates (does the parent exist? is the status name valid?), returns a before→after diff for updates, and a verdict of ok / would_failwithout writing anything.

Set MCP_PLAN_LOG=/path/plan.jsonl and every plan/preflight is appended as a line, so a whole dry-run migration produces a reviewable plan file. (Other write tools take dry_run as a plain boolean.)

Install

pip install -r requirements.txt        # fastmcp, gazu

Configure (credentials)

var value
KITSU_URL your Kitsu API base, including /api — e.g. https://your.kitsu.host/api
KITSU_EMAIL a Kitsu user (a dedicated bot account is recommended)
KITSU_PASSWORD that user's password

For local dev you can drop them in a .env next to server.py (gitignored — see .env.example).

Run / wire into a client

python3 server.py        # stdio transport

Claude Code:

claude mcp add kitsu \
  -e KITSU_URL=https://your.kitsu.host/api \
  -e KITSU_EMAIL=bot@studio.com -e KITSU_PASSWORD=•••• \
  -- python3 /path/to/kitsu-mcp/server.py

Examples (what the agent calls)

get("data/projects")                                   # raw route, full reach
list_shots("<project_id>")                             # typed convenience
list_task_statuses()                                   # workflow-as-data (is_done/for_client/…)
new_asset("<project_id>", "Character", "Hero")         # asset-type name resolved for you
set_task_status("<task_id>", "wip", "Starting blocking")
create("shots", {"project_id":"…","name":"sh010"}, dry_run=True)   # preview, commit nothing

Migrating projects between platforms

This is one of three sibling tracker MCPs, each exposing the same shape (generic CRUD + schema + typed convenience, with a dry_run gate):

Tracker MCP
ShotGrid / Flow Production Tracking huikku/shotgrid-mcp
ftrack Studio huikku/ftrack-mcp
Kitsu (CGWire) this repo

📊 See COMPARISON.md for a side-by-side of the three trackers (data model, status vocabularies) and the migration incompatibilities to know about (casting can't round-trip through ftrack; statuses must be mapped; Kitsu projects need remove_project to delete; heavy publish bytes stay on storage — only references carry).

🧪 See TESTING.md for how these servers are validated — live round-trip tests, two-level dry-run checks, and the cross-tracker migration matrix (including what is not yet covered, stated plainly).

Because all three speak the same production model (Project → Sequence/Asset → Shot → Task → Version/Status) and present a uniform tool surface, an agent with two of them loaded can migrate a project from one platform to another — read the structure from the source tracker, map the schema, and recreate it in the target:

"Read every sequence, asset, shot and task from the ShotGrid project, then recreate them in Kitsu."

The agent calls find/list_* on the source MCP and create/new_* on the target — no bespoke migration script. (This trio grew out of exactly that exercise: a single project copied across ShotGrid, ftrack and Kitsu to prove the tracker-agnostic, agent-native approach.)

Credits

MIT licensed.


Built by John Huikku · alienrobot.com

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured