Podcast Index MCP Server
This read-only MCP server lets Claude query the Podcast Index API for podcast/episode discovery, lookups, trends, and feed metadata.
Search episodes by person appearances, full-text terms, or podcast titles.
Look up podcasts by RSS feed URL, Podcast Index feed ID, Apple/iTunes ID, or podcast:guid.
Get episodes by feed ID or episode ID, including live episodes and recent episodes across the index.
Discover trending podcasts, recently updated feeds, and newly added feeds, with filters such as language, category, and timestamps.
Retrieve value4value/lightning payment info by feed ID or URL.
List all Podcast Index categories and get current aggregate index statistics.
Provides tools for searching podcasts, tracking appearances, and monitoring trends through the Podcast Index API.
Podcast Index MCP Server
Connect Claude to the Podcast Index API. Search podcasts, track appearances, monitor trends.

The results shown in the demo above are sample data, not real Podcast Index responses.
About
Built and maintained by Conor Bronsdon for the Chain of Thought podcast production workflow, where it surfaces guest appearances and checks feed health during research. Conor hosts Chain of Thought, a show about AI infrastructure and how practitioners actually build with it. More tools for creators live in ai-tools-for-creators. Find Conor on X at @ConorBronsdon.
Companion tools:
Transistor MCP: Transistor.fm's official MCP server. Episodes, publishing, and analytics.
substack-mcp: read posts and manage Substack drafts
op3-mcp: report downloads, listener geography, and apps from OP3
apple-podcasts-mcp: pull plays, followers, and per-episode listening from Apple Podcasts Connect
gsc-mcp: query search performance, keywords, and sitemaps in Google Search Console
podcast-benchmark: benchmark a show against its peers using only public data
Related MCP server: Open Podcast Prefix Project (OP3) MCP Server
Prerequisites
Node.js 20.19+ or 22.12+
Free Podcast Index API credentials -- get them at api.podcastindex.org
Installation
git clone https://github.com/conorbronsdon/podcastindex-mcp.git
cd podcastindex-mcp
npm install
npm run buildConfiguration
Claude Desktop
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"podcastindex": {
"command": "node",
"args": ["/path/to/podcastindex-mcp/build/index.js"],
"env": {
"PODCASTINDEX_API_KEY": "your-api-key",
"PODCASTINDEX_API_SECRET": "your-api-secret"
}
}
}
}Claude Code
Add to your project's .mcp.json:
{
"mcpServers": {
"podcastindex": {
"command": "node",
"args": ["/path/to/podcastindex-mcp/build/index.js"],
"env": {
"PODCASTINDEX_API_KEY": "your-api-key",
"PODCASTINDEX_API_SECRET": "your-api-secret"
}
}
}
}Tools
This server is entirely read-only: every tool declares the MCP tool annotation readOnlyHint: true, so clients know no call mutates anything and can skip write-consent prompts.
Tool | Description |
| Search for episodes where a person appeared as host or guest. Returns matches across all indexed podcasts. |
| Full-text search across all podcasts by topic, show name, or keyword. |
| Search for podcasts by title. |
| Look up a podcast by RSS feed URL. Returns feed ID, iTunes ID, categories, last update, and feed health. |
| Look up a podcast by its Podcast Index feed ID. Returns full metadata. |
| Look up a podcast by its Apple Podcasts (iTunes) ID. |
| Look up a podcast by its |
| Get currently trending podcasts, with optional language and category filters. |
| Get episodes for a specific podcast by feed ID. |
| Look up a single episode by its Podcast Index episode ID. |
| Get episodes that are currently live (actively streaming). |
| Get the most recently published episodes across the entire index. |
| Get the most recently updated podcast feeds across the index. |
| Get podcast feeds newly added to the index. |
| Get value4value (lightning payment) info for a podcast by feed ID. |
| Get value4value (lightning payment) info for a podcast by feed URL. |
| Get the full list of Podcast Index categories and their IDs. |
| Get current aggregate statistics for the Podcast Index. |
Typed errors
API failures are mapped to a typed error hierarchy (PodcastIndexError base, with AuthenticationError, RateLimitError, ValidationError, NotFoundError, and ServerError subclasses keyed off HTTP status) in src/errors.ts. Every tool call still returns the same isError: true response shape on failure — the typed hierarchy just makes the message specific to what went wrong (bad credentials vs. rate limiting vs. a malformed request, etc.) instead of a single generic "API error" string.
Example Prompts
Once configured, you can ask Claude things like:
"Search Podcast Index for all episodes featuring Satya Nadella as a guest"
"What are the trending technology podcasts right now?"
"Look up the feed health for https://feeds.transistor.fm/chain-of-thought and list the last 5 episodes"
Development
Build the project:
npm run buildWatch for changes during development:
npm run watchAdding a new tool
Add the API method to
src/api-client.tsAdd type guard and argument types to
src/types.tsAdd the tool definition and handler to
src/tool-handlers.tsRebuild with
npm run build
Contributing
Issues and pull requests are welcome. If there is a Podcast Index endpoint you want exposed as a tool, open an issue describing the use case, or follow the steps above and open a PR. Bug reports should include the tool name and the arguments you passed.
Acknowledgments
This server exists because of the free, open Podcast Index API and its documentation — all tools here are thin wrappers over that API.
The expanded endpoint coverage and typed-error design in this release were inspired by Craig Lawton's podcastindex-mcp-server, an earlier MCP server for the same API. No code from that project was used here; this server's implementation, tool schemas, and error-handling code were written independently against the official API docs.
Disclaimer
This is an independent personal project, not affiliated with, sponsored by, or endorsed by any company. All views expressed are my own.
License
MIT
Available Tools
18 toolscategories_listARead-only
Get the full list of Podcast Index categories and their IDs.
Inputs: no named parameters.
episode_by_idARead-only
Look up a single episode by its Podcast Index episode ID. Returns full episode metadata including enclosure URL, duration, and transcript links where available.
Inputs: id (required), fulltext.
episodes_by_feed_idARead-only
Get episodes for a specific podcast by its Podcast Index feed ID. Use podcast_by_feed_url first to get the feed ID.
Inputs: id (required), max, since, fulltext.
episodes_liveARead-only
Get episodes that are currently live (actively streaming right now) across the Podcast Index. Useful for finding live shows in progress.
Inputs: max.
podcast_by_feed_idARead-only
Look up a podcast by its Podcast Index feed ID. Returns full metadata including categories, language, and feed health.
Inputs: id (required).
podcast_by_feed_urlARead-only
Look up a podcast by its RSS feed URL. Returns feed ID, iTunes ID, categories, last update time, and feed health. Useful for checking if your podcast is properly indexed.
Inputs: url (required).
podcast_by_guidARead-only
Look up a podcast by its podcast:guid tag value — the globally unique identifier defined in the Podcast Namespace spec. Use this when you have the GUID rather than a feed URL or ID.
Inputs: guid (required).
podcast_by_itunes_idARead-only
Look up a podcast by its Apple Podcasts (iTunes) ID. Returns full Podcast Index feed metadata.
Inputs: id (required).
recent_episodesARead-only
Get the most recent episodes across the entire Podcast Index. Useful for seeing what is being published right now in the ecosystem.
Inputs: max, before, fulltext, excludeString.
recent_feedsARead-only
Get the most recently updated podcast feeds across the entire Podcast Index, with optional language and category filters. Useful for spotting fresh activity in the ecosystem.
Inputs: cat, max, lang, since, +1 more.
recent_new_feedsARead-only
Get podcast feeds newly added to the Podcast Index, in the order they were added. Useful for discovering brand-new shows before they show up in other searches.
Inputs: max, desc, since, feedid.
search_by_personARead-only
Search for podcast episodes where a specific person appeared as host or guest. Returns episodes across all indexed podcasts — useful for tracking appearances beyond your own show.
Inputs: q (required), max, fulltext.
search_by_termARead-only
Full-text search across all podcasts in the index. Search by topic, show name, or keyword to find relevant podcasts.
Inputs: q (required), max, clean, fulltext.
search_by_titleARead-only
Search for podcasts by title. Narrower than search_by_term, which also matches descriptions and other feed metadata — use this when you already know (or are guessing at) the show name.
Inputs: q (required), max, clean, fulltext.
stats_currentARead-only
Get current aggregate statistics for the entire Podcast Index (total feeds, episodes, and related counts).
Inputs: no named parameters.
trending_podcastsARead-only
Get trending podcasts with optional filters for language and category. Useful for competitive intelligence and content planning.
Inputs: cat, max, lang, since.
value_by_feed_idARead-only
Get the value4value (lightning payment / streaming sats) information for a podcast by its Podcast Index feed ID, if the feed publishes a podcast:value block.
Inputs: id (required).
value_by_feed_urlARead-only
Get the value4value (lightning payment / streaming sats) information for a podcast by its RSS feed URL, if the feed publishes a podcast:value block.
Inputs: url (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 18 tools
Each tool has a distinct purpose: lookup by different identifiers (feed ID, URL, GUID, iTunes ID), search modes, category listing, live episodes, recent feeds/episodes, stats, trending, and value-for-value. No two tools overlap in function.
Most names follow a predictable pattern (e.g., 'action_by_key' or 'resource_description'), though there is minor mixing: 'categories_list' vs 'search_by_term', 'recent_episodes' vs 'episodes_live'. Still, the pattern is clear and readable.
18 tools cover the major aspects of a podcast index API (lookup, search, categories, live, trending, stats, value) without being overwhelming. Each tool serves a specific query need.
The set covers essential read operations with multiple lookup channels and discovery features. Minor gaps like missing episode retrieval by podcast iTunes ID could be worked around, and there's no write operations (expected for an index).
Maintenance
Related MCP Connectors
Podcast Index MCP — wraps the Podcast Index API (podcastindex.org)
Podcast booking-intelligence MCP server: search shows, match profiles, draft pitches, read replies.
Live public MCP Index. Search, recommend, and call healthy MCP servers.
An MCP server that provides tools to discover and retrieve podcast episodes transcripts.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables managing podcasts through the Podbean API via natural language conversations, including episode management, analytics, and podcast information retrieval.-
- AlicenseAqualityBmaintenanceMCP server for OP3 podcast analytics: downloads, geography, app share. Read-only.638 npm1MIT
- AlicenseAqualityFmaintenanceMCP server for the Transistor.fm API: manage podcast episodes, analytics, transcripts, and webhooks from your AI agent.2343 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables users to search for podcasts, discover trending shows, find episodes, and explore Value4Value monetization using the PodcastIndex API.3MIT