# conorbronsdon/podcastindex-mcp [Health: Active]

**Category:** 🎙️ Podcasts  
**Repository:** https://github.com/conorbronsdon/podcastindex-mcp  
**GitHub Stars:** 1  
**Views:** 1  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/conorbronsdon-podcastindex-mcp

## Description
Search the Podcast Index: podcasts, episodes, guest appearances by person, trending shows, and feed health.

## Tools
Capabilities this server exposes over MCP:

- **search_by_person** — Search for episodes where a person appeared as host or guest. Returns matches across all indexed podcasts.
- **search_by_term** — Full-text search across all podcasts by topic, show name, or keyword.
- **search_by_title** — Search for podcasts by title.
- **podcast_by_feed_url** — Look up a podcast by RSS feed URL. Returns feed ID, iTunes ID, categories, last update, and feed health.
- **podcast_by_feed_id** — Look up a podcast by its Podcast Index feed ID. Returns full metadata.
- **podcast_by_itunes_id** — Look up a podcast by its Apple Podcasts (iTunes) ID.
- **podcast_by_guid** — Look up a podcast by its `podcast:guid` tag value.
- **trending_podcasts** — Get currently trending podcasts, with optional language and category filters.
- **episodes_by_feed_id** — Get episodes for a specific podcast by feed ID.
- **episode_by_id** — Look up a single episode by its Podcast Index episode ID.
- **episodes_live** — Get episodes that are currently live (actively streaming).
- **recent_episodes** — Get the most recently published episodes across the entire index.
- **recent_feeds** — Get the most recently updated podcast feeds across the index.
- **recent_new_feeds** — Get podcast feeds newly added to the index.
- **value_by_feed_id** — Get value4value (lightning payment) info for a podcast by feed ID.
- **value_by_feed_url** — Get value4value (lightning payment) info for a podcast by feed URL.
- **categories_list** — Get the full list of Podcast Index categories and their IDs.
- **stats_current** — Get current aggregate statistics for the Podcast Index.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "podcastindex-mcp": {
    "command": "npx",
    "args": ["-y","conorbronsdon-podcastindex-mcp"],
    "env": {
      "PODCASTINDEX_API_KEY": "",
      "PODCASTINDEX_API_SECRET": ""
    }
  }
}
```

**Requires environment variables:** `PODCASTINDEX_API_KEY`, `PODCASTINDEX_API_SECRET` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation & README

<div align="center">

# Podcast Index MCP Server

Connect Claude to the Podcast Index API. Search podcasts, track appearances, monitor trends.

[![GitHub stars](https://img.shields.io/github/stars/conorbronsdon/podcastindex-mcp?style=social)](https://github.com/conorbronsdon/podcastindex-mcp/stargazers)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square)](LICENSE)
[![npm version](https://img.shields.io/npm/v/podcastindex-mcp?style=flat-square)](https://www.npmjs.com/package/podcastindex-mcp)
[![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)
[![X](https://img.shields.io/badge/X-@ConorBronsdon-black?style=flat-square&logo=x)](https://x.com/ConorBronsdon)

</div>

---

![Demo: search_by_person tool call and response](https://raw.githubusercontent.com/conorbronsdon/podcastindex-mcp/HEAD/docs/demo.gif)

The results shown in the demo above are sample data, not real Podcast Index responses.

<a href="https://glama.ai/mcp/servers/conorbronsdon/podcastindex-mcp">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/conorbronsdon/podcastindex-mcp/badge" alt="podcastindex-mcp MCP server" />
</a>

## About

Built 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).

**Companion tools:**
- [Transistor-MCP](https://github.com/conorbronsdon/Transistor-MCP): manage podcast episodes, analytics, and transcripts on Transistor.fm
- [substack-mcp](https://github.com/conorbronsdon/substack-mcp): read posts and manage Substack drafts
- [op3-mcp](https://github.com/conorbronsdon/op3-mcp): report downloads, listener geography, and apps from OP3
- [apple-podcasts-mcp](https://github.com/conorbronsdon/apple-podcasts-mcp): pull plays, followers, and per-episode listening from Apple Podcasts Connect
- [gsc-mcp](https://github.com/conorbronsdon/gsc-mcp): query search performance, keywords, and sitemaps in Google Search Console
- [podcast-benchmark](https://github.com/conorbronsdon/podcast-benchmark): benchmark a show against its peers using only public data

## Prerequisites

- Node.js 18+
- Free Podcast Index API credentials -- get them at [api.podcastindex.org](https://api.podcastindex.org/)

## Installation

```bash
git clone https://github.com/conorbronsdon/podcastindex-mcp.git
cd podcastindex-mcp
npm install
npm run build
```

## Configuration

### Claude Desktop

Add to your Claude Desktop config (`claude_desktop_config.json`):

```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`:

```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](https://modelcontextprotocol.io/docs/concepts/tools#tool-annotations) `readOnlyHint: true`, so clients know no call mutates anything and can skip write-consent prompts.

| Tool | Description |
|------|-------------|
| `search_by_person` | Search for episodes where a person appeared as host or guest. Returns matches across all indexed podcasts. |
| `search_by_term` | Full-text search across all podcasts by topic, show name, or keyword. |
| `search_by_title` | Search for podcasts by title. |
| `podcast_by_feed_url` | Look up a podcast by RSS feed URL. Returns feed ID, iTunes ID, categories, last update, and feed health. |
| `podcast_by_feed_id` | Look up a podcast by its Podcast Index feed ID. Returns full metadata. |
| `podcast_by_itunes_id` | Look up a podcast by its Apple Podcasts (iTunes) ID. |
| `podcast_by_guid` | Look up a podcast by its `podcast:guid` tag value. |
| `trending_podcasts` | Get currently trending podcasts, with optional language and category filters. |
| `episodes_by_feed_id` | Get episodes for a specific podcast by feed ID. |
| `episode_by_id` | Look up a single episode by its Podcast Index episode ID. |
| `episodes_live` | Get episodes that are currently live (actively streaming). |
| `recent_episodes` | Get the most recently published episodes across the entire index. |
| `recent_feeds` | Get the most recently updated podcast feeds across the index. |
| `recent_new_feeds` | Get podcast feeds newly added to the index. |
| `value_by_feed_id` | Get value4value (lightning payment) info for a podcast by feed ID. |
| `value_by_feed_url` | Get value4value (lightning payment) info for a podcast by feed URL. |
| `categories_list` | Get the full list of Podcast Index categories and their IDs. |
| `stats_current` | 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:

```bash
npm run build
```

Watch for changes during development:

```bash
npm run watch
```

### Adding a new tool

1. Add the API method to `src/api-client.ts`
2. Add type guard and argument types to `src/types.ts`
3. Add the tool definition and handler to `src/tool-handlers.ts`
4. Rebuild 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](https://podcastindex.org/) API and its [documentation](https://podcastindex-org.github.io/docs-api/) — 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](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.

---

## 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

