An MCP server that generates AI-powered podcasts — on any topic, in minutes.
The Curator uses Google Gemini to write a natural, multi-turn podcast transcript and Vertex AI TTS to synthesize it into audio. It exposes two MCP tools that any MCP-compatible client (Claude Desktop, Zed, Cursor, etc.) can call directly.
| Tool | Description |
|---|---|
create_podcast_transcript |
Generates a podcast transcript between hosts Annabelle and Link on any topic |
create_podcast_episode |
Synthesizes a transcript into a .wav audio file and uploads it to GCS |
- Python 3.12
- FastMCP — MCP server framework
- Google Gemini (via Vertex AI) — transcript generation
- Vertex AI TTS — multi-speaker audio synthesis
- Google OAuth 2.0 — single-user authentication for MCP clients
- Google Cloud Storage — episode and OAuth state storage
- Cloud Run — serverless hosting
- Hatch — environment and task management
- Ruff, MyPy, Pytest — code quality
.
├── Dockerfile
├── pyproject.toml
├── src/
│ └── the_curator/
│ ├── main.py # FastMCP server, OAuth routes
│ ├── podcast_generation.py # Transcript + audio synthesis
│ ├── auth/
│ │ └── provider.py # Google OAuth provider
│ └── utils/
│ └── vertex_client.py # Vertex AI client wrapper
├── terraform/ # GCP infra (Cloud Run, GCS, Secret Manager)
└── tests/
-
Install Hatch:
pipx install hatch
-
Set required environment variables:
export GOOGLE_CLIENT_ID=... export GOOGLE_CLIENT_SECRET=... export ALLOWED_EMAIL=you@example.com export SERVER_URL=http://localhost:8000
-
Run the server:
hatch run start
-
Run checks:
hatch run check
docker build -t the-curator .
docker run --rm -p 8080:8080 \
-e GOOGLE_CLIENT_ID=... \
-e GOOGLE_CLIENT_SECRET=... \
-e ALLOWED_EMAIL=you@example.com \
-e SERVER_URL=http://localhost:8080 \
the-curatorInfrastructure is managed with Terraform. The Cloud Run service pulls credentials from Secret Manager.
cd terraform
terraform init
terraform apply \
-var="podcast_service_image_uri=gcr.io/the-curator-496412/the-curator:latest" \
-var="google_client_id=..." \
-var="google_client_secret=..." \
-var="allowed_email=you@example.com" \
-var="server_url=https://your-cloud-run-url"A GitHub Actions workflow handles image builds and deploys on push to main.
| Path | Description |
|---|---|
/health |
Health check |
/sse |
MCP SSE transport (client entry) |
/.well-known/oauth-authorization-server |
OAuth discovery |
/oauth2/callback |
Google OAuth callback |
