DEV Community

Xin Wu
Xin Wu

Posted on

Giving your AI agent access to a podcast library, via MCP

I listen to a lot of podcasts. The problem was never finding episodes, it was using them afterwards: a 90-minute conversation contains maybe four ideas worth keeping, and by the next week I can remember the idea but not the episode, the timestamp, or the guest's name.

Notes apps did not solve this. I would write "the bit about pricing floors" and six months later have no way back to the source.

This post is about the architecture that finally worked: treat the podcast library as a queryable store, and expose it to an LLM through the Model Context Protocol so the agent can search it the way it searches a codebase.

Why transcripts alone are not enough

The obvious move is transcription. That gives you text, but raw transcripts are hostile to retrieval:

  • 90 minutes of speech is roughly 13,000 words, most of it filler.
  • Speaker turns are unlabeled unless you diarize.
  • A question asked at minute 12 is answered at minute 40, so the useful span does not sit in one chunk.
  • Names and numbers are transcribed inconsistently, which breaks keyword search.

So the pipeline needs a structure layer before retrieval: summary, key points, and a topic map, all anchored to timestamps. Then retrieval can operate on structure and fall back to transcript spans.

What MCP changes

Without MCP, every client integration is bespoke: one plugin for ChatGPT, one for Cursor, one for a CLI. With MCP, the server exposes tools once and any MCP-capable client can call them.

The tool surface I ended up with is small on purpose:

Tool Input Returns
search_episodes query, optional date range episode IDs with matched spans and timestamps
get_episode episode ID summary, key points, chapter map
get_transcript episode ID, optional time window verbatim text for that window
list_recent limit latest imported episodes

The important constraint is that search_episodes returns spans with timestamps, not whole documents. An agent that receives 13,000 words will summarize the middle and lose the point. An agent that receives six 200-word spans with timestamps can answer precisely and cite.

Connecting it

If you want to try the shape of this without building it, Podwise runs a hosted MCP server at https://mcp.podwise.ai/mcp that exposes a library you have imported there: Apple Podcasts, Spotify, YouTube, RSS and private feeds, with summaries, transcripts, mind maps and search across everything. One OAuth sign-in from Claude, ChatGPT or Cursor and the tools appear. There is a CLI as well (brew install hardhackerlabs/podwise-tap/podwise) if you prefer scripted imports.

The client side is unremarkable: point the client at the server, complete OAuth, and the four tools above show up in the tool list.

What actually works in practice

Three query patterns earned their place:

  1. "Where did someone argue X?" — span search across the library, returns timestamps, no hallucination risk because the answer is quoted.
  2. "Summarize everything this guest said about Y across three appearances." — cross-episode aggregation, which is where a plain transcript search tool falls over.
  3. "What did I listen to last month that mentioned Z?" — recency filter plus search, useful for writing.

What does not work well yet: questions that require understanding audio the transcript missed (heavy accents, crosstalk), and anything that needs the visual context of a video podcast.

The design takeaway

If you are building anything that ingests long-form audio, the ordering matters: structure first, retrieval second, agent third. Agents are good at reasoning over six precise spans and bad at reasoning over a dumped transcript. Most of the engineering effort belongs in the structure layer, not the prompt.

Top comments (0)