studio-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| STUDIO_ROOT | No | Root directory for project state files. | ~/studio-projects |
| STUDIO_LLM_MODEL | No | Model name to use (e.g., gpt-4). | gpt-4 |
| STUDIO_LLM_API_KEY | Yes | Your API key for the OpenAI-compatible LLM endpoint. | |
| STUDIO_LLM_BASE_URL | No | Base URL for the LLM endpoint (e.g., https://api.openai.com/v1). | https://api.openai.com/v1 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| plan_shotsA | Turn a brief into a structured block-method shot plan. Plans every shot (type, camera move, duration, action) before any pixel is generated. Saves to the project's plan.json and returns it. Args: brief: plain-language description of the spot/scene. project: project name (scopes all state, e.g. "marea"). n_shots: target number of shots. |
| lock_campaignA | Lock the campaign look so every shot stays on-model. Args: project: project name. aspect: aspect ratio, e.g. "2.39:1" or "9:16". stock: film stock / look, e.g. "Kodak Vision3 500T, soft handheld". hex_palette: HEX colors defining the palette, e.g. ["#1b2a3a", "#c8a15a"]. elements: recurring elements/characters to keep consistent. audio: audio rule (default: diegetic SFX, no music). |
| qc_stillA | Style-drift QC on a generated still against the shot intent + locked look. Vision model scores intent / look / character (0-100). Pass requires every score >= threshold. Saves the verdict and returns it. An agent re-rolls the still when pass is false, using fix_suggestion. Args: project: project name. image: local path or http URL of the still to review. shot_id: which shot in plan.json this still is for. threshold: minimum passing score per dimension. |
| assembleA | Build the cut manifest — shot order, durations, and audio notes. Uses the plan for order/timing. If clips (e.g. [{"shot_id":1,"path":"..."}]) are provided (v1.1+), they are attached per shot. The actual NLE cut stays manual in v1; this is the edit blueprint. Args: project: project name. clips: optional rendered-clip refs keyed by shot_id. |
| project_statusA | Report what stages exist for a project (plan / lock / QC / manifest). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool has a distinct purpose: assemble builds the cut manifest, lock_campaign sets the visual look, plan_shots creates the shot plan, project_status reports stage completion, and qc_still performs quality control. There is no overlap or ambiguity between them.
Tool names are not perfectly consistent: 'assemble' is a bare verb, while others follow verb_noun (lock_campaign, plan_shots) or noun_noun (project_status) patterns, and 'qc_still' uses an abbreviation. The naming is understandable but lacks a uniform convention.
With 5 tools, the count is appropriate for the domain of film production planning and quality control. It covers the main workflow stages without being too heavy or too sparse, though a few more specialized tools could be added later.
The tool set covers the core stages: planning, look locking, assembly, QC, and status tracking. Notable gaps like actual rendering or exporting are intentionally omitted per v1 scope. The surface is fairly complete for its intended purpose.