mcpField
C
Chromecast / DLNA casting (catt)

Chromecast / DLNA casting (catt)

Local
github.comGames & Entertainment0Updated 2w ago

About Chromecast / DLNA casting (catt)

An MCP server for casting YouTube videos and other media to Chromecast or DLNA devices using catt. It also provides playback controls, device discovery, and optional Firefox-to-TV dual-screen synchronization.

Key features

  1. 01Cast YouTube videos and media URLs
  2. 02Control playback, volume, and seeking
  3. 03Discover Chromecast and DLNA devices
  4. 04Cast the active Firefox tab
  5. 05Synchronize playback across PC and TV

Use cases

  1. 01Play a YouTube video on a TV
  2. 02Pause, seek, or adjust cast volume
  3. 03Find casting devices on the local network
  4. 04Mirror Firefox video playback to a TV

MCP support

Exposes 15 casting, playback, synchronization, and discovery tools to MCP clients. Runs over stdio.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"amineutron-catt": {
"command": "uvx",
"args": [
"catt-mcp"
],
"env": {
"CATT_DEVICE": "<CATT_DEVICE>",
"TV_HOST": "<TV_HOST>",
"ADB_PATH": "<ADB_PATH>"
}
}
}
}
Run commanduvx catt-mcp
Environment variables to set
CATT_DEVICEName or IP of the default Chromecast / DLNA device
TV_HOSTOptional Android TV IP, used to wake the screen over ADB before casting
ADB_PATHPath to the adb binary if not on PATH

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypicatt-mcp0.3.0

Tools

10

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
urlstringYesYouTube URL (youtube.com/watch?v=xxx, youtu.be/xxx) or video ID

Details

From the project README

catt-mcp

tests License: MIT Python 3.10+

MCP server for casting YouTube videos and media to Chromecast/DLNA devices via catt.

Exposes 15 tools covering YouTube casting, playback control, dual-screen sync, and device discovery.

Demo

MCP client: the 15 tools, then cast_scan finding the TV

Recorded on the real network with docs/demo/record.sh: a minimal MCP client (docs/demo/mcp_demo.py) starts the server over stdio with CATT_DEVICE in the environment, lists the tools and calls cast_scan (read-only). Private IP addresses are replaced with documentation addresses.

Tools

OutilRôle
cast_youtubeCaste une video YouTube sur la TV (URL ou ID de video)
cast_urlCaste une URL quelconque (video, audio, stream) sur la TV
cast_stopArrete le cast en cours sur la TV
cast_pauseMet en pause le cast en cours
cast_resumeReprend la lecture du cast
cast_volumeRegle le volume du cast (0-100)
cast_seekAvance ou recule dans la video
cast_statusRetourne le statut du cast en cours
cast_scanScanne les devices Chromecast/DLNA disponibles sur le reseau
cast_infoRetourne les infos detaillees du media en cours
cast_browserCaste la video de l'onglet actif de Firefox sur la TV (YouTube, Twitch, etc.)
cast_browser_dualLance la video sur PC (Firefox) ET TV simultanement avec synchronisation (pour LightBeat)
cast_dual_resyncResynchronise PC et TV en relancant la TV a la position Firefox
cast_dual_stopArrete le dual cast et le watcher de synchronisation
cast_dual_offsetAjuste le decalage TV (positif=TV en avance, negatif=TV en retard)
YouTube ID extraction

_extract_video_id (URL watch?v=, youtu.be/, shorts/ or a bare 11-character ID, anything else rejected before it reaches catt/ADB) is deliberately duplicated in pylips-mcp (youtube_video, TV app with Premium account). Both servers stay installable on their own; each one tests its copy with the same table of cases (tests/test_youtube_id.py). Decision recorded on 2026-09-20.

Requirements

  • Python 3.10+
  • catt: pip install catt
  • yt-dlp: pip install yt-dlp
  • A Chromecast or DLNA-compatible device on the same network
  • lz4 (optional, for cache compression): pip install lz4
Dual cast (Linux + Hyprland)

cast_browser, cast_browser_dual, cast_dual_resync, cast_dual_stop and cast_dual_offset drive Firefox from the running desktop session. They are advertised only when the required binaries are present:

  • Hyprland with hyprctl in PATH
  • playerctl for MPRIS playback control
  • Firefox holding the video to mirror
  • lz4 (Python) to read Firefox's session cache

Without them the server starts normally and simply does not expose these five tools, instead of failing when they are called.

Installation en une ligne

uvx catt-mcp                 # depuis PyPI ; avant publication : uvx --from git+https://github.com/amineutron/catt-mcp catt-mcp

Configuration Claude Desktop / Claude Code (mcpServers) :

{ "catt": { "command": "uvx", "args": ["catt-mcp"], "env": { "CATT_DEVICE": "Living Room TV" } } }

Setup

1. Install dependencies
pip install mcp catt yt-dlp
2. Discover your device
catt scan

Note the device name (e.g. 55OLED705/12, Living Room TV).

3. Configure

Copy config.example.yaml to config.yaml:

catt:
  device: "55OLED705/12"   # Name from catt scan
4. Run
catt-mcp                      # installed (pip, uvx) ; `catt-mcp --help` lists the settings
python -m catt_mcp            # same thing, from any environment where the package is installed
python server.py              # from a clone, without installing (thin launcher, code in catt_mcp/)

Or with environment variable:

CATT_DEVICE="55OLED705/12" catt-mcp

The code lives in the catt_mcp package (catt_mcp/server.py, catt_mcp/sync_watcher.py), so it can be installed next to other MCP servers without module name clashes.

The dual-screen tools (dual_cast, dual_resync, dual_offset) drive the TV through ADB and need its IP address. Set it with TV_HOST (or tv.host in config.yaml), for example TV_HOST="192.0.2.10"; the built-in default is only a placeholder.

Claude Desktop Configuration

{
  "mcpServers": {
    "catt": {
      "command": "python3",
      "args": ["/path/to/catt-mcp/server.py"],
      "env": {
        "CATT_DEVICE": "55OLED705/12"
      }
    }
  }
}

License

MIT

Part of the Lyra ecosystem

DépôtRôle
lyraassistant DevOps vocal, local par défaut (AGPL-3.0)
fedora-agentsMCP : machines virtuelles KVM et sauvegardes
mcp-trackingMCP + API + tableau de bord des tâches longues
neutroncorehub PWA du homelab
hue-mcpMCP Philips Hue (fork de ThomasRohde/hue-mcp)
pylips-mcpMCP TV Philips
denon-mcpMCP ampli Denon
catt-mcpMCP Chromecast et DLNA

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.