{
  "markdown": "<div align=\"center\">\n\n# Podcast Index MCP Server\n\nConnect Claude to the Podcast Index API. Search podcasts, track appearances, monitor trends.\n\n[![GitHub stars](https://img.shields.io/github/stars/conorbronsdon/podcastindex-mcp?style=social)](https://github.com/conorbronsdon/podcastindex-mcp/stargazers)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)\n[![npm version](https://img.shields.io/npm/v/podcastindex-mcp?style=flat-square)](https://www.npmjs.com/package/podcastindex-mcp)\n[![Podcast](https://img.shields.io/badge/Podcast-Chain_of_Thought-purple?style=flat-square)](https://chainofthought.show/?utm_source=github&utm_medium=referral&utm_campaign=repo-readme&utm_content=podcastindex-mcp)\n[![X](https://img.shields.io/badge/X-@ConorBronsdon-black?style=flat-square&logo=x)](https://x.com/ConorBronsdon)\n\n</div>\n\n---\n\n![Demo: search_by_person tool call and response](docs/demo.gif)\n\nThe results shown in the demo above are sample data, not real Podcast Index responses.\n\n<a href=\"https://glama.ai/mcp/servers/conorbronsdon/podcastindex-mcp\">\n  <img width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/conorbronsdon/podcastindex-mcp/badge\" alt=\"podcastindex-mcp MCP server\" />\n</a>\n\n## About\n\nBuilt and maintained by [Conor Bronsdon](https://github.com/conorbronsdon) for the [Chain of Thought](https://chainofthought.show/?utm_source=github&utm_medium=referral&utm_campaign=repo-readme&utm_content=podcastindex-mcp) 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](https://github.com/conorbronsdon/ai-tools-for-creators). Find Conor on X at [@ConorBronsdon](https://x.com/ConorBronsdon).\n\n**Companion tools:**\n- [Transistor-MCP](https://github.com/conorbronsdon/Transistor-MCP): manage podcast episodes, analytics, and transcripts on Transistor.fm\n- [substack-mcp](https://github.com/conorbronsdon/substack-mcp): read posts and manage Substack drafts\n- [op3-mcp](https://github.com/conorbronsdon/op3-mcp): report downloads, listener geography, and apps from OP3\n- [apple-podcasts-mcp](https://github.com/conorbronsdon/apple-podcasts-mcp): pull plays, followers, and per-episode listening from Apple Podcasts Connect\n- [gsc-mcp](https://github.com/conorbronsdon/gsc-mcp): query search performance, keywords, and sitemaps in Google Search Console\n- [podcast-benchmark](https://github.com/conorbronsdon/podcast-benchmark): benchmark a show against its peers using only public data\n\n## Prerequisites\n\n- Node.js 18+\n- Free Podcast Index API credentials -- get them at [api.podcastindex.org](https://api.podcastindex.org/)\n\n## Installation\n\n```bash\ngit clone https://github.com/conorbronsdon/podcastindex-mcp.git\ncd podcastindex-mcp\nnpm install\nnpm run build\n```\n\n## Configuration\n\n### Claude Desktop\n\nAdd to your Claude Desktop config (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"podcastindex\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/podcastindex-mcp/build/index.js\"],\n      \"env\": {\n        \"PODCASTINDEX_API_KEY\": \"your-api-key\",\n        \"PODCASTINDEX_API_SECRET\": \"your-api-secret\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code\n\nAdd to your project's `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"podcastindex\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/podcastindex-mcp/build/index.js\"],\n      \"env\": {\n        \"PODCASTINDEX_API_KEY\": \"your-api-key\",\n        \"PODCASTINDEX_API_SECRET\": \"your-api-secret\"\n      }\n    }\n  }\n}\n```\n\n## Tools\n\nThis server is entirely read-only: every tool declares the MCP [tool annotation](https://modelcontextprotocol.io/docs/concepts/tools#tool-annotations) `readOnlyHint: true`, so clients know no call mutates anything and can skip write-consent prompts.\n\n| Tool | Description |\n|------|-------------|\n| `search_by_person` | Search for episodes where a person appeared as host or guest. Returns matches across all indexed podcasts. |\n| `search_by_term` | Full-text search across all podcasts by topic, show name, or keyword. |\n| `search_by_title` | Search for podcasts by title. |\n| `podcast_by_feed_url` | Look up a podcast by RSS feed URL. Returns feed ID, iTunes ID, categories, last update, and feed health. |\n| `podcast_by_feed_id` | Look up a podcast by its Podcast Index feed ID. Returns full metadata. |\n| `podcast_by_itunes_id` | Look up a podcast by its Apple Podcasts (iTunes) ID. |\n| `podcast_by_guid` | Look up a podcast by its `podcast:guid` tag value. |\n| `trending_podcasts` | Get currently trending podcasts, with optional language and category filters. |\n| `episodes_by_feed_id` | Get episodes for a specific podcast by feed ID. |\n| `episode_by_id` | Look up a single episode by its Podcast Index episode ID. |\n| `episodes_live` | Get episodes that are currently live (actively streaming). |\n| `recent_episodes` | Get the most recently published episodes across the entire index. |\n| `recent_feeds` | Get the most recently updated podcast feeds across the index. |\n| `recent_new_feeds` | Get podcast feeds newly added to the index. |\n| `value_by_feed_id` | Get value4value (lightning payment) info for a podcast by feed ID. |\n| `value_by_feed_url` | Get value4value (lightning payment) info for a podcast by feed URL. |\n| `categories_list` | Get the full list of Podcast Index categories and their IDs. |\n| `stats_current` | Get current aggregate statistics for the Podcast Index. |\n\n### Typed errors\n\nAPI 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.\n\n## Example Prompts\n\nOnce configured, you can ask Claude things like:\n\n- \"Search Podcast Index for all episodes featuring Satya Nadella as a guest\"\n- \"What are the trending technology podcasts right now?\"\n- \"Look up the feed health for https://feeds.transistor.fm/chain-of-thought and list the last 5 episodes\"\n\n## Development\n\nBuild the project:\n\n```bash\nnpm run build\n```\n\nWatch for changes during development:\n\n```bash\nnpm run watch\n```\n\n### Adding a new tool\n\n1. Add the API method to `src/api-client.ts`\n2. Add type guard and argument types to `src/types.ts`\n3. Add the tool definition and handler to `src/tool-handlers.ts`\n4. Rebuild with `npm run build`\n\n## Contributing\n\nIssues 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.\n\n## Acknowledgments\n\nThis server exists because of the free, open [Podcast Index](https://podcastindex.org/) API and its [documentation](https://podcastindex-org.github.io/docs-api/) — all tools here are thin wrappers over that API.\n\nThe expanded endpoint coverage and typed-error design in this release were inspired by Craig Lawton's [podcastindex-mcp-server](https://github.com/cclawton/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.\n\n---\n\n## Disclaimer\n\n*This is an independent personal project, not affiliated with, sponsored by, or endorsed by any company. All views expressed are my own.*\n\n## License\n\nMIT\n",
  "bytes": 7807,
  "sha": "2a8c1e01d6fb69a8409d9875368ed2bedb5a918fd37ffb859b4cf03192e466d7",
  "repo_slug": "conorbronsdon/podcastindex-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_conorbronsdon_podcastindex_mcp_020a93b8/readme"
}