
MCP Analytics
Connects your data sources (CSV uploads, GA4, GSC, Shopify, Stripe) to a team of specialist agents that build custom analysis modules on demand. You ask a question, upload data or link a live source, and get back an interactive HTML report with charts, AI insights, and embedded R source code. The module joins your private library and reruns on fresh data for a fraction of the build cost. Exposes MCP tools for semantic discovery, dataset upload, tool execution, and report viewing. Currently in beta with a v2 rebuild underway. Reach for this when you need reproducible statistical analysis that compounds over time rather than one-off spreadsheet work.
- GitHub stars
- 9
- tools
- 27
- auth
- Secret needed
- transport
- HTTP
- last updated
- Oct 15, 2026
Install
From registry metadata$ npx add-mcp https://api.mcpanalytics.ai/mcp/api-key --name analytics --header 'X-API-Key: ${X_API_KEY}'Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http analytics https://api.mcpanalytics.ai/mcp/api-key --header 'X-API-Key: YOUR_X_API_KEY'Run in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 27 toolsVerified live against the running server on Nov 6, 2026.
account_linkDirect link to the right account page for anything not doable in chat: billing, browser upload, report management. Hand the user the link and guide them.1 params
Direct link to the right account page for anything not doable in chat: billing, browser upload, report management. Hand the user the link and guide them.
sectionstringhome · billing · upgrade · create · upload · reportsaboutPlatform documentation and info: how it works (Answer, Analytics, Custom Analytics), usage.1 params
Platform documentation and info: how it works (Answer, Analytics, Custom Analytics), usage.
topic*stringagent_advisorAI help desk: which analysis fits your question, interpreting results, fixing errors. Multi-turn.1 params
AI help desk: which analysis fits your question, interpreting results, fixing errors. Multi-turn.
question*stringdatasets_uploadGet your data in. Pass `data` as an array of row objects to create the dataset immediately and get a dataset_ref ready for path_resolver; omit it to get an upload link for a file only the user can reach. Add replace_ref (uuid://ID:KEY) with data to REFRESH an existing dataset...3 params
Get your data in. Pass `data` as an array of row objects to create the dataset immediately and get a dataset_ref ready for path_resolver; omit it to get an upload link for a file only the user can reach. Add replace_ref (uuid://ID:KEY) with data to REFRESH an existing dataset...
dataarrayexpires_inintegerreplace_refstringdatasets_listList and search your uploaded datasets, with fuzzy matching on name, description, and tags. Returns each dataset's uuid:// reference (the `usage` field) for use as dataset_ref in path_resolver and path_tool_run. The id alone ('uuid://dsv2_...') also works for your own datasets...2 params
List and search your uploaded datasets, with fuzzy matching on name, description, and tags. Returns each dataset's uuid:// reference (the `usage` field) for use as dataset_ref in path_resolver and path_tool_run. The id alone ('uuid://dsv2_...') also works for your own datasets...
limitintegersearchstringdiscover_toolsBrowse the analyses you can run: the ones you commissioned plus the platform Standard Library (prebuilt tools; each result tagged source:'own' or 'standard_library'). Plain-language match; no query lists everything, your own first. Nothing fits? Commission it with path_resolver.1 params
Browse the analyses you can run: the ones you commissioned plus the platform Standard Library (prebuilt tools; each result tagged source:'own' or 'standard_library'). Plain-language match; no query lists everything, your own first. Nothing fits? Commission it with path_resolver.
querystringtools_schemaGet an analysis's parameter schema. ALWAYS call before path_tool_run.1 params
Get an analysis's parameter schema. ALWAYS call before path_tool_run.
tool_name*stringreview_estimateThe estimate as you review it WITH the user: the question as understood, the estimated answer (sample, marked), every place and its question, the page link, a review checklist. Before path_bespoke.1 params
The estimate as you review it WITH the user: the question as understood, the estimated answer (sample, marked), every place and its question, the page link, a review checklist. Before path_bespoke.
estimate_id*stringadjust_estimateApply the user's layout wishes to the estimate's page through the layout agent; a new named arrangement, nothing overwritten, no number changes.2 params
Apply the user's layout wishes to the estimate's page through the layout agent; a new named arrangement, nothing overwritten, no number changes.
estimate_id*stringinstructions*stringfind_precedentBefore estimating: how did we answer this objective before, on this data or any data? Prior packages and library runs with their tools, mappings, bespoke module names, method and verdicts. Platform-wide, read-only.3 params
Before estimating: how did we answer this objective before, on this data or any data? Prior packages and library runs with their tools, mappings, bespoke module names, method and verdicts. Platform-wide, read-only.
dataset_refstringkintegerobjective*stringcheck_tool_fitBefore naming a library tool: does it fit THIS dataset for THIS question? Column mapping, missing required inputs, method-fit verdict, the places it delivers. Read-only.3 params
Before naming a library tool: does it fit THIS dataset for THIS question? Column mapping, missing required inputs, method-fit verdict, the places it delivers. Read-only.
dataset_ref*stringobjectivestringtool_name*stringpackage_statusRead an analytics package back: status, every run under it, the report link once delivered.1 params
Read an analytics package back: status, every run under it, the report link once delivered.
package_id*stringmy_objectsList and search the objects you own across every question: the curated charts, tables and figures of each delivered package, grouped by objective.3 params
List and search the objects you own across every question: the curated charts, tables and figures of each delivered package, grouped by objective.
include_droppedbooleanlimitintegerquerystringbuild_statusCheck a commissioned build in-chat: stage progress, queue position, rejection reason if the data didn't match the objective, honest ETA, report link when delivered.2 params
Check a commissioned build in-chat: stage progress, queue position, rejection reason if the data didn't match the objective, honest ETA, report link when delivered.
pipeline_idintegertrack_tokenstringask_libraryAsk a question across all your delivered analyses: a synthesized answer with citations back to specific reports.1 params
Ask a question across all your delivered analyses: a synthesized answer with citations back to specific reports.
question*stringreports_listYour report library: every analysis delivered, with status and links. Pass semantic_query to search report content in plain language.2 params
Your report library: every analysis delivered, with status and links. Pass semantic_query to search report content in plain language.
limitintegersemantic_querystringwarehouseQuery your org's data warehouse free: browse the catalog (tables with column roles + computed metrics), semantically find data, plain-language ask, or named templates. Requires warehouse enablement (business plans).4 params
Query your org's data warehouse free: browse the catalog (tables with column roles + computed metrics), semantically find data, plain-language ask, or named templates. Requires warehouse enablement (business plans).
action*stringask · query · queries · catalog · findparamsobjectquerystringquestionstringschedulesStanding re-runs of analyses you own: action='create' (weekly/monthly against a re-runnable data reference, connector:// or an https:// link; report emailed after each run), 'list', or 'cancel'.6 params
Standing re-runs of analyses you own: action='create' (weekly/monthly against a re-runnable data reference, connector:// or an https:// link; report emailed after each run), 'list', or 'cancel'.
action*stringcreate · list · cancelcadencestringweekly · monthlycolumn_mappingobjectdataset_refstringschedule_idintegertool_namestringreports_viewGet a shareable browser link for a report, viewable without authentication.1 params
Get a shareable browser link for a report, viewable without authentication.
processing_id*stringreport_cardsBrowse a delivered report's individual cards (charts, tables, insights) inline in chat.1 params
Browse a delivered report's individual cards (charts, tables, insights) inline in chat.
processing_id*stringpath_resolverWhich path a question about data should take (reuse, rerun, answer, tool_run, estimate, bespoke, ask or none), with the reason, every path's score and time, and the ready input for the path it picks. Executes nothing and charges nothing.4 params
Which path a question about data should take (reuse, rerun, answer, tool_run, estimate, bespoke, ask or none), with the reason, every path's score and time, and the ready input for the path it picks. Executes nothing and charges nothing.
dataset_refvaluedoorstringaccount · mcp · mailroom · widget · api · internaldefault: apimetaarrayobjective*stringpath_reuseHand back the report already delivered for this question on this data. Time: as path_resolver quotes.3 params
Hand back the report already delivered for this question on this data. Time: as path_resolver quotes.
dataset_ref*stringobjective*stringresolution_idintegerpath_rerunRun a delivered analysis again, on its own dataset or a new one: the same tools and mappings, no rebuild. package_id may also be the person's own report link (a /rpt/ link or its rpt_ token) or estimate id (est_); it reruns their newest delivered package for it. Time: as path_...3 params
Run a delivered analysis again, on its own dataset or a new one: the same tools and mappings, no rebuild. package_id may also be the person's own report link (a /rpt/ link or its rpt_ token) or estimate id (est_); it reruns their newest delivered package for it. Time: as path_...
dataset_refvaluepackage_id*stringresolution_idintegerpath_answerA read of the data (a total, an average, a count, the top group), computed on every row, in this response. When the question is not a read it says so and names the next step. Time: as path_resolver quotes. No key yet? Call it with objective and data (a small table, up to 200 r...4 params
A read of the data (a total, an average, a count, the top group), computed on every row, in this response. When the question is not a read it says so and names the next step. Time: as path_resolver quotes. No key yet? Call it with objective and data (a small table, up to 200 r...
dataarraydataset_refstringobjective*stringresolution_idintegerpath_tool_runRun one or more tested library tools on this dataset, with charts and a written report. No custom build. Time: as path_resolver quotes.8 params
Run one or more tested library tools on this dataset, with charts and a written report. No custom build. Time: as path_resolver quotes.
column_mappingvaluedataset_ref*stringestimate_idvalueidempotency_keyvaluemodule_parametersvalueobjective*stringresolution_idintegertool_names*arraypath_estimateA rough answer over a sample and the layout of the full report, for the person to confirm before anything is ordered. Time: as path_resolver quotes.6 params
A rough answer over a sample and the layout of the full report, for the person to confirm before anything is ordered. Time: as path_resolver quotes.
completenessvaluedataset_ref*stringlayout_objectivevalueobjective*stringresolution_idintegertool_namesvaluepath_bespokeOrder a custom analysis built for this data from a confirmed estimate, optionally with library tools alongside. Needs the person's yes and an idempotency key; a retry returns the first order. Time: as path_resolver quotes.5 params
Order a custom analysis built for this data from a confirmed estimate, optionally with library tools alongside. Needs the person's yes and an idempotency key; a retry returns the first order. Time: as path_resolver quotes.
estimate_id*stringidempotency_key*stringlayout_objectivevalueresolution_idintegertool_namesvalueSponsors
Readme
MCP Analytics
A statistical analyst in your AI chat. Bring a dataset and a question, get back a citable, re-runnable report with its method named.
MCP Analytics is a Model Context Protocol server that answers business and statistical questions about your data, as deep as each question needs:
- Answer: a quick question about the data, read from all of it, shown with how we got it, and saved.
- Analytics: a tested statistical method runs on the data, and we interpret it with charts and a written report.
- Custom Analytics: a question only your business asks, built for your data from proven models, yours to re-run on next month's file.
Intelligent routing picks the depth: you describe the question, and the server says which path answers it and why. Analytics is repeatable: same data, same numbers. Every report names its method and the code that ran it, and runs again on new data.
It is for business and statistical questions about data, not a general-purpose assistant.
Website: mcpanalytics.ai · Free tools you can try in the browser: mcpanalytics.ai/free
Connect
Details
- Repository
- github.com/embeddedlayers/mcp-analytics
- Website
- mcpanalytics.ai
- Categories
- Communication & Messaging, Monitoring & Observability, Data & Analytics
- Transport
- HTTP
- Auth
- Required
- Registry
- MCP registry, active
- Tools verified
- Nov 6, 2026