The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Dochost MCP listing page.
Publish Markdown or HTML to a clean, shareable link — straight from your AI
assistant. The dochost MCP server gives Claude, ChatGPT, Cursor and any other MCP
client six tools — publish, update_page, list_my_pages, get_page,
get_account, delete_page — so your assistant can hand back a public
dochost link and then keep maintaining it. No copy-paste,
no separate dashboard.
https://dochost.io/api/mcp (Streamable HTTP, OAuth)Your LLM produced a report, a README, an HTML artifact. Sending it shouldn't mean
a screenshot or a raw .md blob. dochost turns that output into a normal web page
at its own URL, in one tool call. Markdown and HTML are rendered live.
Claude Code (one line):
Then run /mcp inside Claude Code and approve in the browser. Add --scope user
to use it in every project.
Claude Desktop / Cursor / VS Code / Windsurf — add a remote HTTP server:
You authorize once via OAuth in the browser; the assistant then publishes as you, and output follows your dochost plan's entitlements.
For clients or directory evaluators that need a local stdio process, this repository includes a bridge to the same hosted MCP endpoint:
Or run it in Docker:
Node.js 22 or newer is required. The bridge forwards the live tools and schemas;
it is not a self-hosted copy of the dochost application. Initialization and
tool discovery are public. Interactive clients can use OAuth; headless tool
execution needs an existing DOCHOST_API_KEY runtime secret (Docker:
docker run --rm -i -e DOCHOST_API_KEY dochost-mcp).
Maintainers: see Glama claim, build and release instructions.
| Client | Recommended auth | Why |
|---|---|---|
| OpenClaw, Hermes | API key | Headless agents (e.g. a Telegram orchestrator). A static Bearer key works with the plain-HTTP skill and any MCP runner, with no browser step per session. |
| Claude, Cursor, ChatGPT, VS Code, Windsurf, and all other MCP clients | OAuth | One browser approval, nothing long-lived stored in config; the assistant publishes as you. |
Keep the API key like any secret: store it as an environment variable / host secret (never commit it), and revoke or rotate it from Settings → API keys if it leaks.
OpenClaw and Hermes are headless, so they authenticate with an API key. Create
one at dochost.io → Settings → API keys, export it as
DOCHOST_API_KEY, and either:
publish skill that works on any agent
that can make an HTTP request: skills/dochost-publish/.https://dochost.io/api/mcp with the key as
a Bearer header: examples/mcporter.config.json.Per-host install guides:
clients/openclaw.mdclients/hermes.mdOne-shot from a shell: examples/publish.sh.
Six tools. publish creates; the rest let the assistant keep working with what it
already published, instead of stranding a link every time you revise something.
publishPublish Markdown or HTML as a hosted page and get a shareable URL.
| Parameter | Type | Notes |
|---|---|---|
body | string (required) | The Markdown or HTML content to publish. |
format | "markdown" | "html" | Auto-detected when omitted. |
public | boolean | List on Explore. Defaults to false (unlisted). |
customSlug | string · Pro | Choose the link path instead of a random slug. |
password | string · Pro | Gate the page behind a password. |
noBranding | boolean · Pro | Hide the dochost footer badge. |
Returns url, slug, expiresAt, and an editToken.
Example: "Publish my Q3 report as a private page with a password." →
dochost.co/d/q3-report(password-gated, 7-day link on free).
update_pageReplace the content of a page in place. The URL, view/like counts and expiry
all survive — only body, format and title change.
| Parameter | Type | Notes |
|---|---|---|
slug | string (required) | The page to update. |
body | string (required) | The new Markdown or HTML content. |
format | "markdown" | "html" | Auto-detected when omitted. |
title | string | Override the derived title. |
Prefer this over publishing again whenever you are revising something already published — a second
publishmints a second link and strands the one the reader already has. Resending identical content is a no-op.
list_my_pagesList the pages you have published, newest first. Paginated (limit, offset);
returns compact records without page bodies.
get_pageLook up one page by slug: title, format, status, view/like counts, expiry, and
whether it is password-protected. Never returns the body or the password.
get_accountYour plan, page-quota usage and entitlement flags (size cap, custom slug,
password, branding). Worth calling before publish so the assistant knows your
limits up front instead of failing on them.
delete_pagePermanently delete a page by slug. The link stops working immediately and the
slug is freed. Deleting an already-deleted page is a safe no-op.
dochost.co, a separate cookieless content origin
— never on the app origin dochost.io. That is what lets dochost serve author
HTML under a hardened policy without it touching your session. dochost.io/d/…
permanently redirects to dochost.co/d/…, so old links keep working.MIT — see LICENSE.