Skip to main content
Glama

cast-mcp

用于将有声书从文件系统库投射到 Google Cast 扬声器的独立 HTTP MCP 服务器。

该服务既为代理提供 MCP 工具,也为物理设备提供纯 HTTP 端点。有声书默认从 ./media 读取,并通过由 ffmpeg 支持的签名会话 URL 流式传输到扬声器。

它还包括完全本地的 TTS,用于短语音消息。Docker 默认使用 Piper 及 en_GB-jenny_dioco-medium 语音,如果 Piper 失败则回退到 espeak-ng。

本地设置

bun install
cp .env.example .env
mkdir -p media data
bun run start

Related MCP server: mcp-librivox

Docker

cp .env.example .env
mkdir -p media data
docker compose up -d --build

Docker 将 ./media 挂载为 /media:ro,将 ./data 挂载为 /data。

媒体库结构

有关将有声书文件放在何处以及支持哪些格式的详细说明,请参阅 MEDIA.md。

./media 下的每个文件夹都被视为一本书:

media/
  the-hobbit/
    metadata.json
    001.mp3
    002.mp3

可选的 metadata.json:

{
  "id": "the-hobbit",
  "title": "The Hobbit",
  "author": "J.R.R. Tolkien"
}

目前支持的输入扩展名为 .mp3、.m4a、.m4b、.aac、.wav、.flac 和 .ogg。流会被转码为 MP3。

端点

  • GET /health

  • POST /mcp

  • GET /books

  • POST /scan

  • GET /speakers

  • POST /play

  • POST /say

  • POST /stop

  • GET /status/:speakerId

  • GET /media/stream?sessionId=...&sig=...

  • GET /tts/:id?sig=...

配置后,控制端点需要 Authorization: Bearer <CONTROL_AUTH_TOKEN>。MCP 使用 MCP_AUTH_TOKEN。

OpenCode MCP 配置

{
  "mcp": {
    "cast-audio": {
      "type": "remote",
      "url": "http://127.0.0.1:4130/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:CAST_MCP_TOKEN}"
      }
    }
  }
}

Related MCP Connectors

Related MCP Servers