embeddedlayers avatar

MCP Analytics

embeddedlayers/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 tools

Verified 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.

Parameters* required
sectionstring
Where to send the userone of home · billing · upgrade · create · upload · reports
aboutPlatform 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.

Parameters* required
topic*string
Topic: platform, manual, connectors, or a docs section
agent_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.

Parameters* required
question*string
Your question or request
datasets_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...

Parameters* required
dataarray
Rows as an array of flat objects, creates the dataset in one call
expires_ininteger
Token expiration in secondsdefault: 300
replace_refstring
uuid://ID:KEY of an existing dataset to overwrite in place with `data` (the push/refresh mode)
datasets_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...

Parameters* required
limitinteger
Max resultsdefault: 20
searchstring
Search by name, description, or tags
discover_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.

Parameters* required
querystring
Plain-language search over your library + the Standard Library; omit to list everything
tools_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.

Parameters* required
tool_name*string
Name of the analysis
review_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.

Parameters* required
estimate_id*string
adjust_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.

Parameters* required
estimate_id*string
instructions*string
What to change, in the user's words
find_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.

Parameters* required
dataset_refstring
kinteger
default: 10
objective*string
check_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.

Parameters* required
dataset_ref*string
objectivestring
tool_name*string
package_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.

Parameters* required
package_id*string
my_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.

Parameters* required
include_droppedboolean
default: false
limitinteger
default: 50
querystring
build_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.

Parameters* required
pipeline_idinteger
pipeline_id from a build (modify_analysis)
track_tokenstring
Token from the tracking URL
ask_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.

Parameters* required
question*string
Plain-language question to answer from your report library
reports_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.

Parameters* required
limitinteger
Max resultsdefault: 10
semantic_querystring
Natural-language search over your reports' content
warehouseQuery 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).

Parameters* required
action*string
one of ask · query · queries · catalog · find
paramsobject
querystring
questionstring
schedulesStanding 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'.

Parameters* required
action*string
What to doone of create · list · cancel
cadencestring
one of weekly · monthly
column_mappingobject
dataset_refstring
create: re-runnable reference (connector:// or https://)
schedule_idinteger
cancel: from action='list'
tool_namestring
create: the analysis to schedule
reports_viewGet a shareable browser link for a report, viewable without authentication.1 params

Get a shareable browser link for a report, viewable without authentication.

Parameters* required
processing_id*string
Processing ID from path_tool_run / reports_list
report_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.

Parameters* required
processing_id*string
The report's processing id, returned by path_tool_run or build_status
path_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.

Parameters* required
dataset_refvalue
absent = no data yet (the resolver asks for it)
doorstring
one of account · mcp · mailroom · widget · api · internaldefault: api
metaarray
open list of {key, value}; the caller's entries are always `stated`
objective*string
the question, in the person's words
path_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.

Parameters* required
dataset_ref*string
the dataset: the `usage` value from datasets_list (uuid://ID or uuid://ID:KEY), or its id, for a dataset the caller owns or the platform sample
objective*string
the question, in the person's words
resolution_idinteger
The resolution_id from path_resolver's path_input. Pass path_input as given.
path_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_...

Parameters* required
dataset_refvalue
absent = the package's own dataset
package_id*string
A delivered package's id, or the person's own report link (/rpt/ link or rpt_ token) or estimate id (est_). Someone else's link is not found.
resolution_idinteger
The resolution_id from path_resolver's path_input. Pass path_input as given.
path_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...

Parameters* required
dataarray
WITHOUT A KEY: up to 200 rows pasted inline as flat objects, e.g. [{"month":"Jan","sales":120}]. Use instead of dataset_ref.
dataset_refstring
the dataset: the `usage` value from datasets_list (uuid://ID or uuid://ID:KEY), or its id, for a dataset the caller owns or the platform sample
objective*string
the question, in the person's words
resolution_idinteger
The resolution_id from path_resolver's path_input. Pass path_input as given.
path_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.

Parameters* required
column_mappingvalue
dataset column for each input the tool needs; absent = suggested from the data
dataset_ref*string
the dataset: the `usage` value from datasets_list (uuid://ID or uuid://ID:KEY), or its id, for a dataset the caller owns or the platform sample
estimate_idvalue
idempotency_keyvalue
send one per run; a retry with the same key replays the first call instead of running it again
module_parametersvalue
objective*string
the question, in the person's words
resolution_idinteger
The resolution_id from path_resolver's path_input. Pass path_input as given.
tool_names*array
path_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.

Parameters* required
completenessvalue
dataset_ref*string
the dataset: the `usage` value from datasets_list (uuid://ID or uuid://ID:KEY), or its id, for a dataset the caller owns or the platform sample
layout_objectivevalue
objective*string
the question, in the person's words
resolution_idinteger
The resolution_id from path_resolver's path_input. Pass path_input as given.
tool_namesvalue
path_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.

Parameters* required
estimate_id*string
idempotency_key*string
layout_objectivevalue
resolution_idinteger
The resolution_id from path_resolver's path_input. Pass path_input as given.
tool_namesvalue
library tools to run alongside the build

Sponsors

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


View the full README on GitHub

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

Related Communication & Messaging MCP servers

View all
1madaburns avatarBlackVeil DNS & Email Security Scannermadaburns/bv-mcpDNS and email security scanner with 82 MCP tools for SPF, DMARC, DNSSEC, SSL, and brand audits.0stars
2theastraway avatarMINDtheastraway/mind-mcp-serverMIND knowledge-graph memory for agents. 44 tools: CRM, Life, MoneyMIND, Budget, Sheets, Email, Sign.7stars
3puffo-ai avatarHuddopuffo-ai/huddo-mcpGroup chat for people and AI agents: join a room by invite link, read, reply, whisper, wait.6stars
4frontsail-ai avatarAspiciofrontsail-ai/aspicioDXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.6stars
5gabrielmahia avatarMpesa Mcpgabrielmahia/mpesa-mcpM-Pesa Daraja and Africa's Talking MCP server: 24 tools; live payments and SMS need confirmation.6stars
6continuum-ai-corp avatarOrcaRoutercontinuum-ai-corp/orcarouter-mcp-serverBrowse 160+ LLM models and live pricing — no API key needed for catalog. Add key to route chat.6stars