revenuecat-charts-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@revenuecat-charts-mcpWhat's my current MRR?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
revenuecat-charts-mcp
An MCP server that gives AI agents native access to RevenueCat's Charts API. Ask your agent about MRR, churn, trials, revenue, and 17 more subscription metrics — in natural language.
Built by Rev, an AI agent applying to be RevenueCat's first Agentic AI Developer & Growth Advocate.
Why
Agents are building and monetizing apps. But subscription analytics tools were designed for humans staring at dashboards.
This MCP server closes that gap. Install it, give your agent a RevenueCat API key, and it can check MRR trends, monitor churn, analyze trial conversions, and compare revenue by country — all through natural language.
Related MCP server: indie-metrics-mcp
Quick Start
Claude Code
claude mcp add revenuecat-charts-mcp -- node /path/to/revenuecat-charts-mcp/build/index.jsClaude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"revenuecat-charts": {
"command": "node",
"args": ["/path/to/revenuecat-charts-mcp/build/index.js"]
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"revenuecat-charts": {
"command": "node",
"args": ["/path/to/revenuecat-charts-mcp/build/index.js"]
}
}
}From Source
git clone https://github.com/joeyaflores/revenuecat-charts-mcp.git
cd revenuecat-charts-mcp
npm install
npm run buildTools
rc_list_metrics
List all 21 available chart metrics with descriptions.
"What subscription metrics can I query?"
"Show me the revenue-related metrics"Parameters:
category(optional): Filter byrevenue,actives,trials,conversion, orcohorts. Default:all
rc_get_overview
Get a real-time snapshot of key subscription health metrics. No date range needed.
"What's my current MRR?"
"Give me a subscription health check"Parameters:
api_key(required): RevenueCat secret API key (sk_...)project_id(optional): RevenueCat project ID. Auto-detected if omitted.
Returns: Active trials, active subscriptions, MRR, revenue, new customers, active users, and transaction count.
rc_get_chart
Query any metric as a time series with flexible date ranges and resolution.
"Show me MRR for the last 12 months"
"What's my churn rate week over week this quarter?"
"Break down revenue by country for 2025"Parameters:
api_key(required): RevenueCat secret API key (sk_...)metric(required): One of 21 metric names (userc_list_metricsto see all)start_date(required): Start date (YYYY-MM-DD)end_date(required): End date (YYYY-MM-DD)resolution(optional):day,week, ormonth. Default:monthsegment(optional): Segment by dimension (e.g.,country)project_id(optional): RevenueCat project ID. Auto-detected if omitted.
Returns: Formatted markdown table with dates, all measures, and summary statistics.
Available Metrics
Category | Metrics |
Revenue |
|
Subscriptions |
|
Trials |
|
Conversion |
|
Cohorts |
|
Example Output
Overview:
# Subscription Overview
- **Active Trials**: 58 _(In total)_
- **Active Subscriptions**: 2,517 _(In total)_
- **MRR**: $4,534 _(Monthly Recurring Revenue)_
- **Revenue**: $4,747 _(Last 28 days)_
- **New Customers**: 1,623 _(Last 28 days)_
- **Active Users**: 14,062 _(Last 28 days)_Churn (monthly):
| Date | Actives (#) | Churned Actives (#) | Churn Rate (%) |
| --- | --- | --- | --- |
| 2025-10-01 | 2,492 | 267 | 10.71% |
| 2025-11-01 | 2,403 | 165 | 6.87% |
| 2025-12-01 | 2,470 | 165 | 6.68% |
| 2026-01-01 | 2,471 | 188 | 7.61% |
| 2026-02-01 | 2,535 | 169 | 6.67% |Requirements
Node.js 18+
RevenueCat secret API key with Charts metrics permission
License
MIT
Available Tools
3 toolsrc_get_chartGet Chart DataARead-onlyIdempotent
Query any RevenueCat Charts API metric as a time series. Returns formatted markdown table with dates, measures, and summary statistics.
Supports 21 metrics across revenue, subscriptions, trials, conversion, and cohorts. Use rc_list_metrics to discover available metrics.
Args:
api_key (string): RevenueCat secret API key starting with "sk_"
metric (string): Chart metric name. Common values: "mrr", "revenue", "churn", "actives", "trials", "trial_conversion_rate", "ltv_per_customer"
start_date (string): Start date in YYYY-MM-DD format
end_date (string): End date in YYYY-MM-DD format
resolution (string, optional): "day", "week", or "month" (default: "month")
segment (string, optional): Dimension to segment by (e.g., "country")
project_id (string, optional): RevenueCat project ID. Auto-detected if omitted.
Returns: Markdown with chart description, period, resolution, summary statistics, and a data table. Multi-measure charts (like churn) include all measures as columns. Segmented charts show top 10 segments as columns.
Examples:
"Show me MRR for 2025" -> metric="mrr", start_date="2025-01-01", end_date="2025-12-31"
"What's my churn week over week?" -> metric="churn", resolution="week"
"Break down revenue by country" -> metric="revenue", segment="country"
"How are trial conversions trending?" -> metric="trial_conversion_rate"
Error Handling:
Invalid metric: returns list of valid metric names
Rate limited: auto-retries up to 3 times with backoff
Invalid date format: returns error with expected format
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | Chart metric to query (use rc_list_metrics to see all). Common: mrr, revenue, churn, actives, trials | |
| api_key | Yes | RevenueCat secret API key (starts with sk_) | |
| segment | No | Segment dimension (e.g., 'country' for geographic breakdown) | |
| end_date | Yes | End date in YYYY-MM-DD format | |
| project_id | No | RevenueCat project ID (e.g., 'proj058a6330'). Auto-detected if omitted. | |
| resolution | No | Data resolution: day, week, or month (default: month) | month |
| start_date | Yes | Start date in YYYY-MM-DD format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes well beyond the annotations by detailing output format (markdown table with summary statistics), multi-measure chart behavior, segmented chart top-10 columns, and error handling including auto-retry with backoff and invalid metric responses. This provides rich behavioral context not available from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-organized into sections (overview, args, returns, examples, error handling). Every section provides essential information; the examples and error handling add value over schema. Slightly verbose due to repetition of some parameter details, but overall efficient for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers all parameters, output format, examples, and error handling. With no output schema, it still explains return values clearly. For a tool with 7 parameters and 21 possible metrics, this is comprehensive and complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 100% schema coverage, the description adds substantial meaning with natural language examples, common metric values, default resolution, auto-detection of project_id, and date format clarification. This goes far beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries RevenueCat Charts API metrics as a time series and returns a formatted markdown table. It explicitly distinguishes its purpose from sibling tools by mentioning rc_list_metrics for metric discovery and focusing on chart data with summary statistics, which is distinct from an overview tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance through examples that map natural language queries to parameter values, and mentions using rc_list_metrics to discover available metrics. It does not explicitly contrast with rc_get_overview, but the examples and parameter explanations give clear context for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rc_get_overviewGet Subscription OverviewARead-onlyIdempotent
Get a real-time snapshot of key subscription health metrics. No date range needed — returns current state.
Args:
api_key (string): RevenueCat secret API key starting with "sk_"
project_id (string, optional): RevenueCat project ID (e.g., "proj058a6330"). Auto-detected if omitted.
Returns: Markdown summary with: Active Trials, Active Subscriptions, MRR ($), Revenue (28d), New Customers (28d), Active Users (28d), Transactions (28d).
Examples:
"What's my current MRR?" -> call with just api_key
"Give me a subscription health check" -> call with just api_key
"How many active subscribers do I have?" -> call with just api_key
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | RevenueCat secret API key (starts with sk_) | |
| project_id | No | RevenueCat project ID (e.g., 'proj058a6330'). Auto-detected if omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, and the description adds the return format (Markdown summary with specific metrics) and auto-detection of project_id. It also discloses that api_key is required and that project_id is auto-detected, which is behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear one-sentence summary, followed by Args, Returns, and Examples sections. No unnecessary fluff; every section adds value and it is front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with two parameters and no output schema, the description explains what it returns (specific metrics list), how to call it, and provides three usage examples. It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully describes both parameters (100% coverage), and the description reinforces api_key format and adds auto-detection behavior for project_id with an example. This adds meaningful context beyond the schema's static description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and resource 'overview' of 'subscription health metrics', clearly distinguishing it from sibling tools like rc_list_metrics and rc_get_chart. It states it returns a real-time snapshot without a date range, which is a unique scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context by stating 'No date range needed — returns current state' and gives example questions for when to call it. However, it does not explicitly mention when not to use it or direct to alternatives like rc_list_metrics or rc_get_chart, so there are no explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rc_list_metricsList RevenueCat Chart MetricsARead-onlyIdempotent
List all available RevenueCat Charts API metrics with descriptions. Use this to discover what subscription data you can query before calling rc_get_chart.
Args:
category (string): Filter by category — "all", "revenue", "actives", "trials", "conversion", or "cohorts" (default: "all")
Returns: Markdown-formatted list of metrics grouped by category, each with metric name (for use in rc_get_chart) and description.
Examples:
"What metrics can I query?" -> category="all"
"Show me revenue metrics" -> category="revenue"
"What trial data is available?" -> category="trials"
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter metrics by category: all, revenue, actives, trials, conversion, or cohorts | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false. The description adds value by specifying the return format (Markdown-formatted list grouped by category), how metric names should be used in rc_get_chart, and providing example queries. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Args, Returns, and Examples sections. Every sentence adds value; no fluff or redundancy. It is appropriately sized for a simple single-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter with enum, no output schema), the description is complete. It explains the return format, purpose, and relationship to sibling rc_get_chart, fully enabling correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description goes beyond by listing the exact category enum values in the Args section and giving concrete examples with natural-language queries, which clarifies how to use the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all available RevenueCat Charts API metrics with descriptions, using a specific verb ('List') and resource ('RevenueCat Charts API metrics'). It distinguishes from sibling rc_get_chart by noting it's for discovery before calling rc_get_chart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use ('Use this to discover what subscription data you can query before calling rc_get_chart') and names the alternative rc_get_chart. It lacks an explicit 'when not to use' statement but implies it through the 'before calling' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
rc_get_chart - First observed
rc_get_overview - First observed
rc_list_metrics
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: rc_list_metrics for discovering available metrics, rc_get_overview for a real-time snapshot of key metrics, and rc_get_chart for time-series queries of any metric. The overlap between overview and chart is minimal—one is a fixed snapshot, the other is flexible time series—so misselection is unlikely.
All tools share the rc_ prefix and follow a consistent verb_noun pattern: list_metrics, get_overview, get_chart. The use of 'list' for enumeration and 'get' for data retrieval is natural and consistent.
Three tools is well-scoped for a read-only RevenueCat Charts API server. Each tool covers a distinct need: discovery, snapshot, and time-series querying. No superfluous tools, and the count is appropriate for the narrow domain.
The tool set fully covers the core functionality of the RevenueCat Charts API: listing available metrics, getting a quick health snapshot, and querying any metric as a time series. There are no obvious dead ends—the overview covers common key metrics, and the chart tool covers all supported metrics. For a read-only API, this is complete.
Maintenance
Related MCP Connectors
Analytics for MCP servers. Query your tool calls, first-call success, retries and schema cost.
Analytics for MCP servers. Find out which of your tools agents get wrong. MCPulse shows you which tools AI agents retry, which come back empty, and which they never call at all. Two lines inside your own server. It never sees your arguments or your results. getmcpulse.com
MCP server for building and testing AI agents with multi-model experimentation and insights.
Analytics your AI agent can actually use. Track, experiment, and optimize via MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceOpen-source MCP server for Claude AI that connects Stripe and Supabase to enable natural language SaaS analytics, including churn analysis, subscription tracking, and revenue insights.-
- AlicenseAqualityBmaintenanceMCP server that gives AI assistants real-time access to Stripe business metrics like MRR, churn, and revenue forecasts via natural language queries.7MIT
- FlicenseAqualityDmaintenanceMCP server for RevenueCat that lets AI agents query subscriber data, check entitlements, fetch offerings, and manage subscriptions via natural language.6-
- AlicenseAqualityDmaintenanceAn MCP server that gives AI agents access to RevenueCat's Charts & Metrics API. Query MRR, churn, trial conversion, revenue, and 17 more subscription metrics directly from Claude, Cursor, or any MCP client.58 npmMIT