MCP server for natural-language YouTube channel discovery + Gemini-powered video summaries. Zero YouTube API key required.
Project description
Podcast Summarizer MCP 📝
MCP that works with OpenClaw, Claude Desktop, Claude Code. Search & discover YouTube channels via natural language and summarize videos with no transcripts or subtitles required.
Quick start (5 minutes)
Python 3.10+ and a Gemini API key (free) from https://aistudio.google.com.
1. Install from source
git clone https://github.com/kaiding-ucb/podcast-summarizer-mcp
cd podcast-summarizer-mcp
python3 -m venv .venv && .venv/bin/pip install -e .
# Note the absolute path — you'll paste it into your host config below.
echo "$(pwd)/.venv/bin/podcast-summarizer-mcp"
2. Configure ONE host
Pick whichever you use. Replace /ABSOLUTE/PATH with what step 1 echoed,
and AIza... with your Gemini key.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"podcast-summarizer": {
"command": "/ABSOLUTE/PATH",
"env": { "GEMINI_API_KEY": "AIza..." }
}
}
}
Quit Claude Desktop fully (⌘Q) and reopen. Click the 🔌 icon —
podcast-summarizer should be listed.
Claude Code
claude mcp add podcast-summarizer \
--env GEMINI_API_KEY=AIza... \
-- /ABSOLUTE/PATH
claude mcp list # should show podcast-summarizer
OpenClaw
Add to ~/.openclaw/openclaw.json under mcp.servers:
"podcast-summarizer": {
"command": "/ABSOLUTE/PATH",
"env": { "GEMINI_API_KEY": "AIza..." }
}
Restart OpenClaw (pkill -f openclaw-gateway; openclaw).
Example prompts
Discover:
Does Andrej Karpathy have a YouTube channel?
Find me a few investing podcasts.
Track:
Add Forward Guidance to my channels
Add @ForwardGuidanceBW
What channels am I tracking?
Remove Forward Guidance
Summarize:
Summarize this video: https://www.youtube.com/watch?v=MO9ZTZPUwXY
Summarize today's new videos from all my channels in parallel
I have a 20-video backlog — no rush, do it overnight to save cost
The agent picks analyze_video_start (parallel, full price) by default
and analyze_videos_batch_start (50% off, async) only when you say
"no rush" / "overnight".
📱 Use via Telegram, WhatsApp & More (OpenClaw)
Connect this MCP to Telegram, WhatsApp, Discord and 20+ messaging platforms via OpenClaw — a self-hosted AI gateway. Talk to your podcast research agent from your phone, anywhere.
Telegram → OpenClaw agent (Claude / Gemini / GPT) → podcast-summarizer-mcp → Gemini + YouTube
OpenClaw routes messages from your chat platform of choice to an AI agent. The agent talks to this MCP over standard stdio — no Python wrapper or shim required.
Setup
# 1. Install OpenClaw (Node 22+)
npm install -g openclaw
# 2. Add a Telegram bot token (interactive — paste BotFather token)
openclaw configure --section channels
# 3. Add this MCP + agent + model to ~/.openclaw/openclaw.json:
# (already covered in Quick Start — use the OpenClaw snippet)
openclaw config set agents.defaults.model "anthropic/claude-sonnet-4-5"
# 4. Start the gateway
openclaw gateway
Tools
13 tools. The agent picks; you don't call them directly.
| Tool | Purpose |
|---|---|
search_youtube_channels(query, max_results=5) |
Fuzzy channel search |
resolve_youtube_channel(handle_or_url) |
@handle or URL → channel |
get_channel_metadata(channel_id) |
Subs, description, recent titles |
add_tracked_channel(channel_id, name, handle?, tags?) |
Add to registry |
remove_tracked_channel(channel_id) |
Remove from registry |
list_tracked_channels(tag?) |
List tracked channels |
discover_new_videos(channel_ids?, tag?, ...) |
New videos since last poll |
get_video_info(video_url) |
Metadata only (no Gemini cost) |
analyze_video_start(video_url, prompt?) |
Launch Gemini analysis (returns job_id) |
analyze_video_result(job_id) |
Poll for the result |
analyze_videos_batch_start(video_urls, prompt?) |
50%-cheaper batch path (24h SLA) |
analyze_videos_batch_result(batch_job_name) |
Poll batch result |
get_state(channel_ids?) |
Per-channel last-seen video |
Registry state lives at ~/.podcast-summarizer-mcp/channels.json.
Configuration
Set in the host's env block. Only GEMINI_API_KEY is required.
| Variable | Default |
|---|---|
GEMINI_API_KEY |
required |
VIDEO_ANALYSIS_CHANNELS_PATH |
~/.podcast-summarizer-mcp/channels.json |
VIDEO_ANALYSIS_STATE_PATH |
~/.podcast-summarizer-mcp/video-state.json |
VIDEO_ANALYSIS_JOBS_PATH |
~/.podcast-summarizer-mcp/jobs.json |
VIDEO_ANALYSIS_BATCH_METADATA_PATH |
~/.podcast-summarizer-mcp/batches.json |
VIDEO_ANALYSIS_PROMPT_PATH |
unset → built-in investment-podcast prompt |
VIDEO_ANALYSIS_PROMPT_PATH is re-read on every analysis call (no restart). Bundled examples in prompts/: investment-podcast.md, technical-talk.md, interview.md, news-briefing.md.
MIT License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file podcast_summarizer_mcp-0.3.0.tar.gz.
File metadata
- Download URL: podcast_summarizer_mcp-0.3.0.tar.gz
- Upload date:
- Size: 68.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a4b6ad5a4fb63b2508a5d1820d57656e8e14270254b730b337c3151151813d3
|
|
| MD5 |
fd69dd83e0a49239973f9a6dbe14f088
|
|
| BLAKE2b-256 |
d9c66d61abc615e733e39a405bf5167bacc20d32b67586ce5cde218b56923f51
|
File details
Details for the file podcast_summarizer_mcp-0.3.0-py3-none-any.whl.
File metadata
- Download URL: podcast_summarizer_mcp-0.3.0-py3-none-any.whl
- Upload date:
- Size: 40.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbc1ca52fc9fcfca35a00a5dd08e3c9736733b59271233cdbe7fe069bc025890
|
|
| MD5 |
c82e2e8d0095e6f051d9cf90300e7841
|
|
| BLAKE2b-256 |
05101ea9d7d1559785bfed55cbda7324b9ccf0baf2804b309e2026b29733a4d2
|