docs
MCP serverSearchLets your agent search and read documentation and examples for react-three-fiber, drei, zustand and jotai.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use docs to search docs
About this server
Search and read the docs and examples of react-three-fiber, drei, zustand, jotai... from your agent
Install docs
The server’s own address, for the clients that take one directly. Or connect ahel once and every client you use reads it from one address, with the account kept on ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http --scope user docs 'https://docs.pmnd.rs/api/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://docs.pmnd.rs/api/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=docs&config=eyJ1cmwiOiJodHRwczovL2RvY3MucG1uZC5ycy9hcGkvbWNwIn0=Open the link and Cursor adds the server at that address.
ChatGPT
https://docs.pmnd.rs/api/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add docs --url 'https://docs.pmnd.rs/api/mcp'Run it once, then sign in with codex mcp login docs if the server asks for an account.
From the project's README
As published by pmndrs/docs in README.md.
docs/getting-started/introduction.mdx
Usage
Read
$ npx @pmndrs/docs # the reader: every library, every page
$ npx @pmndrs/docs drei # straight into one
$ npx @pmndrs/docs drei/performances/instances # straight to a page
$ npx @pmndrs/docs search instanced mesh # one result per line, on stdout
↑↓ drives whichever pane has the focus — the list of pages, or the page itself. ⏎ or ⇥
hands the focus over, esc or ⇥ hands it back, and the lit border says where it is — the
wheel moves whichever pane it points at, focus or no focus. ←→ changes library, b folds the sidebar away, / searches every library at once, o opens the
page in a browser, q quits. Links inside a page are clickable wherever the terminal honours
OSC 8 hyperlinks — iTerm2, Ghostty, WezTerm, Kitty, Windows Terminal.
search is the half a pipe or an agent can use: results read {lib} {path} - {title}, the
shape the MCP server publishes its index in, and nothing found exits 1.
--in drei narrows to one library, --in drei/performances/instances to the matching lines of
one page.
Both read the published llms-full.txt of each library, cached for an hour under
~/.cache/pmndrs-docs — --refresh fetches again. Outside a terminal, a page target is
written to stdout, so npx @pmndrs/docs drei/performances/instances | glow works.
Build
$ cat foo.mdx | npx @pmndrs/docs@latest build # one HTML fragment, on stdout
$ npx @pmndrs/docs@latest build docs out # one .html per .mdx, assets alongside
$ npx @pmndrs/docs@latest build docs out --format website # the whole website, statically exported
--format fragment (the default) needs nothing but node — no next build, no bundler. A
fragment is the compiled MDX and nothing else: no layout, no stylesheet, no script. Mermaid
diagrams stay fenced blocks, and Sandpack shows its code without the editor.
build --help lists every website option — --libname, --base-path, --icon, --theme-*… Each
one falls back to the environment variable it maps to, the same ones
configuration documents.
$ curl -sL https://raw.githubusercontent.com/pmndrs/docs/refs/heads/main/preview.sh | \
MDX="docs" \
ICON="🥑" \
sh
Builds the website, then serves it — alongside the MDX folder itself, so relative assets
resolve while you edit. Any option from
configuration goes in the same way, and
VERSION picks a published version of the CLI.
Releasing
Every push to main redeploys docs.pmnd.rs via ci.yml — no changeset needed for that.
Add one (pnpm changeset) only when downstream consumers pinning pmndrs/docs/.github/workflows/build.yml@v4 or @pmndrs/docs@4 should pull the change. It bumps package.json, publishes to npm, and tags vX.Y.Z + vX — so @v4 resolves to the latest.
TL;DR — site-only tweak: skip. Anything consumers see (workflow, build behavior, templates): add one.
Test
Visual tests are performed in the cloud, through chromatic.yml.
You can also replay locally:
$ npx playwright test --update-snapshots
$ npx chromatic --playwright --project-token $CHROMATIC_PROJECT_TOKEN
Tools it offers (3)
What this server listed when ahel dialed its public endpoint in Oct 2026, with no key and no account of yours. The names are the server’s own.
search_docsget_page_contentget_example
Signals
- GitHub stars
- 120
- Forks
- 99
- Last commit
- Oct 2026
- Hacker News mentions
- 20
Advanced
- Delivery
- docs MCP server → your ahel connector (mcp.ahel.ai) → your AI.
- Item type
- mcp-server
- Key
io-github-pmndrs-docs- Source
- github.com/pmndrs/docs
- Hosted endpoint
https://docs.pmnd.rs/api/mcp