Odel
mcp server

mcp server

@metricspotAI AgentsTypeScriptUpdated 1mo ago

Six tools for SEO and AI-readability audits. 91 checks, 11 score modules.

Server endpointStreamable HTTP

This is the third-party server itself — Odel doesn't run it. Hitting this URL directly talks straight to the upstream server with no auth or proxying. Connect through Odel to front it with managed auth.

@metricspot/mcp-server

Model Context Protocol server for MetricSpot. Exposes 6 SEO + AI-readability audit tools to AI agents (Claude, ChatGPT, Gemini, Perplexity, Cursor, Zed, OpenClaw, custom bots).

Tools

ToolAuthDescription
run_audit_anonymousnoneOne-shot audit, 1/IP/24h, no Core Web Vitals
run_auditBearer keyFull audit with PSI, returns audit_id
get_auditBearer keyFetch audit + findings by id
list_auditsBearer keyList the user's recent audits (max 100)
get_audit_pdfBearer keySigned URL for the branded PDF report
get_organic_trafficBearer key28-day GA4 + GSC snapshot (if Google linked)

Local install (stdio)

Claude Code (~/.claude/mcp.json):

{
  "mcpServers": {
    "metricspot": {
      "command": "npx",
      "args": ["-y", "@metricspot/mcp-server"],
      "env": {
        "MCP_API_KEY": "ms_live_xxx"
      }
    }
  }
}

Cursor (~/.cursor/mcp.json) and Zed use the same shape.

Omit MCP_API_KEY to only use run_audit_anonymous.

Hosted (Streamable HTTP)

POST https://mcp.metricspot.com/mcp
Authorization: Bearer ms_live_xxx
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"tools/list"}

Env vars

VarDefaultPurpose
PORT3000HTTP listen port
APP_API_BASE_URLhttps://app.metricspot.comMetricSpot app API base (the dev/dev:stdio scripts override it to http://localhost:3000)
APP_PUBLIC_BASE_URLfalls back to APP_API_BASE_URLUsed to build report_url
MCP_INTERNAL_TOKENService-to-service secret forwarded as X-MCP-Internal-Token
MCP_API_KEY(stdio only) User API key, sent as Authorization: Bearer to the HTTP layer

Develop

bun install
bun run typecheck
bun test
bun run dev          # Streamable HTTP on :3000
bun run dev:stdio    # stdio loop (send JSON-RPC on stdin)

Deploy

Multi-stage Dockerfile produces a Bun runtime image. Independent Dokku app on the same Hetzner droplet as app/ and web/.

License

MIT