home / mcp / atem mcp server

ATEM MCP Server

Delivers real-time control of Blackmagic ATEM switchers via MCP tools with local and remote transports, including OAuth 2.0 web access.

Installation
Add the following to your MCP client configuration file.

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.

How to use

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.

How to install

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 build

Configuration and usage notes

You 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.

Security and remote access

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.

Troubleshooting

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.

Live show usage tips

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.

Notes on deployment with Cloudflare Tunnel

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.

Pre-show and live‑production checklist

    Examples of practical commands

    Basic switching: Put camera 1 on program; Set preview to camera 3 and dissolve; Cut to color bars.

    Notes on available models and compatibility

    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.

    Languages and tools overview

    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.

    Architecture overview

    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.

    Security and uptime notes

    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.

    Available tools

    aton_connect

    Connect to an ATEM switcher by IP

    atem_disconnect

    Disconnect from the ATEM

    atem_get_status

    Get model, inputs, program/preview state

    atem_set_program

    Set program (live) input

    atem_set_preview

    Set preview (next) input

    atem_cut

    Hard cut transition

    atem_auto_transition

    Auto transition (dissolve/wipe/etc.)

    atem_fade_to_black

    Toggle Fade to Black

    atem_preview_and_auto

    Set preview + auto transition in one call

    atem_set_transition_style

    Set mix, dip, wipe, DVE, or stinger

    atem_set_transition_rate

    Set transition duration in frames

    atem_set_transition_position

    Manual T-bar position (0.0–1.0)

    atem_get_transition_state

    Get current transition settings

    atem_set_aux_source

    Route input to aux output

    atem_get_aux_source

    Get current aux routing

    atem_set_dsk_on_air

    Downstream keyer on/off air

    atem_auto_dsk

    Auto transition for DSK

    atem_set_dsk_sources

    Set DSK fill and key sources

    atem_set_usk_on_air

    Upstream keyer on/off air

    atem_set_usk_sources

    Set USK fill and cut sources

    atem_macro_run

    Run a macro by index

    atem_macro_stop

    Stop running macro

    atem_macro_continue

    Continue paused macro

    atem_list_macros

    List all defined macros

    atem_start_recording

    Start recording

    atem_stop_recording

    Stop recording

    atem_start_streaming

    Start streaming

    atem_stop_streaming

    Stop streaming

    atem_get_recording_status

    Get recording/streaming status

    atem_get_supersource_state

    Get all Super Source box positions and settings

    atem_set_supersource_box

    Configure a single Super Source box

    atem_set_supersource_layout

    Set Super Source layout presets

    atem_set_supersource_art

    Configure art fill/cut source and borders

    atem_set_supersource_border

    Configure border settings for Super Source

    atem_go_gallery

    2x2 gallery layout; prioritize active speakers

    atem_cut_to_active_speaker

    Cut to current active speaker based on audio levels

    atem_auto_switch_on

    Start auto-switching modes (program, ssrc, host_ssrc)

    atem_auto_switch_off

    Stop auto-switching mode

    atem_get_auto_switch_status

    Check if auto-switch is running and view stats

    atem_save_look

    Save current Super Source layout as a named look

    atem_load_look

    Load a saved look and apply it with optional overrides

    atem_list_looks

    List all saved looks with descriptions and box counts

    atem_delete_look

    Delete a saved look

    atem_set_audio_mixer_input

    Set input gain, fader, balance, and mix mode (Fairlight or Classic)

    atem_set_audio_master_output

    Set master output gain/fader

    atem_get_audio_state

    Get full audio mixer state

    atem_set_fairlight_eq

    Set a single EQ band on an input for Fairlight models

    atem_set_fairlight_eq_preset

    Apply EQ preset: vocal, podcast, music, de_mud, or flat

    atem_set_fairlight_compressor

    Configure the Fairlight compressor parameters

    atem_set_fairlight_limiter

    Configure the Fairlight limiter parameters

    atem_set_fairlight_gate

    Configure the Fairlight noise gate/expander