OP3 MCP Server & CLI logo

OP3 MCP Server & CLI

OP3 MCP server and CLI for Claude Code, Codex and AI agents. 22 tools for open podcast analytics: downloads, unique listeners, retention, geography, app and device share, listening patterns and episode curves.

Install OP3 MCP Server & CLI

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "thenavidm-op3-mcp-cli": {
      "command": "npx",
      "args": [
        "-y",
        "@thenavidm/op3-mcp-cli"
      ]
    }
  }
}

Settings โ†’ Developer โ†’ Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Install not yet sandbox-testedโ€” we haven't run this command through our automated sandbox yet. Not a red flag; we're working through the catalog.

Overview

Security & health

What it can reach and how reliably it runs โ€” from our own checks, not the maintainerโ€™s claims.

ActiveLast checked 3d ago

Recent health check succeeded.

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 8d ago via OSV.dev ยท @thenavidm/op3-mcp-cli (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks โ€” not a rating.

npm downloads823Package downloads in the last 30 days.
Last commit13d agoMost recent push to the default branch.

From the project README

OP3

OP3 MCP

Stars License npm Downloads YouTube X LinkedIn

OP3 sits in front of the audio file, so it counts every download whatever app made it.

That is why its numbers differ from Apple's or Spotify's, which each report only their own listeners.

22 tools, including unique listeners, retention cohorts and episode benchmark curves that OP3's own API does not expose.

Built and maintained by Navid Moazzez. Built on Slipway, which turns one definition of each tool into the MCP server and the CLI.

Claude Code using the OP3 MCP server

Two ways to use it

Command line

op3-cli runs every tool as a command. Agents that run commands, like Claude Code, Codex and OpenCode, use it on their own, and you can type the same commands in a terminal, a script or a cron job:

Terminal
npm install -g @thenavidm/op3-mcp-cli
op3-cli                                   # every command
op3-cli op3-global-app-share --agent
op3-cli op3-get-show --identifier https://feeds.example.com/show.xml
op3-cli op3-show-downloads --help
op3-cli which listener retention          # find the command for a task

Every command reads OP3's public data, so nothing asks for --confirm. --agent is JSON on one line for scripts and agents, and --select a,b.c keeps only the fields you name.

op3-cli schema <command> prints the exact JSON Schema an MCP client receives for that tool.

MCP server, for AI agents

op3-mcp is what Claude Code, Claude Desktop, Cursor and the rest launch. You never run it by hand:

Terminal
claude mcp add op3 -- npx -y @thenavidm/op3-mcp-cli

In Claude Desktop, the .mcpb extension installs on a double click. Section 4 has every other client.

Contents

  1. What you can ask it
  2. Quick install
  3. Setup
  4. Connect your client
  5. Check it worked
  6. What it costs to have connected
  7. Tools
  8. Reading the numbers
  9. Your data
  10. Troubleshooting

1. What you can ask it ๐Ÿ’ฌ

  • How many downloads did my podcast get this month?
  • How many actual people is that, not downloads?
  • Are my listeners coming back, or is it a new audience every month?
  • Is this week's episode tracking ahead or behind my usual?
  • Where in the world is my audience, down to the state?
  • Which podcast apps do my listeners use, and is that unusual?
  • Compare my show against these three others.
  • What day and hour do most downloads happen?
  • Which of my episodes share the same listeners?
  • OP3 shows nothing for my feed. What is wrong?

The one that is impossible without this server is the second. Every podcast analytics dashboard reports downloads. A download is an app fetching a file, not a person, and one listener whose app re-requests across three days counts three times. OP3's raw rows carry a privacy-preserving per-listener hash, so unique listeners, returning listeners and retention can be computed from them. None of OP3's own aggregated endpoints expose that, and this server does.

2. Quick install โšก

Node 22 or newer. Nothing else.

Terminal
npx -y @thenavidm/op3-mcp-cli@latest --version

That is the whole install. npx fetches it on demand, so there is nothing to update later: with @latest, a new version reaches you the next time your client starts the server.

To build from source instead:

bash
git clone https://github.com/thenavidm/op3-mcp-cli.git
cd op3-mcp
npm install
npm run build
npm test
node dist/index.js --version

3. Setup ๐Ÿ”‘

You can skip this. The server works with no credential at all, because OP3 publishes a shared preview token and that is what it falls back to. It is rate limited and OP3 can withdraw it, so get your own before relying on it.

Have an agent do it

The agent cannot sign in to OP3 for you. What it can do is walk you through it and wire up the config.

Paste this into Claude Code, Cursor, or any agent with terminal access:

Code
Help me set up the OP3 MCP server.

1. Open https://op3.dev/api/keys and tell me what to click to create an
   API key and its bearer token.
2. Stop and wait for me to paste the token back.
3. Add the server to my MCP client config with that token as OP3_TOKEN.
4. Run the doctor command and tell me whether it worked.

Or do it yourself

  1. Go to op3.dev/api/keys.
  2. Create an API key and copy its bearer token.
  3. Set it as OP3_TOKEN in your client config, as in section 4.

You do not need to own a podcast. The token reads public OP3 data, which covers every show that has the OP3 prefix on its feed.

To revoke

Delete the key at op3.dev/api/keys. It stops working immediately.

If you want your own show in here

Your podcast needs the OP3 prefix on its episode audio URLs. That is a change to your feed, not to this server, and it is documented at op3.dev/setup. Until a listener downloads an episode through the prefix, OP3 has no data for your show and neither does this.

4. Connect your client ๐Ÿ”Œ

The long version, every step with what to do when one fails, is in INSTALL.md.

OP3_TOKEN is optional in every block below. Leave it out to use OP3's preview token.

Claude Code

Terminal
claude mcp add op3 \
  -e OP3_TOKEN=your-token \
  -- npx -y @thenavidm/op3-mcp-cli@latest

Add --scope user to make it available in every project rather than just this one.

Claude Desktop

The short way: download the .mcpb extension from the latest release and double-click it. It carries its own dependencies, so there is no config file to edit and nothing to install first. It asks for an OP3 token, which is optional.

The long way, if you would rather edit the config yourself:

PlatformConfig path
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
config.json
{
  "mcpServers": {
    "op3": {
      "command": "npx",
      "args": ["-y", "@thenavidm/op3-mcp-cli@latest"],
      "env": { "OP3_TOKEN": "your-token" }
    }
  }
}

Tip Claude Desktop does not inherit your shell PATH. If npx is not found, use the absolute path from which npx.

Quit Claude Desktop completely and reopen it.

claude.ai on the web

claude.ai runs a connector from Anthropic's cloud rather than your machine, so it cannot launch a local command. It needs a public HTTPS URL.

Run the server over HTTP:

Terminal
npx -y @thenavidm/op3-mcp-cli@latest --http --port 8000

Host it somewhere with a public HTTPS URL, then in claude.ai go to Customize, Connectors, +, Add custom connector, paste the URL and click Add.

On Team and Enterprise plans an owner adds it first under Organization settings, Connectors, then each member enables it under Customize, Connectors.

It binds to 127.0.0.1 by default, which is all a tunnel or a proxy on the same machine needs. To accept connections from outside the machine, set OP3_HTTP_HOST=0.0.0.0 together with OP3_HTTP_TOKEN, a bearer token every request must send: without one, the server refuses to listen beyond this machine.

Cursor

.cursor/mcp.json, same JSON shape as Claude Desktop, key mcpServers.

Windsurf

~/.codeium/windsurf/mcp_config.json, key mcpServers.

VS Code

.vscode/mcp.json. The key is servers, not mcpServers, and each entry takes "type": "stdio".

config.json
{
  "servers": {
    "op3": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@thenavidm/op3-mcp-cli@latest"],
      "env": { "OP3_TOKEN": "your-token" }
    }
  }
}

Codex CLI

~/.codex/config.toml:

toml
[mcp_servers.op3]
command = "npx"
args = ["-y", "@thenavidm/op3-mcp-cli@latest"]

[mcp_servers.op3.env]
OP3_TOKEN = "your-token"

Gemini CLI

~/.gemini/settings.json, key mcpServers.

Everything else

Any stdio MCP client takes the same three things: the command npx, the args, and the env block.

Docker

Terminal
docker build -t op3-mcp .
docker run --rm -i -e OP3_TOKEN=your-token op3-mcp

5. Check it worked ๐Ÿฉบ

Terminal
npx -y @thenavidm/op3-mcp-cli@latest doctor

It tests the token against the cheapest OP3 endpoint, tests the raw query endpoints separately because they fail for their own reasons, and prints the settings in force.

Reviews

No reviews yet โ€” be the first to share how it worked for you.

Frequently Asked Questions about OP3 MCP Server & CLI

Add the following block to your claude_desktop_config.json under mcpServers: "mcpServers": { "op3-mcp-server-cli": { "command": "npx", "args": ["-y","@thenavidm/op3-mcp-cli"] } }

OP3 MCP server and CLI for Claude Code, Codex and AI agents. 22 tools for open podcast analytics: downloads, unique listeners, retention, geography, app and device share, listening patterns and episode curves.

We don't have confirmed pricing for OP3 MCP Server & CLI. Listing it on AllMCPs is free, but that says nothing about what the server itself costs โ€” check the project's own site for current pricing.

Related MCP servers

Add a badge to your READMEShow itโ€™s listed โ€” live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewOP3 MCP Server & CLI AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/thenavidm-op3-mcp-cli?style=directory)](https://allmcps.com/mcp/thenavidm-op3-mcp-cli)
HTML Embed
<a href="https://allmcps.com/mcp/thenavidm-op3-mcp-cli"><img src="https://allmcps.com/api/badge/thenavidm-op3-mcp-cli?style=directory" alt="OP3 MCP Server & CLI on AllMCPs" /></a>