Skip to main content
Glama
README.md
# Captivate MCP

An [MCP](https://modelcontextprotocol.io) server for [Captivate.fm](https://www.captivate.fm) podcast hosting. It lets Claude (or any MCP client) read your shows, episodes and listening analytics, so you can ask things like:

- *"How did last week's episode do in its first 7 days compared to the previous three?"*
- *"Which countries and apps do my listeners use this quarter?"*
- *"Show me monthly downloads for the past year."*

The server is **read-only**: it never creates, edits or publishes anything in your Captivate account.

> Unofficial project, not affiliated with Captivate. Built on the public [Captivate API](https://docs.captivate.fm).

## Tools

| Tool | What it returns |
|---|---|
| `list_shows` | All podcasts you have access to |
| `get_show` | Show details and RSS feed URL |
| `list_episodes` | Episodes of a show (optionally scheduled only, filtered by title) |
| `get_episode` | Full episode details: show notes, media, transcript fields |
| `get_overview_analytics` | Downloads and unique listeners for a show or episode in a date range |
| `get_total_downloads` | All-time downloads for a show or episode |
| `get_monthly_downloads` | Downloads per month, past 12 months |
| `get_average_downloads` | Average downloads per interval (default 28 days) |
| `get_range_analytics` | Time series plus breakdowns by country, app, OS, device, episode |
| `compare_episodes` | Side-by-side performance of two or more episodes |
| `get_web_player_analytics` | Listening behaviour and drop-off in Captivate's web player |

## Get your API credentials

In Captivate, open **My Account → API** and generate an API token. You need two values:

- `CAPTIVATE_USER_ID` – your user ID shown on that page
- `CAPTIVATE_API_TOKEN` – the API token

## Install

Requires Node.js 18 or newer.

### Claude Code

```bash
claude mcp add captivate \
  -e CAPTIVATE_USER_ID=your-user-id \
  -e CAPTIVATE_API_TOKEN=your-api-token \
  -- npx -y github:DannyOosterveer/captivate-mcp
```

### Claude Desktop

Add this to `claude_desktop_config.json` (Settings → Developer → Edit Config):

```json
{
  "mcpServers": {
    "captivate": {
      "command": "npx",
      "args": ["-y", "github:DannyOosterveer/captivate-mcp"],
      "env": {
        "CAPTIVATE_USER_ID": "your-user-id",
        "CAPTIVATE_API_TOKEN": "your-api-token"
      }
    }
  }
}
```

### From source

```bash
git clone https://github.com/DannyOosterveer/captivate-mcp.git
cd captivate-mcp
npm install
```

Then point your MCP client at `node /path/to/captivate-mcp/dist/index.js` with the two environment variables set.

## Notes

- Dates are ISO 8601 (`2026-01-31` or `2026-01-31T00:00:00Z`).
- The API token is exchanged for a session token on first use and refreshed automatically when it expires.
- `CAPTIVATE_API_URL` can override the API base URL (default `https://api.captivate.fm`).

## License

MIT

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation4/5

Core show and episode tools are clearly distinct, and most analytics tools are separated by metric or granularity. However, get_overview_analytics and get_range_analytics both return date-range download data and could still be confused for general download queries.

Naming Consistency5/5

All tool names use snake_case with predictable prefixes: list_, get_, and compare_. Resource names are clear and the pattern is applied consistently across the entire set.

Tool Count4/5

Eleven tools is a reasonable size for a read/analytics-focused podcast server. The set is slightly analytics-heavy with six analytics-related tools, but each maps to a distinct metric or reporting mode.

Completeness4/5

The surface covers show and episode retrieval plus a broad analytics range including totals, monthly trends, averages, detailed ranges, web-player behaviour, and episode comparisons. Gaps are minor if this is intended as a read-only server: there are no write or lifecycle management operations, and web-player analytics is only exposed at episode level.

Maintenance

ActivityMaintained
ResponsivenessNo issues