Labsco
MCP SERVER

MCP Beam

by alexballas

Cast a local video or a media URL to a Chromecast or DLNA device on your network, and control playback from the conversation.

IoT, Smart Home & Embedded Hardware
Summary
It tells you what the device can do before you send it something it cannot play.

Casting fails in boring ways — wrong codec, a DLNA renderer that will not take a playlist URL — and this returns capabilities and limitations per device up front, so the choice is informed rather than trial and error. Stable device IDs matter for the same reason: the follow-up calls address a session and a device, not a name that might have shifted. `--self-test` before wiring a client is a nice touch, and the first `go run` is slower because the module has to build.

What it is

A stdio server for casting to Chromecast and DLNA/UPnP renderers on your LAN. It discovers devices, starts playback, and holds a session you can pause, seek and stop.

What you get
  • Seven tools: `list_local_hardware`, `beam_media`, `get_beaming_status`, `play_beaming`, `pause_beaming`, `seek_beaming` and `stop_beaming`
  • `list_local_hardware` returns stable device IDs plus name, type, address, protocol and per-device capabilities — whether it takes files, URLs or HLS `.m3u8`
  • `beam_media` takes an absolute local path or an http/https URL, a target device, and optional `subtitles_path` (.srt or .vtt) and `start_seconds`; `transcode` is auto, always or never
  • `seek_beaming` accepts a percent or an absolute position; the session ID from `beam_media` addresses every follow-up call
  • Protocol differences are reported rather than hidden — Chromecast casts `.m3u8` directly, DLNA rejects it with structured limitation details and falls back from direct to proxy for other sources
  • Errors are structured with remediation hints; if transcoding is needed and ffmpeg is missing, you get `FFMPEG_NOT_FOUND` rather than a silent failure
Requirements

Go 1.26 or newer if you run it with `go run go2tv.app/mcp-beam@latest`, build it locally, or install with `claude mcp add`. A downloaded release binary needs no Go at all. `ffmpeg` and `ffprobe` are optional for direct-play paths and recommended otherwise. `--self-test` and `--version` verify the wiring before you connect a client.

Setup effort

Build from source — clone the repository and build it, then point your client at the binary