Grips Intelligence MCP Server
Provides access to Grips Intelligence e-commerce analytics data through Model Context Protocol. Enables querying domain performance metrics, channel breakdowns, ad spend data, and device analytics for e-commerce businesses.
README
Grips Intelligence MCP server (v2)
A Model Context Protocol (MCP) server that exposes the Grips Intelligence e-commerce data API to any MCP client — Claude Desktop, Cowork, Claude Code, etc.
v2 is a clean rebuild of v1 with defensive data handling baked in from day one. It fixes the ".map is not a function" class of bugs that v1.x needed a runtime patch to address — thin or unknown domains now degrade to a clean "no data" response instead of crashing the tool call.
What's in it
| Tool | What it does |
|---|---|
grips_get_domain_performance |
Monthly revenue / transactions / sessions / ad cost / AOV / CR / CPC for one or more domains |
grips_get_daily_performance |
Daily revenue / transactions / sessions (limited coverage) |
grips_get_channels |
Organic / Paid Search / Direct / Referral / Social breakdown — timeseries + aggregated |
grips_get_adwords |
Paid-media spend, clicks, and CPC — timeseries + aggregated |
grips_get_devices |
Mobile / desktop / tablet revenue, sessions, CR, AOV |
grips_compare_domains |
Parallel per-domain pull with leaderboard ranking; per-domain errors are isolated |
grips_raw_query |
Escape hatch — send an arbitrary Grips GraphQL query |
All tools default to markdown output for readability. Pass format: "json" for machine-parseable output.
Installation
npm install
The prepare script auto-builds dist/ when you run npm install.
Configuration
Set your Grips API key in the MCP client's server config. For Claude Desktop, that's ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"grips": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/grips-mcp-server-v2/dist/index.js"
],
"env": {
"GRIPS_API_KEY": "your-api-key-here",
"GRIPS_DEFAULT_COUNTRY": "US"
}
}
}
}
Required env:
GRIPS_API_KEY— your Grips API token (sent as thegrips-api-keyheader).
Optional env:
GRIPS_DEFAULT_COUNTRY—US,GB, orDE. Defaults toUSif unset or invalid.
After editing the config, fully quit Claude Desktop (Cmd+Q — not just closing the window) and reopen.
What's different from v1
v1 crashed on a specific API response shape: when Grips returned a thinly-covered or unknown domain, the timeseries field came back as {} rather than null, undefined, or []. The code used (data.timeseries ?? []).map(...), which only guards against null/undefined — not against {}. Result: "data.timeseries ?? []).map is not a function".
v2 routes every payload field through toArray<T>() (for arrays) or toObject<T>() (for dict-shaped responses like the devices endpoint) before use. Any non-array / non-object value falls through to a safe empty default, and the tool returns a clean "no data" response instead of throwing.
Other changes:
- Date normalisation is consistent (every date becomes
YYYY-MM-DDin UTC) across all tools, so rows don't slip across day boundaries in non-UTC timezones. - Currency / integer / percent formatters render
—for missing values instead of$NaNor0.00%. - Error messages now include actionable hints — 401 → "check your API key", 429 → "rate-limited, narrow your window", etc.
- Per-domain error isolation in
grips_compare_domains— one thin domain in an 8-domain compare no longer breaks the other seven. - Character-budget truncation — responses cap at ~200KB with a visible notice so multi-domain pulls don't blow up the context window.
Development
npm run dev # watch mode, rebuilds on change
npm run build # one-shot build to dist/
Testing from the command line
Test that the server boots without errors (it will exit on EOF from stdin):
GRIPS_API_KEY=your-key node dist/index.js < /dev/null
You should see [grips-mcp] grips-mcp-server v2.0.0 ready (default country: US). on stderr and no crash.
For interactive testing, use @modelcontextprotocol/inspector:
npx @modelcontextprotocol/inspector node dist/index.js
API reference
Grips documents their public schema at https://gripsintelligence.com/knowledge-base/api. The queries this server uses are copied verbatim from that page.
Supported countries today: US, GB, DE. Everything else will error at the API.
Licence
Private — not for external distribution.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.