Publish, update, list, and delete Markdown pages on Booklet directly from your AI assistant.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Publish clean, readable pages from Markdown β by hand, by script, or by your AI assistant.
Paste Markdown into the editor, preview it live, and share a polished read-only URL in one click β or skip the editor and publish the same way from a CI pipeline, a script, or an AI assistant like Claude. Sign in for pages that never expire, version history, analytics, custom slugs, password protection, collections, and a full REST API.
What makes Booklet more than an editor is the surface around it: a REST API, an npm-published CLI, a GitHub Action for publishing docs in CI, and a standalone MCP server so AI assistants like Claude can publish and manage pages directly. Markdown-to-shareable-page tools are common; shipping the same functionality as an API, a CLI, a CI action, and an MCP server on top of it is the part that isn't.
Live: booklet.ashwinsathian.com Β· API docs: /api-docs Β· MCP setup: /mcp-setup
That's it: you get back a permanent, shareable URL. No account needed to try the editor itself; sign in only when you want pages that never expire, an API key, or the CLI.
<iframe> embed codes for any page via /p/:id/embed$...$ and display $$...$$ math blocksmermaid language tag/p/my-release-notes/t/:slug spacespage.published and page.updated eventsnpx booklet-cli)AshwinSathian/publish-to-bookletSee packages/cli/README.md for full docs (all flags, CI/non-interactive auth via --key or BOOKLET_API_KEY, pages open, etc.).
All endpoints are under /api/v1/ and authenticated with Authorization: Bearer <bklt_...>.
| Method | Path | Description |
|---|---|---|
POST | /api/v1/publish | Create a new page |
GET | /api/v1/pages | List your pages |
GET | /api/v1/pages/:id | Read a page's metadata and raw content |
PATCH | /api/v1/pages/:id | Update content, slug, or visibility |
DELETE | /api/v1/pages/:id | Delete a page |
GET | /api/v1/keys | List API keys |
POST | /api/v1/keys | Create an API key |
DELETE | /api/v1/keys/:id | Revoke an API key |
Publish example:
booklet-api.ashwinsathian.com is a dedicated hostname for the API surface (same app/process as the main site, just scoped; see docs/OPERATIONS.md). booklet.ashwinsathian.com serves /api/v1/* too, so either works.
Full endpoint reference with request/response shapes: booklet.ashwinsathian.com/api-docs.
A plain Node process (mcp-server/) that exposes Booklet's API to AI assistants supporting the Model Context Protocol, run under PM2 alongside the main app, not a Cloudflare Worker (that was the original design, changed when the rest of the app moved off Cloudflare Workers; see docs/OPERATIONS.md).
Endpoint: https://booklet-mcp.ashwinsathian.com/mcp
Auth: Authorization: Bearer <bklt_...> header (same API keys as the REST API)
Tools: publish_page, update_page, get_page, list_pages, delete_page
Resources: published pages are also exposed as browsable/readable MCP resources (booklet://pages/:id)
Prompts: five pre-built document templates the assistant can fill in and publish directly β incident_report, adr (Architecture Decision Record), release_notes, rfc, and runbook
Point any MCP-compatible client at the endpoint above with your API key in the Authorization header. booklet.ashwinsathian.com/mcp-setup has copy-paste config for Claude Desktop, Claude.ai, Cursor, Windsurf, VS Code, and Zed.
To run the server itself locally:
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router) |
| Language | TypeScript 5 (strict) |
| Styling | Tailwind CSS v4 |
| Auth | In-house (email + password, argon2id, DB-backed sessions) |
| Database | Self-hosted MongoDB (pages, users, API keys, webhooks, rendered documents) |
| Deployment | PM2 process on a Mac behind a Cloudflare Tunnel (Cloudflare Workers/OpenNext was built, shipped, then deliberately rolled back 2026-05-25; see docs/OPERATIONS.md) |
| Markdown | unified + remark-parse + remark-gfm + remark-math |
| Math | KaTeX |
| Diagrams | Mermaid |
| Analytics | Google Analytics 4 |
mongod, or any self-hosted/managed instance)Create .env.local:
See .env.example for the full list of required secrets (session auth, API keys, page-unlock tokens, etc.). Each documents its own generation command and fail-closed behavior.
Every push/PR to main runs lint, typecheck (root app + each workspace package), a production build, and the unit test suite against a real MongoDB service container. See .github/workflows/ci.yml.
Push to main with a bumped version in packages/cli/package.json or packages/shared/package.json β automatically publishes booklet-cli or booklet-api-client to npm.
Required secret: NPM_TOKEN (Granular Access Token with publish + 2FA bypass).
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/booklet)<a href="https://allmcps.com/mcp/booklet"><img src="https://allmcps.com/api/badge/booklet?style=directory" alt="Booklet on AllMCPs" /></a>