MCP server

Ask your AI assistant about your own traffic

DevDome runs a first-party MCP server. One URL and your API key connect Claude, Cursor, ChatGPT and every other MCP client straight to your live analytics - stats, bots, visitors and site health, in plain language. Nothing is installed and nothing is stored.

1URL, no install
10tools, from stats to site health
9clients documented below
0data stored on our side

The server is a stateless proxy over your account at https://analytics.devdome.com/mcp. Every answer comes straight from your live data, scoped to your API key. The same data is available as a plain REST API.

01

Get your API key

One key per account, created under Account → API. It is shown exactly once - copy it right away. Preferred transport is the Authorization: Bearer header; clients that cannot send headers append ?key=YOUR_API_KEY to the URL instead (treat that URL as a secret).

02

Connect your client

Pick yours - each card is the complete setup.

Claude Code

Terminal

One command in your terminal:

claude mcp add devdome https://analytics.devdome.com/mcp \
  -t http -H "Authorization: Bearer YOUR_API_KEY"

Claude Desktop

Config file

Settings, Developer, Edit Config. Add this to claude_desktop_config.json and restart the app:

{
  "mcpServers": {
    "devdome": {
      "url": "https://analytics.devdome.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Claude.ai (web)

In the browser

Settings, Connectors, Add custom connector. The dialog cannot send headers, so the key rides in the URL:

https://analytics.devdome.com/mcp?key=YOUR_API_KEY

Cursor

Config file

Settings, MCP, Add new global MCP server (or .cursor/mcp.json in a project):

{
  "mcpServers": {
    "devdome": {
      "url": "https://analytics.devdome.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Windsurf

Config file

Settings, Cascade, MCP Servers (or ~/.codeium/windsurf/mcp_config.json - note serverUrl):

{
  "mcpServers": {
    "devdome": {
      "serverUrl": "https://analytics.devdome.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

VS Code (Copilot)

Config file

Command palette, "MCP: Add Server", HTTP - or .vscode/mcp.json:

{
  "servers": {
    "devdome": {
      "type": "http",
      "url": "https://analytics.devdome.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

ChatGPT

In the browser

Settings, Connectors, Advanced, Developer mode, then Create connector. ChatGPT cannot send custom headers, so the key rides in the URL:

https://analytics.devdome.com/mcp?key=YOUR_API_KEY

Zed

Config file

settings.json, context_servers:

{
  "context_servers": {
    "devdome": {
      "source": "custom",
      "url": "https://analytics.devdome.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_API_KEY" }
    }
  }
}

Any other MCP client

Terminal

Plain streamable HTTP, no OAuth, no session. Prove it works with curl:

curl https://analytics.devdome.com/mcp \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "content-type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
03

What it can do

Ten tools, each mapped 1:1 to a dashboard report. Time arguments default to the full history your plan retains.

ToolArgumentsWhat it answers
list_sitesnoneThe sites on your account with verification status.
add_sitedomainAdd a website. Returns the tracking snippet; stays pending until verified.
verify_sitedomainVerify a pending website (installed snippet or DNS TXT record).
get_statssite, days? | from?/to?Headline KPIs vs the previous window.
get_timeseriessite, days? | from?/to?Daily traffic series in the site timezone.
get_breakdownsite, dimension, days?, limit?Top-N by pages, referrers, countries, devices, browsers, os, dates, keywords, products or redirects.
get_bot_reportsite, kind?, days?Which bots hit the site and why they were flagged; kind "threats" = detection-category totals.
get_realtimesiteVisitors active in the last 5 minutes with their current page.
get_visitorssite, days?, limit?Recent individual visits with step-by-step paths.
get_site_healthsiteUptime, response times, TLS/DNS checks and incidents.

Things to ask

Once connected, these all work out of the box:

  • “How was my traffic this week compared to last week?”
  • “Which pages got the most visitors this month, and which of them are broken?”
  • “Which bots hit example.com yesterday, and how much of my traffic is bots?”
  • “Where do my visitors come from - top referrers and countries for the last 90 days?”
  • “Is anyone on my site right now? What are they looking at?”
  • “Add newsite.com to my DevDome account and give me the snippet to install.”
  • “Is my site healthy? Any downtime incidents this month?”
  • “Write a weekly traffic report I can paste into Slack.”

Troubleshooting

The four things that ever go wrong, and their fixes.

  • 401 invalid API key: the key was mistyped, revoked or rotated. Copy a fresh one from Account, API.
  • 429 rate limit: 60 requests per minute per key. Assistants that fan out many tool calls can hit this; it resets within a minute.
  • "not your site": the site argument must be a domain on THIS account, in punycode for international names (münchen.de = xn--mnchen-3ya.de). Ask the assistant to run list_sites first.
  • Client cannot connect: the server answers POST with JSON-RPC only - no OAuth, no session. Verify with the curl example above, then check your client uses the HTTP transport.

Connect your assistant now

Create your API key, paste one config block, and ask about your traffic. Included on every plan, the free one too.