studio-mcp
This server provides an LLM agent-driven pipeline for film production, managing everything from initial planning and look development to rendering, quality control, and final assembly. It offers 14 tools across these areas:
Plan & Lock
plan_shots: Convert a plain-language brief into a structured shot plan (type, move, duration, action, etc.)lock_campaign: Define and lock the campaign's visual style (aspect ratio, film stock, color palette, elements, audio rules) for consistency across shotspalette_from_image: Extract a HEX palette from a moodboard or stillreference_prompt: Deconstruct a reference image into a ready-to-use prompt
Generate & QC
gen_still: Generate a still image using a 6-layer promptqc_still: Automated style-drift QC scoring intent, look, and character (0–100) with a pass/fail verdict and fix suggestionanimate: Convert a still to video (img2vid) with optional direction or hero prompttrain_character: Create a character model from 3–5 photosupscale: Final-polish upscaling for images or video
Assemble & Utility
assemble: Build a cut manifest (shot order, durations, audio notes)cut: Concatenate rendered clips into a single mp4 via ffmpeglist_models: List available image/video models for routingproject_status: Report which pipeline stages (plan/lock/QC/manifest) are complete for a project
Grounded Knowledge
craft_lookup: Query a cited craft knowledge base for expert advice on stocks, lenses, lighting, and prompt structure
The server is LLM-provider agnostic (any OpenAI-compatible endpoint) and can be driven via direct tool calls, a web-based grading bay console, or an orchestration graph with retries and human gates.
Enables the MCP server to use OpenAI's models as the LLM backend for planning, QC, and assembly tools.
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., "@studio-mcpPlan 5 shots for a coastal slow-burn film project 'MARÉA'"
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.
studio-mcp
The block-method film pipeline as agent-callable MCP tools.
An MCP server that lets an LLM agent drive a full brief → shots → render → QC → cut
workflow by calling tools — instead of clicking through generation UIs by hand.
Plan-then-generate, never reverse: every shot is planned (type, move, duration)
before any pixel is made, and every still is QC'd against a locked look so the
piece stays on-model.

Above: one shot from the brief "MARÉA — wordless coastal slow-burn" — planned, rendered on Higgsfield Soul Cinema at 21:9, and passed by the style-drift QC (intent 80 / look 84 / character 90). The agent re-rolls anything that fails.
Why
Single-tool MCP servers (one model, one call) are common. This is the layer above: it orchestrates across your generation stack with a block-method planner and a style-drift QC gate — the part nobody ships.
Related MCP server: atsurae
Three ways to drive it
As an MCP server — connect to Claude Desktop / Claude Code and the LLM calls the 14 tools directly (stdio, or
--transport streamable-httpfor web clients).The web console — a cinematic "grading bay" UI over the server: browse instruments, invoke them from schema-driven forms, stream long renders, and brief the Director (an LLM that drives the instruments for you). Live demo: https://console-pied-eight.vercel.app ·
console/.The orchestration graph — Planner → Generation ⇄ QC → Assembly as an agent graph with retries, human gates, and replayable per-run traces (
studio_mcp/orchestration/).
Plus Langfuse tracing + an offline benchmark suite for evaluating the pipeline
(eval/). CI runs tests on 3.10–3.12 and builds the package on every push.
Tools (14)
Plan & lock
Tool | What it does |
| brief → block-method shot plan (type · move · duration · lighting · lens · time · hold · vibe) |
| lock the look once — every shot's prompt inherits it |
| extract a HEX palette (dominant/secondary/accent) from a moodboard/still |
| break a reference image into a ready 6-layer prompt (build from a ref) |
Render & QC (via Higgsfield CLI)
Tool | What it does |
| 6-layer Soul prompt → render; |
| vision style-drift QC vs shot intent + lock; pass/fail + fix_suggestion |
| img2vid — |
| soul-id self-clone from 3–5 photos |
| final-polish image/video upscale |
Assemble & utility
Tool | What it does |
| ffmpeg-concat the rendered clips into one |
| cut manifest — order, durations, diegetic-audio notes |
| list available image/video models so an agent can route per shot |
| what stages exist for a project |
Ground (via creative-rag)
Tool | What it does |
| query the craft knowledge base for a grounded, cited, verified answer (stocks/lenses/lighting/prompt structure) — use while planning/locking so prompts trace to the real library, not generic guesses. Needs creative-rag running ( |
Integration — the studio trio
studio-mcp is one of three interlocking pieces; see INTEGRATION.md.
ai-content-pipelineskill — the method (block plan → lock → stills → animate → cut). It maps each stage to the studio-mcp tool that executes it and callscraft_lookupto ground prompts.studio-mcp (this repo) — the tools that execute the method.
creative-rag — the cited craft KB behind
craft_lookup.
Smoke-test the full chain (skill method → craft_lookup → creative-rag):
python scripts/smoke_chain.py # needs creative-rag on :8000Provider-agnostic
The LLM layer talks to any OpenAI-compatible endpoint — Anthropic, OpenRouter, OpenAI, or a local server — chosen entirely through env config. No provider is hard-coded.
cp .env.example .env # set STUDIO_LLM_BASE_URL / _MODEL / _API_KEYInstall
python3 -m venv .venv && source .venv/bin/activate
pip install -e .Run
studio-mcp # stdio MCP serverRegister with an MCP client (e.g. Claude Code / Claude Desktop):
{
"mcpServers": {
"studio": {
"command": "/path/to/studio-mcp/.venv/bin/studio-mcp",
"env": { "STUDIO_LLM_API_KEY": "sk-..." }
}
}
}Example flow
plan_shots("MARÉA — wordless coastal slow-burn, 90s", project="marea")
lock_campaign("marea", aspect="21:9", day_stock="Kodak 500T, soft handheld",
hex_palette=["#1b2a3a","#c8a15a"], elements=["the woman in grey"],
audio="diegetic SFX only, no music")
# render a still (v1.1) → then:
qc_still("marea", image="assets/shot1.png", shot_id=1) # pass/fail + fix
assemble("marea") # cut manifestState lives under STUDIO_ROOT (default ~/studio-projects/<project>/) as plain
JSON — human-inspectable, and a clean contract a future console can read.
License
MIT
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/rishbjain1/studio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server