roblox-analytics-mcp
Click on "Install 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., "@roblox-analytics-mcpHow is my game's retention this week?"
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.
roblox-analytics-mcp
A local MCP server that gives an AI agent read access to your Roblox experience analytics through the Open Cloud Analytics Query API.
It exposes all 168 metrics the API supports across 16 categories — retention, engagement, monetization, acquisition, performance, economy, funnels, custom events, thumbnails, matchmaking, data stores, safety, and ads — plus a layer of analysis tools that turn "how is my game doing?" into a single call.
Why not just call the API directly
The raw API is awkward to drive:
Metric names, granularities, and dimensions are case-sensitive, undiscoverable at runtime, and every invalid combination returns the same opaque
400 / 2001.You get 30 queries per minute per account, so a wasted call is expensive.
Large queries return
202and a path you have to poll.Buckets with no activity are omitted rather than returned as zero, so gaps are ambiguous.
Funnel steps and product IDs must be discovered before they can be filtered on.
This server handles all of that: it validates requests against a bundled catalog before spending a query, paces itself under the rate limit, follows long-running operations to completion, reports missing buckets explicitly instead of inventing zeros, and does the two-stage funnel lookup for you.
Related MCP server: Roblox Executor MCP
Setup
npm install
npm run build
npm link # optional, puts `roblox-analytics-mcp` on your PATHCreate an API key at the Creator Dashboard:
Add each experience you want to query under Access Permissions.
Grant the
universe.analytics:readoperation under theuniverse-analyticssystem.
Then store it:
roblox-analytics-mcp setup # prompts for the key and an optional default universe
roblox-analytics-mcp test # runs a live DAU query to confirm it worksA stored key takes precedence over the ROBLOX_API_KEY environment variable.
Register with Claude Code
claude mcp add roblox-analytics -- node /absolute/path/to/AnalyticsMcp/dist/cli.jsTools
Discovering what is queryable
Tool | Purpose |
| Browse all 168 metrics; filter by search, category, supported dimension, or granularity. |
| Full definition: granularities, retention window, every valid dimension. |
| All 69 dimensions and which metrics support each. |
| The actual countries, product IDs, funnel names, or place versions in your data. |
Reading data
Tool | Purpose |
| One metric as a time series, with summary stats, outliers, and coverage. |
| Several metrics over the same range, paced under the rate limit. |
| Escape hatch for an operation that timed out. |
Analysis
Tool | Purpose |
| 17 headline KPIs vs the previous period, with sharp movers flagged. |
| A themed pack — monetization, performance, acquisition, economy, safety, ads… |
| One metric sliced by every dimension it supports, ranked. |
| Two arbitrary windows, per-series absolute and percent change. |
| Discovers funnels and step IDs, then reports churn and completion per step. |
Context
Tool | Purpose |
| Experience metadata plus public stats (likes, favourites, live CCU). |
| Up to 50 universes at once. No API key — works for competitors too. |
| Who the API key belongs to, what it can read, and the owner's groups. |
| Universe IDs by name or creator — own account and all groups. |
| Place metadata, for when performance metrics point at a place ID. |
| Store a default universe and an optional alias. |
| Key source, default universe, cache state, catalog size, rate limits. |
Identity: how the server knows whose games these are
Open Cloud API keys are anonymous to the endpoints they call — no analytics response reveals the caller, and no additional key permission changes that. The server resolves identity through a separate endpoint instead:
POST https://apis.roblox.com/api-keys/v1/introspect { "apiKey": "..." }The key travels in the body, and the call needs no scope of its own — any
valid key can introspect itself. It returns authorizedUserId, the key's
scopes, whether it is enabled and unexpired, and which universes it covers
(* meaning every experience the owner can access).
That user ID unlocks the rest through public endpoints: the owner's username, their personal experiences, and every group they belong to. Group scanning matters — studio titles usually live under a group the developer merely belongs to, so a personal-account-only lookup misses the real games entirely.
whoami → who owns this key, what can it read
find_universes { search: "party" } → ranked matches across account + groupsGroup listings are cached for 6 hours (ROBLOX_ANALYTICS_CACHE_TTL_MINUTES to
change, refresh: true to bypass). A cold scan of 40 groups takes about a
minute; warm lookups are instant. Caching is per owner, so a group listing
that gets rate-limited is the only thing retried next time.
Any source that could not be read is reported in errors rather than dropped —
an empty result with errors present means the scan was throttled, not that the
creator has no games. Those two states look identical otherwise, and conflating
them produces confidently wrong answers.
Things worth knowing
Aggregation is reported, not assumed. Summing daily active users across a
month does not give you monthly actives — it double-counts anyone who played
twice. Where the API supports it, period totals come from a single whole-range
query (aggregation: "api-period-total"); where it does not, the fallback is
labelled mean-of-buckets or sum-of-buckets so the number is never anonymous.
sum is not always meaningful. Every result carries an aggregationHint.
For rates, averages, and percentiles (ForwardD1Retention, ClientFpsP90,
PayingUsersCVR) it reads average-only — the sum field is arithmetic, not
information.
Gaps are not zeros. The API omits buckets with no activity. Results report a
missingBuckets list rather than filling in zeros that would drag averages down.
Time is UTC. endTime is exclusive and defaults to today's UTC midnight, so
you get only complete buckets. Pass endTime: "now" to include the partial
current day. Ranges accept RFC 3339, plain dates, or relative shorthand
(-30d, -12w, -6mo, today, yesterday), or use lastDays.
Retention windows differ. Standard metrics keep 4 years; performance and stability metrics keep only 28 days. Queries beyond the window are rejected locally with the earliest queryable timestamp.
Beta API. The Analytics Query API is in beta and its schema may change. The
metric catalog is generated from the official docs — refresh it with
npm run generate:catalog if Roblox adds metrics.
Development
npm run build # compile TypeScript
npm test # 6 suites: time, validation, query pipeline, reports, packs, MCP protocol
npm run generate:catalog # regenerate src/catalog.ts from the Roblox docsTests mock fetch for the API-facing suites, so only the MCP protocol suite
touches the network (public endpoints, no key needed).
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityCmaintenanceAn MCP server that bridges AI to Roblox Studio, enabling execution of Luau scripts, instance manipulation, play-testing control, and Open Cloud operations via natural language.21
- Alicense-qualityCmaintenanceMCP server that allows AI agents to execute code, inspect scripts, spy on remotes, and interact with a running Roblox game client.14311MIT
- Alicense-qualityBmaintenanceAn MCP server that enables AI agents to execute Lua code, inspect scripts, spy on remotes, and interact with running Roblox game clients, including support for mobile executors on Android and iOS.1431MIT
- AlicenseAqualityFmaintenanceUnofficial MCP server that lets AI agents query Aptabase analytics using cookie-authenticated dashboard endpoints, providing tools for metrics, events, and sessions.171MIT
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Cloud-hosted MCP server for durable AI memory
An MCP server that gives your AI access to the source code and docs of all public github repos
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Haydebug/Roblox-MCP-Analytics'
If you have feedback or need assistance with the MCP directory API, please join our Discord server