Skip to main content
Glama

cast-mcp

독립형 HTTP MCP 서버로, 파일 시스템 라이브러리의 오디오북을 Google Cast 스피커로 전송합니다.

이 서비스는 에이전트용 MCP 도구와 물리적 기기용 일반 HTTP 엔드포인트를 모두 제공합니다. 오디오북은 기본적으로 ./media에서 읽어들이며, ffmpeg 기반의 서명된 세션 URL을 통해 스피커로 스트리밍됩니다.

또한 짧은 음성 메시지를 위한 완전 로컬 TTS도 포함되어 있습니다. Docker는 기본적으로 en_GB-jenny_dioco-medium 음성의 Piper를 사용하며, 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