ATEM MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
cd atem-mcp-server
npm install
npm run build
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add atem-mcp-server -- node "<FULL_PATH_TO_ATEM_MCP_SERVER>/dist/index.js"

Replace <FULL_PATH_TO_ATEM_MCP_SERVER>/dist/index.js with the actual folder you prepared in step 1.

README.md

Control Blackmagic ATEM video switchers with AI assistants

ATEM MCP Server

Control Blackmagic ATEM video switchers with AI assistants using the Model Context Protocol. Works with Claude Desktop, claude.ai, Claude Mobile, Cursor, and any MCP-compatible client.

Talk to your switcher in plain English: "Put camera 2 on program and dissolve to it" or "Start streaming and recording" or "Run macro 3."

Supports both local (stdio) and remote (Streamable HTTP with OAuth 2.0) transports.

How It Works

You (natural language)
  │
  ▼
Claude (Anthropic Cloud)
  │ translates to MCP tool calls
  ▼
ATEM MCP Server (your Mac/PC)
  │ uses atem-connection library
  ▼
ATEM Switcher (network)
  │ executes commands
  ▼
ATEM Software Control / hardware
  │ reflects changes in real time

Supported ATEM Models

The underlying atem-connection library (by NRK/Sofie) supports every ATEM generation:

  • ATEM Mini, Mini Pro, Mini Pro ISO, Mini Extreme, Mini Extreme ISO
  • ATEM Television Studio HD, HD8, HD8 ISO
  • ATEM 1 M/E, 2 M/E, 4 M/E Production Studio / Constellation
  • ATEM SDI, SDI Pro ISO, SDI Extreme ISO
  • And all other Blackmagic ATEM models

Quick Start

1. Install

cd atem-mcp-server
npm install
npm run build

2. Configure Claude Desktop

Edit your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "atem": {
      "command": "/opt/homebrew/bin/node",
      "args": ["/path/to/atem-mcp-server/dist/index.js"],
      "env": {
        "ATEM_HOST": "192.168.1.100"
      }
    }
  }
}

Note: Replace /opt/homebrew/bin/node with your full Node.js path (run which node to find it). Replace the IP with your ATEM's address.

3. Restart Claude Desktop

Quit and relaunch Claude Desktop. You should see the hammer (🔨) icon indicating MCP tools are available.

4. Start Talking to Your Switcher

  • "Connect to my ATEM at 192.168.1.100"
  • "Show me the current switcher status"
  • "Put camera 3 on preview and dissolve to it"
  • "Fade to black"

Environment Variables

Variable Description Default
ATEM_HOST ATEM IP address (enables auto-connect)
ATEM_PORT ATEM port 9910
TRANSPORT Transport mode: stdio or http stdio
PORT HTTP server port (when TRANSPORT=http) 3000
BASE_URL Public URL for OAuth endpoints (when behind a tunnel/proxy) http://localhost:PORT

If ATEM_HOST is set, the server auto-connects on startup. Otherwise, use atem_connect to connect manually.

Remote Access (claude.ai, Claude Mobile, HTTP)

The HTTP transport exposes the MCP server as a web endpoint with built-in OAuth 2.0. This enables remote access from claude.ai, Claude Mobile, and any HTTP-capable MCP client.

Quick Start (HTTP Mode)

TRANSPORT=http BASE_URL=https://atem.yourdomain.com ATEM_HOST=192.168.1.100 node dist/index.js

The server starts on port 3000 with:

  • MCP endpoint: POST /mcp (Bearer token required)
  • OAuth 2.0: Full auto-provisioning flow (discovery, registration, authorization, token exchange)
  • Health check: GET /health

Connect from claude.ai

  1. Go to claude.ai/settings/connectors
  2. Click Add custom connector
  3. Enter your MCP URL (e.g., https://atem.yourdomain.com/mcp)
  4. Click Connect — the OAuth flow completes automatically
  5. Start a conversation and control your ATEM remotely

Connect from Claude Desktop (Remote)

{
  "mcpServers": {
    "atem": {
      "url": "https://atem.yourdomain.com/mcp"
    }
  }
}

No command or args needed — the server runs remotely.

OAuth 2.0 Implementation

The HTTP server implements a complete OAuth 2.0 flow for MCP authentication:

Endpoint Purpose
GET /.well-known/oauth-protected-resource RFC 9728 resource metadata
GET /.well-known/oauth-authorization-server Authorization server metadata
POST /register Dynamic Client Registration (DCR)
GET /authorize Authorization endpoint (auto-approves)
POST /token Token exchange (issues Bearer tokens)

The OAuth server auto-provisions tokens without user interaction — designed for personal/trusted use. For production environments, consider adding proper authentication.

Expose with Cloudflare Tunnel

Use a named Cloudflare Tunnel for a permanent URL — no port forwarding, no dynamic DNS, no changing URLs.

Prerequisites
  • A free Cloudflare account
  • A domain managed by Cloudflare DNS
  • cloudflared CLI installed (brew install cloudflared on macOS)
Setup

1. Authenticate and create tunnel

cloudflared login
cloudflared tunnel create atem-mcp

Note the tunnel ID (a UUID).

2. Route DNS

cloudflared tunnel route dns at

Tools (1)

atem_connectConnect to an ATEM switcher at a specific IP address

Environment Variables

ATEM_HOSTATEM IP address (enables auto-connect)
ATEM_PORTATEM port
TRANSPORTTransport mode: stdio or http
PORTHTTP server port (when TRANSPORT=http)
BASE_URLPublic URL for OAuth endpoints

Configuration

claude_desktop_config.json
{"mcpServers": {"atem": {"command": "/opt/homebrew/bin/node", "args": ["/path/to/atem-mcp-server/dist/index.js"], "env": {"ATEM_HOST": "192.168.1.100"}}}}

Try it

Put camera 2 on program and dissolve to it
Start streaming and recording
Run macro 3
Show me the current switcher status
Fade to black

Frequently Asked Questions

What are the key features of ATEM MCP Server?

Natural language control of Blackmagic ATEM switchers. Supports local (stdio) and remote (HTTP with OAuth 2.0) transports. Compatible with Claude Desktop, claude.ai, and Cursor. Supports all ATEM generations including Mini, Constellation, and SDI models. Built-in OAuth 2.0 flow for secure remote access.

What can I use ATEM MCP Server for?

Hands-free camera switching during live streaming sessions. Automating complex broadcast transitions via voice commands. Remote management of studio hardware from a web-based AI assistant. Triggering pre-configured macros for production workflows.

How do I install ATEM MCP Server?

Install ATEM MCP Server by running: cd atem-mcp-server && npm install && npm run build

What MCP clients work with ATEM MCP Server?

ATEM MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep ATEM MCP Server docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare