Beta. MCP access is opt-in per user right now. If a project’s MCP key won’t generate, or the OAuth connect flow says “not enabled for your organization,” ask an Appstack admin to turn it on for your user.
Prerequisites
- An Appstack account, with MCP access enabled for your user (beta, so ask an admin).
- At least one project in Appstack (bundles up to one iOS + one Android app) whose data you want to query.
Connect via OAuth (Claude Desktop, Claude.ai, ChatGPT desktop)
This is the self-serve, recommended path, with no key to copy or store. Claude Desktop / Claude.ai:- Go to Settings → Connectors → Add custom connector.
- Paste the server URL:
https://mcp.appstack.tech/mcp - Log in with your Appstack account when prompted, and approve access.
- Go to Settings → Plugins → Add → Add a MCP server.
- Name it, set the type to Streamable HTTP, and paste the server URL:
https://mcp.appstack.tech/mcp - Save, then click Authenticate and log in with your Appstack account.
Connect via API key (Claude Code, scripts)
Generate a key from any project’s settings page in the Appstack dashboard (Project → Settings → MCP). The key isn’t limited to that one project. It works across every project and organization you currently have access to.Get better results with a skill
Claude can use these tools with no extra setup, but it has to guess the right call order and exact metric/dimension names on its own. Installing theappstack-mcp skill
teaches it those conventions up front, so you get fewer wasted calls and no
made-up measure names.
Available tools
Ask things like:
- “What was our ROAS by media source last month?”
- “Show me installs and revenue by country for the last 30 days.”
- “What are the possible values for media_source?”
- “Is our RevenueCat integration connected and active?”
- “Create a standard link for this app with campaign name ‘summer-promo’.”
Troubleshooting
“MCP isn’t enabled for your organization yet.” MCP is in beta, opt-in per user. Ask an Appstack admin to turn it on for your user. A project I have access to isn’t showing up. Only projects you’re a member of are covered, and only if MCP access is enabled for your user. If you were just added to a project or organization, the next tool call already reflects it, so there’s no need to reconnect. A tool call returns an error instead of data. Callwhoami first to confirm which app(s) are actually in scope for your connection, and list_metrics / list_dimension_values before guessing measure or dimension names. A made-up name fails rather than silently returning nothing.
Limits & notes
- Requests are rate-limited per credential (120 req/60s by default). A
429response includes aRetry-Afterheader. query_metricsdate ranges are capped at 60 days inclusive. A wider range is rejected instead of being trimmed, so split longer periods into several queries.- A single
query_metricscall can only use measures, dimensions, and filters from one view. Mixing views is rejected. - OAuth access tokens are short-lived (~1 hour) and refresh automatically, so never copy-paste one.
- Your key or connection exposes every project and organization you currently have access to, kept up to date automatically as that access changes.
- Regenerating your key immediately breaks any client still using the old one.
create_link/update_link/delete_linkactually change data, so review what Claude is about to do before confirming, same as you would for any tool with write access.

