Marginalia deliberately favours small, text-dense, non-commercial sites, which is why it returns things a mainstream search will not — personal essays, old documentation, hobbyist writing. Attach this when the failure mode you are fighting is an answer assembled from SEO pages. The public endpoint is shared, so pair it with a general search server rather than making it the only way your assistant reaches the web.
An MCP server over the Marginalia Search API, a search engine built to surface non-commercial writing and obscure corners of the web rather than the pages optimised to rank. One tool, with the index selector from Marginalia's own interface exposed as a parameter.
- A Marginalia web search from a query string, returning each result's URL, title and description, plus the licence information Marginalia attaches to its results — `search`
- A result count from 1 to 100, defaulting to 10
- The `index` parameter, matching the index dropdown in Marginalia's own interface, so you can steer what part of its corpus answers
- Rate limiting handled with an explanatory error rather than a silent failure, since the public endpoint returns 503 when it is busy
No account and no key to start: `MARGINALIA_API_KEY` is optional and the server falls back to public access without it. A dedicated key is requested by email from Marginalia. The npm package name is `marginalia-mcp-server` (0.1.0) and it is marked private, so build from a clone with `npm install` and `npm run build`. Public access is rate-limited, so expect to wait between bursts rather than treating it as a bulk search backend.
One command — npx -y github:bmorphism/marginalia-mcp-server
