Tools
MCP
MCP tools for Claude Desktop and Claude online Connectors.
Remote MCP
Paste into Claude → Customize → Connectors
Same tool engine for Desktop (JSON-RPC) and Claude online (Streamable HTTP). Use the Remote MCP box above for Claude Connectors. Short link: ner.sh/mcp.
Endpoints
Desktop / CLI proxy (JSON-RPC 2.0) — POST to:
https://ner.sh/api/mcp
Auth header:
Authorization: Bearer <firebase-id-token | cli-session-token>
Claude online Connectors (Streamable HTTP) — connector URL:
https://ner.sh/api/mcp/streamable
Local dev: use dev-bypass as token when DEV_BYPASS_AUTH=true.
CLI / Claude sessions use a signed CLI session token (~30 days) issued after device-code login at /cli/auth.
Tools ↔ CLI
| MCP tool | CLI equivalent |
|---|---|
add_canvas_section | add-section |
remove_canvas_section | remove-section |
reorder_canvas_sections | reorder-sections |
switch_site_skin | set-skin |
set_section_layout | set-layout |
validate_library_config | design system library validation |
get_site | full site JSON |
get_site_schema | pages, sections, copy slots (discoverability) |
update_copy | patch instanceId.slotKey copy values |
update_seo | title + description copy only |
add_page | add a page (auto-migrates single-page sites) |
update_pages | replace full pages[] array |
remove_page | remove page by id |
upsert_pricing_row | update one pricing tier on a pricing section |
import_site_from_url | soft-deprecated — prefer kit upsert / harvest |
upsert_kit_site | create or replace kit site (DesignKit + kitPages) |
get_kit_schema | kit vocabulary (+ optional site slots) |
update_kit_slot | edit one kit text slot |
delete_site | permanently delete an owned composition site |
publish_site | publish to staging or production |
publish_from_github | Vantage: dispatch GitHub Action → build + commit export to vantagecompute.nertia.ai (not S3) |
Multi-page sites: add_canvas_section, remove_canvas_section, reorder_canvas_sections, and set_section_layout target the home page (pages[] entry with empty slug). They keep pages[] and composition.sections in sync. Use add_page / update_pages for other pages.
Route implementation: src/app/api/mcp/route.ts (Desktop) · src/app/api/mcp/streamable/route.ts (Connectors) · site tools: src/app/api/mcp/siteTools.ts.
Claude online (Customize → Connectors)
Use remote MCP from claude.ai without the Desktop stdio package:
- In Claude: Customize → Connectors → Add custom connector.
- Name:
nertia(anything). - URL:
https://ner.sh/api/mcp/streamable - Leave OAuth Client ID / Secret blank (Nertia supports dynamic registration + sign-in).
- Click Add, then Connect when prompted — sign in on www.nertia.ai (Google preferred if that’s how your nertia account works).
- You should see Connected to Claude, then return to Claude and enable the connector →
tools/list.
Nertia’s authorization server lives on ner.sh (/.well-known/oauth-authorization-server, /oauth/mcp/authorize, /api/oauth/mcp/token, /api/oauth/mcp/register). Access tokens are the same CLI session tokens Desktop uses.
Optional (beta): if your Claude plan shows Request headers, you can still paste Authorization: Bearer <cli-token> from npx @nersh/mcp login instead of OAuth.
Transport notes: Streamable HTTP uses JSON responses + durable mcp-session-id (stored in RTDB). Standalone GET/SSE is not offered (405) — that avoids Claude seeing an immediately-closed empty stream (“connection stopped working”).
Local Connectors dogfood: tunnel localhost:3000 publicly, or use production ner.sh after deploy. Dev bypass (Bearer dev-bypass) still works for direct HTTP tests when DEV_BYPASS_AUTH=true.
publish_from_github (Vantage)
Dispatches Publish Vantage from GitHub on ps2pdx/nertia (ubuntu runner builds James’s Next.js repo, syncs out/ to public/clients/vantagecompute, commits to main). Live at vantagecompute.nertia.ai. Target is nersh, not James’s S3/CloudFront on www.vantagecompute.ai.
- Local sync (dev):
./scripts/sync-vantage-next-export.sh [path/to/out] - MCP (prod):
publish_from_github{ repo?, ref?, slug? }— admin orvantagecomputemanager. Returns a GitHub Actions run URL in ~2s; build + commit ~2–3 min; Vercel deploy ~2 min after that. Allowlisted repos:ps2pdx/vantagecompute-website,jamesbeedy/vantagecompute-website. - Secret:
NERTIA_GITHUB_PATon Vercel withactions:write+contents:writeonps2pdx/nertiaand read on the source repo.
Why not inline build on MCP? Claude Connectors times out before npm ci + npm run build finish on Vercel serverless (~3+ min). Dispatch returns immediately with a run link.
Webflow ZIP unpack (scripts/unpack-webflow-export.sh) is legacy staging only.
Claude Desktop (@nersh/mcp)
Install with npx — no repo path, no manual Firebase token after first login:
{
"mcpServers": {
"nertia": {
"command": "npx",
"args": ["-y", "@nersh/mcp"]
}
}
}
First run: opens https://ner.sh/cli/auth?code=… → sign in → token saved to ~/.config/nersh/credentials.json.
Re-login: npx @nersh/mcp login
Package: packages/mcp · publish name @nersh/mcp.
Local dev
{
"mcpServers": {
"nertia": {
"command": "npx",
"args": ["-y", "@nersh/mcp"],
"env": {
"NERTIA_MCP_URL": "http://localhost:3000/api/mcp",
"NERTIA_MCP_TOKEN": "dev-bypass"
}
}
}
}
Start emulator + dev server (npm run dev:setup). NERTIA_MCP_TOKEN=dev-bypass skips saved credentials.
Troubleshooting
| Symptom | Fix |
|---|---|
| Login loop | Run npx @nersh/mcp login and finish browser sign-in |
| Invalid token | Delete ~/.config/nersh/credentials.json, log in again |
| Local 401 | Confirm DEV_BYPASS_AUTH=true and emulator env on dev server |
Legacy stdio proxy
scripts/nertia-mcp-stdio.mjs is deprecated — use @nersh/mcp instead.
Blob import bootstrap
./scripts/import-client-url.sh vantagecompute https://www.vantagecompute.ai
Request flow
Claude Desktop → @nersh/mcp (stdio) → POST /api/mcp
Claude online → Customize → Connectors → GET/POST /api/mcp/streamable
│
▼
verifyToken → handleMcpJsonRpc (shared tools)
│
▼
Firebase RTDB → hosted site updates
Quick reference
Desktop: POST https://ner.sh/api/mcp
Connectors: https://ner.sh/api/mcp/streamable
Auth: Bearer <firebase-id-token | cli-session-token>
Local: Bearer dev-bypass (DEV_BYPASS_AUTH=true)
Login: npx @nersh/mcp login → ~/.config/nersh/credentials.json
Tools: add/remove/reorder sections, switch skin, set layout, get site/schema, update copy/seo, pages, pricing, import, publish, publish_from_github (Vantage)