Delivers real-time control of Blackmagic ATEM switchers via MCP tools with local and remote transports, including OAuth 2.0 web access.
Configuration
View docs{
"mcpServers": {
"guycochran-atem-mcp-server": {
"url": "https://atem.yourdomain.com/mcp",
"headers": {
"PORT": "3000",
"BASE_URL": "http://localhost:PORT",
"ATEM_HOST": "ATEM IP address of the switcher",
"ATEM_PORT": "9910",
"TRANSPORT": "stdio"
}
}
}
}You can control Blackmagic ATEM video switchers with natural language by using the MCP server. It translates everyday commands into ATEM actions, enabling quick, hands‑free control from Claude AI assistants or any MCP‑compatible client. You can talk to and automate your switcher from local or remote clients with secure OAuth 2.0 access when using the HTTP transport.
You connect to your ATEM switcher through an MCP client, such as Claude Desktop, Claude AI, Claude Mobile, or Cursor, and issue plain English commands. The server receives your request, talks to Claude to translate it into MCP tool calls, and then executes those calls against your ATEM over the network. You can instruct it to switch inputs, manage transitions, start recording or streaming, adjust audio, control a Super Source layout, run macros, and more. For live productions, you typically use the HTTP transport for remote access or the stdio transport for local control.
Prerequisites: you need a computer with Node.js installed and network access to your ATEM switcher. The MCP server is written in TypeScript and ships as a runnable package.
cd atem-mcp-server
npm install
npm run buildYou can run the server locally with stdio transport or expose it remotely via HTTP. Local usage targets Claude Desktop, Cursor, and other MCP clients, while HTTP enables remote access from claude.ai, Claude Mobile, and other HTTP clients. The server can auto-connect to your ATEM when you provide the ATEM host and port via environment variables.
Remote access uses OAuth 2.0 for authentication. You can enable a public URL via a Cloudflare Tunnel to provide a permanent endpoint without exposing local network details. If you enable the Cloudflare integration, ensure you configure your tunnel and DNS as described to maintain reliable access.
If the MCP server does not respond, verify ATEM connectivity, ensure the ATEM host is reachable on the network, and confirm the MCP server started without errors. Check logs for startup messages and transport status. For remote access issues, verify OAuth endpoints are reachable and the public URL matches the configured BASE_URL.
For instant results during a live show, use clients that execute MCP tool calls immediately, such as claude.ai, Claude Mobile, or Claude Desktop. Keep a hardware backup on hand in case of network issues, and use concise, direct commands to minimize latency.
A Cloudflare Tunnel can provide a stable public URL for the MCP HTTP endpoint. Install cloudflared, authenticate, create a tunnel, and route DNS to your endpoint. Run the MCP server with TRANSPORT=http and BASE_URL set to your tunnel URL. You can run the tunnel in the foreground or as a background service.
Basic switching: Put camera 1 on program; Set preview to camera 3 and dissolve; Cut to color bars.
The server supports all ATEM models via the atem-connection library, including Mini, Pro, ISO variants, SDI models, and larger production switchers. It translates commands into ATEM protocol calls and mirrors changes in real time across connected clients.
This server is implemented in TypeScript and exposes a set of MCP tools that correspond to ATEM operations such as program/preview switching, transitions, routing, macros, recording, streaming, Super Source, and audio control.
The server uses the atem-connection library to talk to ATEM devices over UDP, wrapping library methods into MCP tools that clients can call. It supports two transport modes: stdio for local/desktop clients and HTTP for remote access with OAuth 2.0.
For live shows, ensure you have network reliability and consider a hardware fallback in case of network issues. Use environment variables to configure automatic connections and secure your remote endpoints with proper authentication.
Connect to an ATEM switcher by IP
Disconnect from the ATEM
Get model, inputs, program/preview state
Set program (live) input
Set preview (next) input
Hard cut transition
Auto transition (dissolve/wipe/etc.)
Toggle Fade to Black
Set preview + auto transition in one call
Set mix, dip, wipe, DVE, or stinger
Set transition duration in frames
Manual T-bar position (0.0–1.0)
Get current transition settings
Route input to aux output
Get current aux routing
Downstream keyer on/off air
Auto transition for DSK
Set DSK fill and key sources
Upstream keyer on/off air
Set USK fill and cut sources
Run a macro by index
Stop running macro
Continue paused macro
List all defined macros
Start recording
Stop recording
Start streaming
Stop streaming
Get recording/streaming status
Get all Super Source box positions and settings
Configure a single Super Source box
Set Super Source layout presets
Configure art fill/cut source and borders
Configure border settings for Super Source
2x2 gallery layout; prioritize active speakers
Cut to current active speaker based on audio levels
Start auto-switching modes (program, ssrc, host_ssrc)
Stop auto-switching mode
Check if auto-switch is running and view stats
Save current Super Source layout as a named look
Load a saved look and apply it with optional overrides
List all saved looks with descriptions and box counts
Delete a saved look
Set input gain, fader, balance, and mix mode (Fairlight or Classic)
Set master output gain/fader
Get full audio mixer state
Set a single EQ band on an input for Fairlight models
Apply EQ preset: vocal, podcast, music, de_mud, or flat
Configure the Fairlight compressor parameters
Configure the Fairlight limiter parameters
Configure the Fairlight noise gate/expander