MCP onboarding

lumen is an MCP server first. One stdio command, five tools, no account. The same server binary runs wherever Node runs.

Claude Code

one-liner


      $ claude mcp add --transport stdio lumen -- npx -y @lumen-seo/cli mcp

    

Verify with /mcp inside Claude Code; the five lumen_* tools should be listed.

Cursor

Add the server to .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):

{
  "mcpServers": {
    "lumen": {
      "command": "npx",
      "args": ["-y", "@lumen-seo/cli", "mcp"]
    }
  }
}

Cursor also supports one-click installs via its deeplink format (cursor://anysphere.cursor-deeplink/mcp/install?… with a base64-encoded config); the JSON block above is the same config that deeplink carries.

VS Code

Use .vscode/mcp.json:

{
  "servers": {
    "lumen": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@lumen-seo/cli", "mcp"]
    }
  }
}

VS Code offers a vscode:mcp/install?{…} deeplink that pre-fills this file; the stdio command is identical either way.

Universal JSON

For any client that speaks mcpServers:

{"mcpServers":{"lumen":{"command":"npx","args":["-y","@lumen-seo/cli","mcp"]}}}

The five tools

ToolWhat it does
lumen_audit_sitecrawl a site and return the audit report (bounded, robots-safe) — local/stdio only
lumen_page_reportsingle page: PSI + CrUX when keys are configured, plus a local meta fetch
lumen_keyword_ideaskeyword ideas from the configured keyword provider, provenance attached
lumen_rank_checkbest-effort SERP position for keyword + domain
lumen_authoritydomain authority signals (Open PageRank, Tranco)

Every tool accepts an optional response_format of concise (default) or detailed. Concise is built for agents — the high-signal summary first — while detailed returns the full payload. Both carry provenance labels on every value.

Remote gateway (optional)

The repo ships a thin Cloudflare Worker that exposes the same tools over Streamable HTTP plus the REST subset (POST /mcp, GET /api/v1/page-report?url=, GET /api/v1/keyword-ideas?q=, GET /healthz). It is deployable from the free Workers tier, but nothing in lumen requires it: stdio is the primary path and the Worker is not deployed by default. BYOK keys pass per-request via headers and are never logged.

The audit stays local

lumen_audit_site is a local-only capability by design — a crawl needs CPU and politeness budgets that a shared free tier can’t offer. Over the remote gateway the tool returns a typed local-only capability error pointing at npx @lumen-seo/cli instead of silently doing less. The other tools work the same everywhere.

Keys for BYOK providers are read from the environment (LUMEN_PSI_KEY, LUMEN_CRUX_KEY, LUMEN_OPR_KEY) — see providers & BYOK.