ecamm-mcp
Supports starting a YouTube live broadcast through Ecamm Live, including selecting a streaming destination and setting the broadcast title before going live.
Provides controls for Ecamm for Zoom, including Zoom view controls and meeting actions such as new, leave, end, mute all, and record, with confirmation required for meeting controls.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ecamm-mcp Switch to my guest scene and show the lower third."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Download ecamm-mcp.mcpb.
Double-click it. Claude opens. Click Install.
Open Ecamm Live, then ask Claude: "What's my Ecamm status?"
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 | bashThat one line does everything:
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.Downloads the server into
~/.ecamm-mcp.Adds Ecamm to Claude desktop. Your existing Claude config is backed up first and nothing else in it is touched.
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 doctorProblem | 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 asks for permission again | The saved ID in |
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 |
| Pre-show check: ready or not, and what to fix |
| Live or not, current scene, viewers, preview mode, mutes, volumes, Zoom state |
| Scenes, overlays in the current scene, cameras, videos, sounds, audio filters, profiles, destinations |
| Thumbnail of a scene, overlay or video |
| Take a scene live by name, or next / previous |
| Show, hide or toggle an overlay |
| Main mute, or any bus: mic, mic2, system audio, interview, zoom, sound effects, movie, guests 1 to 4 |
| Camera input, camera / screen / video mode, play a video file |
| Sound effects and audio filters |
| PiP, Preview Mode, publish preview, hide UI, live demo |
| Show the latest comment on screen, drop a marker |
| Go Live / Record / End, pause or split the recording (confirm required) |
| Post a public comment, switch Profile (confirm required) |
| Ecamm for Zoom: view controls run directly, meeting controls need confirm |
| 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 LivevsEnd Broadcast), which is whatecamm_statusreports.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
lsofand 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 |
| Status and lists only |
| Target a specific Mac, e.g. |
| Skip discovery, |
| Name shown in Ecamm's Remote Control list |
| 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-mcpClaude 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-claudeFrom 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.cjsReleases: 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 toolsecamm_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_discoverARead-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_listBRead-only
List cameras, videos (recent), sounds, audio filters, profiles, or streaming destinations.
Inputs: what (required).
ecamm_list_overlaysARead-only
Overlays in the CURRENT scene (Ecamm cannot report other scenes) with visibility.
Inputs: no named parameters.
ecamm_list_scenesARead-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_commentADestructive
Post a PUBLIC chat comment to the live Twitch, YouTube, or Facebook Page broadcast. Requires confirm: true.
Inputs: text (required), confirm.
ecamm_preflightARead-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_recordingADestructive
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_profileADestructive
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_stopADestructive
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_statusARead-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_thumbnailBRead-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_zoomBDestructive
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
Scored across 25 tools
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.
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.
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.
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
Related MCP Connectors
Control evmux live streaming studios: scenes, layers, participants, media, banners and broadcast.
Multistream relay control: check live status, switch destinations, manage teams, generate overlays.
Run a 24/7 live stream of pre-recorded videos, or live stream a recorded video at a set time.
Manage 24/7 live streams, media, playback queues, schedules, and multistreaming from AI assistants.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables 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.15MIT
- AlicenseAqualityCmaintenanceEnables natural language control of Blackmagic ATEM video switchers via the Model Context Protocol. It allows users to manage camera switching, transitions, audio mixing, macros, and streaming operations through AI assistants.3210MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to control DualStream streaming studio: switch scenes, compose layouts, manage widgets, and react to stream events.30Apache 2.0
- AlicenseBqualityDmaintenanceEnables 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.89MIT