lumen

Lightweight, pluggable, MCP-first SEO toolkit โ free services only, bring your own keys, provenance on every number.
Status: v0.2.x โ first public release. The CLI, the five MCP tools, and the docs site are live; see CHANGELOG.md for what shipped and the docs for the full guides.
Why lumen
Most SEO tooling is a black box with a subscription. lumen is the opposite: a local-first, agent-first audit toolkit that runs on free data sources, never ships a number it can't attribute, and speaks MCP so your coding agent can run it for you.
- Local site audits โ bounded, robots-respecting crawler with 36 built-in rules, severity scoring, and CI-friendly exit codes (
0 pass, 1 findings, 2 usage/abort).
- Free-tier data providers โ PageSpeed Insights, CrUX, Google Suggest, Wikipedia demand, OpenPageRank, Tranco, DuckDuckGo SERP. BYOK: keys are read from env vars by name, never stored or logged.
- MCP-first โ five tools (
lumen_audit_site, lumen_page_report, lumen_keyword_ideas, lumen_rank_check, lumen_authority) over stdio or a thin Cloudflare Worker gateway.
- Provenance on every number โ each metric carries its source and fetch timestamp; no free source, no number.
Quickstart
Requires Node >= 22.7.
npx -y @lumen-seo/cli audit https://example.com
npm install -g @lumen-seo/cli
lumen audit https://example.com --max-pages 50
Wire it into Claude Code (or Cursor / VS Code โ MCP onboarding):
claude mcp add --transport stdio lumen -- npx -y @lumen-seo/cli mcp
Then just ask: "audit my site and tell me what to fix first."
Packages
| Package | Purpose |
|---|
@lumen-seo/core | types + payload models, config loader (failThreshold), Fetcher (SSRF/timeout/backoff), robots, provider/rule SPIs + registries |
@lumen-seo/audit | bounded crawler, 36 built-in AuditRules, severity scorer, report assembly |
@lumen-seo/providers | built-in data providers (BYOK, free services only) |
@lumen-seo/cli | lumen CLI, JSONL history, stdio MCP launcher |
@lumen-seo/mcp | MCP tool definitions + transport adapters (Cloudflare Worker) |
@lumen-seo/site | docs site (live) |
Note on packaging: npm packages ship compiled JavaScript + type declarations (dist/) โ plain node import, no flags, no tsx. The TypeScript sources stay the source of truth in the repo; the release pipeline compiles per package at publish time.
Documentation
Development
Requires Node >= 22.
npm install
npm run lint
npm run typecheck
npm test
See CONTRIBUTING.md for conventions, SECURITY.md for the security policy, and docs/release.md for the release runbook.
License
Apache-2.0 โ Copyright 2026 Nitish Agarwal