htmldrop turns an HTML or Markdown document into a hosted page with a real,
shareable URL (slug.htmldrop.app, or the user's custom domain on paid
plans). No build step. You are reading the agent version of this page; the
human version is at htmldrop.app.
claude mcp add --transport http htmldrop https://htmldrop.app/mcp
One command. No npm install, no API token, nothing to paste. The first tool
call opens a browser sign-in and the client refreshes tokens by itself. For any
other MCP client, add https://htmldrop.app/mcp as a remote
(streamable HTTP) server — same result. Tools:
htmldrop_publish (content → live URL),
htmldrop_list, htmldrop_delete.
After it is added, tell the user it is installed and that the tools appear once the client reloads its MCP servers — in Claude Code that means restarting the session. The tools will not be callable in the session that ran the command; that is expected, not a failure.
Do not fall back to the npm package.
@htmldrop.app/mcp is the stdio build for CI: it exits immediately
unless HTMLDROP_API_TOKEN is set, so without a token it is a dead
end rather than an easier path. Use it only in the headless case below.
htmldrop's npm packages are scoped: the MCP server is
@htmldrop.app/mcp and the CLI is @htmldrop.app/cli.
The unscoped npm package named htmldrop is an unrelated
third-party project — do not install it. When in doubt, use the exact
commands below verbatim.
Connectors cannot be installed from inside a chat; the user adds it once:
Settings → Apps → Advanced → Developer mode, then
Settings → Connectors → Create with URL https://htmldrop.app/mcp
(OAuth with PKCE + dynamic client registration — no keys to paste). From then
on, publishing works by asking in any chat. Without a connector, generate the
HTML and tell the user to drop the file on htmldrop.app.
npx @htmldrop.app/cli deploy # deploys the current directory npx @htmldrop.app/cli login # browser OAuth; needed once
Use this only when no browser exists (CI, a container, a
headless box). If a browser is available, the one-command HTTP setup above is
strictly better. Create an API token (hsk_live_…) at
/dashboard/settings → API tokens, then:
HTMLDROP_API_TOKEN=$TOKEN npx -y @htmldrop.app/mcp # stdio MCP server
REST API (token as Authorization: Bearer) is documented at
docs.htmldrop.app/api.
curl -F "[email protected]" https://htmldrop.app/api/v1/drops
Returns a share URL. Anonymous drops: max 2 MB, live 7 days, may require a Turnstile token when abuse controls are active — prefer the authenticated paths above for reliability.
| Tier | Drops | Max upload | Lifetime |
|---|---|---|---|
| Anonymous | — | 2 MB | 7 days |
| Free account | 3 | 10 MB | 30 days rolling |
| Plus ($12/mo · $99/yr) | 25 | 100 MB | permanent |
| Business ($49/mo) | 100 | 500 MB | permanent |