CreatorStudio MCP Server
Controls a real OBS Studio instance over the obs-websocket v5 protocol, issuing commands such as StartRecord, StopRecord, and SetCurrentProgramScene so spoken studio commands (roll a take, switch to the intro scene, stop recording) actually drive live hardware, with a per-call timeout so a frozen OBS can't break the latency budget.
Click on "Deploy 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., "@CreatorStudio MCP Serverswitch to the main scene and start recording"
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.
CreatorStudio: hands-free voice control for a one-person studio
Track: Alexa+ · Mini challenges: AWS Builder, Open Source · License: MIT
A solo creator is the camera operator, lighting tech, audio engineer, director and streamer all at once. If your hands are on the camera (or you are on camera), you cannot click anything. CreatorStudio turns a spoken sentence into the exact sequence of studio operations, and refuses the dangerous ones while you are live.
CreatorStudio is built as an Alexa+ add-on: a self-hosted MCP server (Model Context Protocol spec 2025-11-25+, Streamable HTTP) that exposes the studio as 11 well-typed tools, plus an Alexa+ simulator web app so anyone can try the experience without hardware.

Try it in 60 seconds
npm ci # or: pnpm install (the repo ships a lockfile both can use)
npm run dev # http://localhost:8787Dependency note:
@modelcontextprotocol/sdkdoes not declare all of its runtime imports (@hono/node-server,content-type, …), so a strict, isolatednode_modules(pnpm's default) fails at import time. The repo's.npmrcpinsnode-linker=hoisted, and@hono/node-serverandhonoare listed explicitly. This is documented indocs/FRICTION_LOG.md.
Then open http://localhost:8787/ and press one of the suggestion chips (or hold the mic button and speak, in Chrome/Edge).
Run the test suite and the MCP wire-level smoke test:
npm test # 18 unit + in-memory MCP protocol tests
npm run smoke # speaks MCP over HTTP against a running serverRelated MCP server: DualStream MCP Server
How it maps to Alexa+
Alexa+ track requirement | Where it lives in this repo |
Self-hosted MCP server |
|
Streamable HTTP transport (spec 2025-11-25+) |
|
Tools actually called in code |
|
Simulated Alexa+ experience |
|
Low-latency tool round-trips | every tool is synchronous; measured round-trip is single-digit milliseconds ( |
Safety on a voice surface |
|
Real hardware, not a mock |
|
The tools
Tool | What it does | Safety |
| one-call read of the room (recording, scene, light, mic, stream, cues) | read-only |
| rolls a take; | warns if the mic is muted |
| saves the take and advances the take counter | needs |
| intro / main / b-roll / outro + the right key light for the shot | needs |
| absolute or relative ("a bit darker") key-light level + warmth | needs |
| pre-flight checklist (light, mic, disk, camera) | read-only |
| timestamped highlight markers for the editor | warns when not recording |
| topic → timed run sheet | read-only |
| go live to YouTube/Twitch/… | blocks a second go-live |
| end the stream, report the cues collected | needs |
| mute / unmute | — |
Plus the MCP prompt creatorstudio.plan_utterance, a few-shot router any host model can reuse.
Architecture
voice utterance
│
┌────────────────▼────────────────┐ ┌───────────────────────────────┐
│ Alexa+ (or the simulator page) │ MCP │ CreatorStudio MCP server │
│ tools/list → tools/call ├───────►│ Streamable HTTP /mcp │
└────────────────┬────────────────┘ │ 11 studio.* tools + 1 prompt │
│ spoken reply + card └──────────────┬────────────────┘
▼ │ guard → mutate → journal
rich responses ┌───────▼────────┐
│ StudioDriver │──► OBS Studio (obs-websocket v5)
│ state machine │ StartRecord / StopRecord /
└────────────────┘ SetCurrentProgramSceneReal OBS control
OBS Studio ships a WebSocket server (Tools → WebSocket Server Settings → Enable, port 4455). Point CreatorStudio at it and voice commands reach real hardware:
STUDIO_MODE=live OBS_URL=ws://127.0.0.1:4455 OBS_PASSWORD=yourpass npm run dev"roll a take on the intro scene" issues
StartRecordandSetCurrentProgramScene(Intro).Driver calls are dispatched, not awaited — the spoken reply returns in milliseconds and the driver enforces its own timeout (
OBS_TIMEOUT_MS, default 400 ms), so a frozen OBS can never break the Alexa+ latency budget.If OBS is unreachable the outcome is logged as
skipped(GET /healthz→lastOutcome) and the state machine stays consistent.No OBS on the demo machine?
npm run obs:stubstarts a fake obs-websocket v5 endpoint (scripts/fake-obs.mjs). Verified end to end: stub log showsStartRecord,SetCurrentProgramScene,StopRecord, and/healthzreports"StopRecord ok", "skipped":false.src/core/— pure domain logic (state, guard, tool implementations, intent router). No I/O, so all of it is unit tested.src/mcp/— the MCP surface. Speech lives incontent, structured payloads (cards) instructuredContent.src/index.ts— HTTP host: MCP endpoints, a small JSON API for the simulator, static UI.public/— the Alexa+ simulator (no build step, no framework).
Dry run by default
STUDIO_MODE=dry_run (the default) journals what would happen without touching hardware;
STUDIO_MODE=live applies it. A mis-heard word should never take a studio off air.
Configuration
Env var | Default | Meaning |
|
| HTTP port |
| unset | e.g. |
| unset | obs-websocket password |
|
| hard per-call timeout for OBS |
|
|
|
| auto | override the static UI directory |
|
| CORS origin for the simulator / MCP hosts |
Deploy
Render / Railway / Fly (Node server): build npm ci && npm run build, start npm start.
GET /healthz is the health check. The MCP endpoint is then https://<your-host>/mcp.
Local tunnel for the Alexa+ console: npx localtunnel --port 8787 (or ngrok) and register
https://<tunnel>/mcp as a Streamable HTTP MCP endpoint with no auth for the demo, or bearer auth via
STUDIO_TOKEN in production.
Claude Desktop / any MCP client (stdio-free):
{
"mcpServers": {
"creatorstudio": { "type": "http", "url": "http://localhost:8787/mcp" }
}
}Tests
test/studio.test.ts state machine, guard rules, every tool, the intent router (13)
test/mcp.test.ts real MCP handshake over InMemoryTransport, schemas, prompts (5)
test/driver.test.ts OBS dispatch, dry-run isolation, frozen-device latency proof (4)
scripts/mcp-smoke.mjs real Streamable HTTP session with the official SDK client
scripts/fake-obs.mjs fake obs-websocket v5 server for offline hardware checksWhat I would build next
More drivers behind the same
LiveDriverseam: Elgato Key Light HTTP API, Restream/YouTube, Blackmagic ATEM — lighting is the one command that still only lives in our state machine.Account linking so one Alexa+ install controls several studios.
Latency-aware batching: two spoken steps ("intro, warm light") in a single tool call.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Control evmux live streaming studios: scenes, layers, participants, media, banners and broadcast.
Manage 24/7 live streams, media, playback queues, schedules, and multistreaming from AI assistants.
Edit video by talking to your AI — search footage, cut timelines, apply effects, add captions.
- HiroskaOAuthcom.hiroska
AI video studio: generate with 80+ AI models, edit on a timeline and export 4K, from an assistant.
1
Related MCP Servers
- AlicenseBqualityAmaintenanceAI-powered stream and recording control for OBS Studio through the Model Context Protocol10012Apache 2.0
- AlicenseAqualityCmaintenanceEnables AI assistants to control DualStream streaming studio: switch scenes, compose layouts, manage widgets, and react to stream events.30Apache 2.0
- AlicenseBqualityBmaintenanceEnables AI assistants to control and automate OBS Studio via natural language, covering scenes, sources, audio, recording, streaming, transitions, filters, media playback, diagnostics, and multi-step workflows over the OBS WebSocket protocol.89MIT
- AlicenseBqualityBmaintenanceEnables MCP clients to control OBS Studio through an inspectable WebSocket interface. Provides 155 tools for managing scenes, sources, audio, transitions, filters, recording, and streaming through natural language.155293 npm3GPL 2.0