Skip to content
Back to writing
Guide3 min read

How to Add the RevenueCat MCP Server to Claude Code

Two commands connect RevenueCat to Claude Code: the official plugin or the hosted MCP server. OAuth versus API key, how to check it works, and which tools to allowlist.

RevenueCatClaude CodeMCPIn-App PurchasesCouncil
The headline RevenueCat inside Claude Code beside a terminal-style card showing the claude mcp add command for mcp.revenuecat.ai, an OAuth connected line, and a list-projects call, with a footer reading reads allowed, writes ask

RevenueCat runs a hosted MCP server at https://mcp.revenuecat.ai/mcp, and Claude Code can talk to it after one command. There are two ways to connect it: the official plugin, or the bare server. This is the short version of both. I use it on Council, and the wider setup with Supabase and Vercel is in the three-server post.

Option 1: the RevenueCat plugin

RevenueCat’s own docs recommend this route for Claude Code. It registers the MCP server and adds skills on top of it, for jobs like integrating the SDK, building a paywall, and troubleshooting empty offerings:

claude plugins marketplace add RevenueCat/ai-toolkit
claude plugins install revenuecat

Tools installed this way are named mcp__plugin_RevenueCat_RevenueCat__<tool>. That prefix matters later, when you write permission rules.

Option 2: the hosted MCP server on its own

If you only want the tools and no skills:

claude mcp add --transport http revenuecat https://mcp.revenuecat.ai/mcp

Nothing is installed locally. The server is remote, and Claude Code calls it over HTTP.

OAuth or an API key

OAuth is the default and what RevenueCat recommends. The first time Claude Code uses the server, a browser window opens, you log in to RevenueCat and grant access. Run /mcp inside Claude Code to start that login yourself or to see the connection state. There is no key to store.

An API v2 secret key works everywhere, including clients without OAuth support. Create one under API Keys in the RevenueCat dashboard and pass it as a header:

claude mcp add --transport http revenuecat https://mcp.revenuecat.ai/mcp \
  --header "Authorization: Bearer sk_..."

Three things to get right with a key:

  • Pick the permission on purpose. A read-only key is enough to inspect products, offerings and metrics. Creating or changing anything needs a write-enabled key.
  • Make a dedicated key for MCP. You can revoke it without touching the one your backend uses.
  • Keep it out of the repository. Don’t add the server with --scope project when it carries a key: that scope writes .mcp.json, which is meant to be committed.

Check that it works

Ask for something read-only:

List my RevenueCat projects.

Claude Code should call list-projects and return your project names. If it answers from memory instead, the server isn’t connected: /mcp shows why.

What it can do

The server covers most of the dashboard. The groups I reach for:

Area Example tools
Products and prices list-products, create-product, get-product-store-state
Entitlements create-entitlement, attach-products-to-entitlement
Offerings and packages create-offering, create-packages, attach-products-to-package
Customers get-customer, list-subscriptions
Metrics get-overview-metrics, get-chart-data

There are also tools for paywalls, experiments, targeting, virtual currencies and webhooks.

The part that paid off for Council was catalog setup. In-app purchases need products, entitlements, offerings and packages, created in the right order and each pointing at the others. With the server connected, that was one request: create a pro entitlement, attach the monthly and annual products, put them in a default offering. Claude Code made the calls and then read the state back to confirm it.

Allowlist the reads, keep the writes asking

MCP tools go through Claude Code’s normal permission system. Council’s .claude/settings.json lets the harmless read-only tools run without a prompt:

{
  "permissions": {
    "allow": [
      "mcp__plugin_RevenueCat_RevenueCat__list-projects",
      "mcp__plugin_RevenueCat_RevenueCat__list-products",
      "mcp__plugin_RevenueCat_RevenueCat__get-product-store-state"
    ]
  }
}

Everything that creates, updates or submits still prompts. With the bare server from option 2, the names are mcp__revenuecat__<tool> instead.

If you’re building a subscription product across web and mobile and want it shipped end to end, get in touch.

Pavel Smolin · October 3, 2026

Related articles

Guide4 min read

How to Add the Supabase MCP Server to Claude Code

One command connects Supabase to Claude Code through the hosted MCP server: OAuth or a personal access token, project scoping, read-only mode, and the tools to allowlist.