Skip to main content
Glama

ecamm-mcp

Run Ecamm Live by talking to Claude.

"Switch to my guest scene." "Mute the mic." "Show the lower third." "Drop a marker called Q&A." "What's my status?"

It uses Ecamm's own Remote Control feature, the same one Stream Deck and Companion use, so there is nothing to change in your Ecamm setup. It runs on your Mac and talks to Ecamm Live locally.

Community project. Not made by or affiliated with Ecamm Network.

Install

You need a Mac with Ecamm Live and the Claude desktop app. Pick one of the two ways below. Not both, or Claude will see everything twice.

Option 1: no Terminal

  1. Download ecamm-mcp.mcpb.

  2. Double-click it. Claude opens. Click Install.

  3. Open Ecamm Live, then ask Claude: "What's my Ecamm status?"

  4. Ecamm Live asks for permission. Click Allow. Done.

Option 2: one line in Terminal

Open Terminal (press Cmd+Space, type Terminal, press Return), paste this, press Return:

curl -fsSL https://raw.githubusercontent.com/guycochran/ecamm-mcp/main/install.sh | bash

That one line does everything:

  1. Uses the Node.js you already have. If you have none, it downloads a private copy into ~/.ecamm-mcp. No sudo, nothing installed system-wide.

  2. Downloads the server into ~/.ecamm-mcp.

  3. Adds Ecamm to Claude desktop. Your existing Claude config is backed up first and nothing else in it is touched.

  4. Opens Ecamm Live if it's closed and gets it to ask for permission. Click Allow.

Then quit Claude completely (Cmd+Q), open it again, and ask: "What's my Ecamm status?"

Run the same line again any time to update.

Related MCP server: ATEM MCP Server

The one click that matters

The first time Claude talks to Ecamm Live, Ecamm shows this. Click Allow. You only do it once per Mac.

Fastest way to get to this dialog: have Ecamm Live open, then either run the Terminal line above (it triggers the dialog and waits for you) or ask Claude "What's my Ecamm status?".

No dialog, or you clicked Deny by accident? In Ecamm Live go to Settings > Remote Control and tick Claude (ecamm-mcp).

Things to try

  • "Am I ready to go live?"

  • "What scenes do I have?"

  • "Switch to Me + Guest."

  • "Hide the logo overlay."

  • "Mute the mic." / "Set sound effects to 60."

  • "Play the applause sound."

  • "Drop a marker: sponsor read starts."

  • "Show me a thumbnail of the Interview scene."

  • "Go live on YouTube with the title Office Hours." (Claude will show you what it's about to do and ask first.)

Scenes, overlays, cameras, sounds and destinations all work by name. Part of a name is fine if it's unique. If two things match, it asks instead of guessing.

The pre-show check

Ask "am I ready to go live?" and you get one answer instead of a wall of settings. It flags what viewers would notice:

  • Main output or mic muted, or mic at zero

  • No streaming destination set up

  • Preview Mode left on

  • A broadcast or recording already running

It also tells you which scene you'll start on and which overlays are showing. It only reads. It never changes anything.

It won't take you live by accident

Tier

What

Behavior

Read

Pre-show check, status, lists, thumbnails

Never changes anything

Show

Scenes, overlays, mutes, volumes, camera, sounds, markers, Zoom view controls

Runs right away

On-air

Go Live / Record / End, pause or split recording, public comments, switching Profiles, Zoom new / leave / end / mute all / record

Dry run until you confirm

Want Claude to look but not touch during a show? Turn on read-only mode: in the extension's settings, or ECAMM_READ_ONLY=1 for the Terminal install.

Something's not working

Terminal install: run this and read the output. Paste it when you ask for help.

~/.ecamm-mcp/ecamm-mcp doctor

Problem

Fix

Claude doesn't know about Ecamm

Quit Claude completely (Cmd+Q, not just closing the window) and reopen it.

"Could not find Ecamm Live"

Open Ecamm Live. It has to be running.

"Waiting for approval"

Click Allow in Ecamm Live, or tick Claude (ecamm-mcp) in Settings > Remote Control.

It was working, then Ecamm restarted

Nothing to do. Ecamm picks a new port every launch and the server finds it again on the next request.

Every tool shows up twice

You installed both ways. Remove one: delete the extension in Claude, or run ~/.ecamm-mcp/ecamm-mcp uninstall.

Ecamm asks for permission again

The saved ID in ~/.ecamm-mcp/client-uuid was deleted. Click Allow again.

To set it up again without reinstalling: ~/.ecamm-mcp/ecamm-mcp setup

To remove the Terminal install: ~/.ecamm-mcp/ecamm-mcp uninstall, then delete the ~/.ecamm-mcp folder.

Still stuck? Open an issue.

What it can do

Tool

Does

ecamm_preflight

Pre-show check: ready or not, and what to fix

ecamm_status

Live or not, current scene, viewers, preview mode, mutes, volumes, Zoom state

ecamm_list_scenes, ecamm_list_overlays, ecamm_list

Scenes, overlays in the current scene, cameras, videos, sounds, audio filters, profiles, destinations

ecamm_thumbnail

Thumbnail of a scene, overlay or video

ecamm_switch_scene, ecamm_step_scene

Take a scene live by name, or next / previous

ecamm_set_overlay

Show, hide or toggle an overlay

ecamm_set_mute, ecamm_set_volume

Main mute, or any bus: mic, mic2, system audio, interview, zoom, sound effects, movie, guests 1 to 4

ecamm_set_camera, ecamm_set_source_mode, ecamm_play_video

Camera input, camera / screen / video mode, play a video file

ecamm_sound, ecamm_toggle_audio_filter

Sound effects and audio filters

ecamm_toggle

PiP, Preview Mode, publish preview, hide UI, live demo

ecamm_comment_overlay, ecamm_add_marker

Show the latest comment on screen, drop a marker

ecamm_start_stop, ecamm_recording

Go Live / Record / End, pause or split the recording (confirm required)

ecamm_post_comment, ecamm_set_profile

Post a public comment, switch Profile (confirm required)

ecamm_zoom

Ecamm for Zoom: view controls run directly, meeting controls need confirm

ecamm_discover

Find Ecamm Live again, or see which Macs on the network are running it

Things it handles so you don't have to:

  • Toggles made safe. Ecamm's mute and overlay commands only toggle. The server reads the state first, so "mute the mic" twice leaves it muted.

  • Scene switches are confirmed. It waits until Ecamm reports the new scene before saying it's done.

  • Scene groups are flattened and labeled Group / Scene.

  • Waits for your Allow click. The first request holds for up to 25 seconds while you click Allow, so you don't have to ask twice.

Limits (these are Ecamm's, not this server's)

  • Overlays can only be read and controlled for the current scene.

  • The only way to tell whether you're live is the main button's label (Go Live vs End Broadcast), which is what ecamm_status reports.

  • Ecamm does not publish documentation for this API. A future Ecamm update could change it.

  • A bus that doesn't exist reports as unmuted.

  • Picture-in-picture can be toggled, but Ecamm doesn't report whether it's on.

Advanced

How it finds Ecamm

  • Ecamm uses a new port every launch, so the server looks it up each time instead of using a fixed port.

  • Same Mac (the normal case): it finds Ecamm's port locally with lsof and connects over loopback. No Bonjour wait and no macOS Local Network permission needed.

  • Another Mac: set ECAMM_HOSTNAME (or fill in "Ecamm on another Mac" in the extension settings). The server then uses Bonjour (_ecammliveremote._tcp). If that works in Terminal but not from Claude, allow Claude in System Settings > Privacy & Security > Local Network.

  • If several Macs on the network run Ecamm, it picks this Mac first, then ECAMM_HOSTNAME, then a lone instance. It never guesses between two.

Settings

Variable

Use

ECAMM_READ_ONLY=1

Status and lists only

ECAMM_HOSTNAME

Target a specific Mac, e.g. Mac-Mini-M2.local

ECAMM_HOST

Skip discovery, address:port (the port changes per launch, so mainly for testing)

ECAMM_CLIENT_NAME

Name shown in Ecamm's Remote Control list

ECAMM_APPROVAL_WAIT_S

Seconds a request waits for your Allow click (default 25)

For the Terminal install, add them under "env" in the ecamm entry of ~/Library/Application Support/Claude/claude_desktop_config.json.

Other MCP apps

Any MCP client that runs a local stdio server works. After the Terminal install the command is:

~/.ecamm-mcp/ecamm-mcp

Claude Code: claude mcp add ecamm -- ~/.ecamm-mcp/ecamm-mcp

To install without touching Claude desktop's config:

curl -fsSL https://raw.githubusercontent.com/guycochran/ecamm-mcp/main/install.sh | bash -s -- --no-claude

From source

git clone https://github.com/guycochran/ecamm-mcp && cd ecamm-mcp
npm install && npm run build
npm run setup        # connect Claude desktop and bring up the Allow dialog
npm test
npm run package      # builds release/ecamm-mcp.mcpb and release/ecamm-mcp.cjs

Releases: bump the version in package.json, src/version.ts and mcpb/manifest.json, then push a tag like v0.2.0. GitHub Actions builds the extension and the single-file server and attaches them to the release.

Tests

npm test runs unit tests plus an end-to-end run of the real MCP server against a fake Ecamm that reproduces the real response shapes, the toggle behavior, the scene-switch delay, the Allow flow, a relaunch on a new port, and loopback discovery. CI runs the same suite against the shipped bundle and runs install.sh on real Macs, with and without Node.js installed.

Against a real Ecamm Live so far: discovery, the Allow dialog, status, all lists, scene switch and step, mute, volume, sound effects, camera, source mode, preview mode, the Zoom panel, and the dry-run guard on Go Live, profile switch and Zoom end. Not yet run against a real Ecamm: going live, recording controls, markers, public comments, overlays, audio filters, video playback, thumbnails and the pre-show check. If something behaves differently on your setup, please open an issue.

Credits

API reference and response shapes from bitfocus/companion-module-ecamm-live (MIT), including its docs/ecamm-live-remote-api-v4.4.md.

Part of the Prodbots family, alongside the Resolve, ATEM, X32 and DMX servers. MIT licensed.

Available Tools

25 tools
ecamm_add_markerC

Drop a chapter/edit marker in the current recording or broadcast.

Inputs: text.

ecamm_comment_overlayA

Show the most recent viewer comment as an overlay, or hide it.

Inputs: state (required).

ecamm_discoverA
Read-only

Browse the network (Bonjour) for running Ecamm Live instances and (re)connect. Use if Ecamm was relaunched or you need to see which Macs are running it.

Inputs: no named parameters.

ecamm_listB
Read-only

List cameras, videos (recent), sounds, audio filters, profiles, or streaming destinations.

Inputs: what (required).

ecamm_list_overlaysA
Read-only

Overlays in the CURRENT scene (Ecamm cannot report other scenes) with visibility.

Inputs: no named parameters.

ecamm_list_scenesA
Read-only

All scenes (flattened out of scene groups) with ids, and which is live.

Inputs: no named parameters.

ecamm_play_videoB

Play a video file (full path, see ecamm_list videos).

Inputs: path (required).

ecamm_post_commentA
Destructive

Post a PUBLIC chat comment to the live Twitch, YouTube, or Facebook Page broadcast. Requires confirm: true.

Inputs: text (required), confirm.

ecamm_preflightA
Read-only

Pre-show checklist. One read-only call that reports whether Ecamm is ready to go live and flags problems: already on air, main output or mic muted, mic at 0, no destination, Preview Mode left on. Run it before going live or when the user asks "am I ready?"

Inputs: no named parameters.

ecamm_recordingA
Destructive

Pause/resume the current recording, or split into a new recording file while streaming/recording. Requires confirm: true.

Inputs: action (required), confirm.

ecamm_set_cameraC

Pick the camera input, by name or id.

Inputs: camera (required).

ecamm_set_muteA

Mute or unmute. Omit bus for the main output mute. Idempotent (reads state first, since Ecamm only toggles).

Inputs: muted (required), bus.

ecamm_set_overlayA

Show, hide, or toggle an overlay in the current scene, by name or id. Show/hide is idempotent.

Inputs: state (required), overlay (required).

ecamm_set_profileA
Destructive

Switch Ecamm to a different Profile (swaps the whole scene set). Requires confirm: true.

Inputs: profile (required), confirm.

ecamm_set_source_modeB

Switch source mode: camera, screen share, or video playback.

Inputs: mode (required).

ecamm_set_volumeC

Set a bus volume 0-100.

Inputs: bus (required), volume (required).

ecamm_soundA

Sound effects: play (by name or id, optional volume 0-100 and loop/restart), stop, pause, or set volume of the playing sound.

Inputs: action (required), mode, sound, volume.

ecamm_start_stopA
Destructive

Click the main Go Live / Record / End button. This STARTS OR ENDS a live broadcast or recording, depending on its current label. Optional destination (from ecamm_list destinations) and title/description for a new broadcast. Requires confirm: true.

Inputs: title, confirm, description, destination.

ecamm_statusA
Read-only

Connection, approval state, and live status of Ecamm Live: start/pause button labels (tells you if live or recording), current scene, viewers, preview mode, mutes, volumes, Zoom state.

Inputs: no named parameters.

ecamm_step_sceneB

Go to the next or previous scene.

Inputs: direction (required).

ecamm_switch_sceneA

Take a scene live, by name (partial ok if unique), "Group / Scene", or id. Waits until Ecamm confirms the switch.

Inputs: scene (required).

ecamm_thumbnailB
Read-only

Ecamm's last thumbnail image of a scene, overlay, or video. Scene/overlay by name or id; video by file path.

Inputs: ref (required), kind (required).

ecamm_toggleA

Toggle a feature: pip, preview_mode, publish_preview (takes the Preview Mode layout live), hide_ui (on-screen controls), live_demo. Returns state where Ecamm reports it.

Inputs: feature (required).

ecamm_toggle_audio_filterB

Toggle an audio filter on/off, by name or id.

Inputs: filter (required).

ecamm_zoomB
Destructive

Ecamm for Zoom controls. View/self actions run directly; new_meeting, leave, end_for_all, mute_all and recording actions need confirm: true. panel shows meeting|chat|participants|share.

Inputs: action (required), panel, confirm, usePersonalMeetingId.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 25 tools

    Disambiguation4/5

    Most tools target clearly distinct resources or actions (scenes, overlays, audio buses, comments, Zoom), and the descriptions disambiguate close pairs like ecamm_list vs. ecamm_list_scenes/overlays and ecamm_set_volume vs. ecamm_sound. A few overlaps remain, such as generic ecamm_toggle vs. ecamm_toggle_audio_filter and ecamm_set_overlay, but they are manageable.

    Naming Consistency3/5

    All tools share the ecamm_ prefix, but the naming style is mixed: verb_noun tools (switch_scene, set_volume) coexist with noun-only tools (status, preflight, thumbnail, sound, recording, zoom) and vague verbs like toggle. It remains readable, but the pattern is not predictable enough for a top score.

    Tool Count3/5

    25 tools is at the heavy end for a live production control surface. Many correspond to genuinely distinct operations, but some could be consolidated (e.g., mute/volume controls, status/preflight) to reduce the surface.

    Completeness4/5

    The server covers core live-production workflows: discovery, status/preflight, scenes, overlays, audio, camera/source switching, sounds, comments, recording, profiles, markers, thumbnails, and Zoom. Minor gaps exist, such as no video stop/pause, no scene/overlay creation or deletion, and limited comment reading, but these are workaroundable or likely outside Ecamm's API.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      Enables control of macOS applications through natural language, allowing users to launch apps, execute AppleScript commands, manage running applications, and open files with voice or text commands.
      15
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables 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.
      89
      MIT