01
Homebrew
$ brew install desmondsanctity/tap/pinax Recommended on macOS · auto-updates with brew upgrade.
Local MCP server for docs
Pinax crawls a public documentation site, indexes its structure, and exposes it to any MCP client as four focused tools. Pages are fetched live — what your agent reads is what the docs site serves today.
$ brew install desmondsanctity/tap/pinax 15
curated docs sites
one-word names → indexed
4
MCP tools
list · search · sections · get
0
cloud
stays on your machine
How it works
01
Add
$ pinax add stripe Pick a name from the catalog or paste any docs URL. Pinax discovers structure via llms.txt or sitemap.xml and writes a local manifest.
02
Serve
$ pinax serve A local MCP server speaks stdio to your client and HTTP to the log UI. Pages are fetched live, so what your agent reads is what the docs site serves today.
03
Use
$ mcp tools/call search_pages Your client gets four focused tools: list manifests, list sections, full-text search a page, and fetch the page. No vectors, no retraining.
Install
01
Homebrew
$ brew install desmondsanctity/tap/pinax Recommended on macOS · auto-updates with brew upgrade.
02
Go install
$ go install github.com/desmondsanctity/pinax/cmd/pinax@latest Requires Go 1.22+. Binary lands in $GOBIN.
03
Prebuilt binary
$ curl -L https://github.com/desmondsanctity/pinax/releases/latest -o pinax Linux/macOS/Windows builds on the releases page.
MCP clients
Each client gets a copy-pasteable JSON snippet and a config-path reminder.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
Setup guide →
Claude Code
claude mcp add … -- pinax serve …
Setup guide →
Cursor
~/.cursor/mcp.json
Setup guide →
Windsurf
~/.codeium/windsurf/mcp_config.json
Setup guide →
Cline (VS Code)
cline_mcp_settings.json
Setup guide →
FAQ
A small Go CLI that turns any public documentation site into a local Model Context Protocol server. Run it once, point your MCP client at it, and the docs become live tools your agent can call — no copy-pasting pages into chat.
Docs already have structure (headings, sitemaps, llms.txt). Pinax keeps that structure intact and serves pages live, so answers come from the version of the docs that exists today, not a stale embedding from last month. No embeddings, no re-indexing, no drift.
Only the requests you'd make anyway — fetching pages from the docs site itself. No telemetry, no analytics, no third-party APIs. The MCP transport is stdio between Pinax and your client; the log UI is a localhost-only HTTP server.
Anything with a sitemap.xml or llms.txt works out of the box. Pages need to render on the server (HTML, not pure SPA shells) — most popular dev docs do. The catalog page lists the 15 we know index cleanly today; any URL with /, . or :// is a valid add target.
Run pinax add <url> with any HTTPS URL. Pinax discovers structure on the fly. If you want it shipped in the curated catalog, open an issue or PR against internal/catalog/catalog.json and add the three required fields: displayName, url, tags.
Not in v0.3. Auth headers and cookie-based crawling are planned for v0.4. Today Pinax fetches as an anonymous client, so anything behind a login screen is invisible to it.
Those tools concatenate or summarise content into one large blob. Pinax exposes structured tools — list_sections, search_pages, get_page — so the agent fetches only the page it needs, when it needs it. No prompt-bloat, no out-of-date copies.
One last thing
$ pinax add stripe && pinax serve