ATEM

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

2

GitHub Stars

typescript

Language

4 months ago

First Indexed

2 months ago

Catalog Refreshed

Documentation & install

Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.

Installation

Add the following to your MCP client configuration file.

Configuration

View docs

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

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational