MCP-Powered · Self-Hosted · Instant

Tell AI once,
go live in seconds

PageFire gives Claude, Cursor and other AI agents a "publish" superpower — HTML, Markdown, or a full ZIP becomes a public HTTPS URL instantly. No server to manage, no deploy pipeline to configure.

<3s
call to live
11
MCP tools
0
deploy steps
SPA
client routing
Capabilities

A publish layer built for AI workflows

Not a traditional deploy tool — infrastructure that lets AI control publishing directly.

deploy_page — Single page

Pass an HTML string and get a dedicated HTTPS subdomain in seconds. Perfect for AI-generated reports, demos, and landing pages.

📦

deploy_zip — Full site

Upload a ZIP archive and it's extracted and published automatically. Supports React / Vue build output with SPA mode for client-side routing.

📝

deploy_markdown — Instant render

Pass Markdown and get a beautifully typeset page. Three built-in themes: light, dark, and sepia — no HTML or CSS required.

📖

deploy_docs — Docs site

Multiple Markdown files become a docs site with sidebar navigation automatically. Cross-page links rewritten, GitBook-style out of the box.

🔗

Stable URLs on update

Name your site with a did and republishing overwrites in place — the URL never changes, shared links stay valid forever.

🔒

Access control & expiry

Toggle public or password-protected with one call. Pages can auto-expire or be pinned permanently — you decide who sees what.

🛡️

Your data, your server

Fully self-hosted — all pages and data live on your own server. No third-party platform dependency, migrate any time.

How it works

Three steps, zero config

01 · Configure

Add the MCP server

Put the server URL and Bearer Token in .mcp.json and add it to your AI client (Claude / Cursor).

02 · Chat

Tell AI what to publish

Describe in plain language — AI calls deploy_page or deploy_zip automatically to complete the publish.

03 · Access

Get a public URL

Your HTTPS subdomain is ready instantly. Share with anyone — no login required. Password protection available.

Quickstart

Up and running in 5 minutes

1

Create an account, then generate an API Key (starts with pf_) in the dashboard.

2

Configure the MCP connection for your client:

Option 1 · Direct HTTP (recommended, zero deps)
Create .mcp.json in your project root and add it to .gitignore so your token is never committed:

{ "mcpServers": { "pagefire": { "type": "http", "url": "https://mcp.pagefire.hkting.com/mcp", "headers": { "Authorization": "Bearer <your-token>" } } } }
Claude Code CLI users can also run: claude mcp add --transport http pagefire https://mcp.pagefire.hkting.com/mcp -H "Authorization: Bearer <token>"

Option 2 · stdio bridge (fallback)
If Option 1 reports Failed to connect but a browser / Node can reach the domain, your client runtime's TLS fingerprint is likely being blocked. Use mcp-remote on your local Node to bridge the same endpoint over stdio (requires Node ≥ 18 / npx):

{ "mcpServers": { "pagefire": { "type": "stdio", "command": "npx", "args": [ "-y", "mcp-remote", "https://mcp.pagefire.hkting.com/mcp", "--header", "Authorization:${AUTH_HEADER}", "--transport", "http-only" ], "env": { "AUTH_HEADER": "Bearer <your-token>" } } } }
⚠️ The token must be passed via env.AUTH_HEADER and the header written as Authorization:${AUTH_HEADER} (no space). Writing "Authorization: Bearer ..." directly splits on the space when the process concatenates args, causing handshake success but UNAUTHORIZED on tool calls.

Option 3 · npm connector package (simplest)
pagefire-mcp is published on npm — token goes in an env var only, no URL or header splitting pitfalls:

{ "mcpServers": { "pagefire": { "command": "npx", "args": ["-y", "pagefire-mcp@latest"], "env": { "PAGEFIRE_TOKEN": "pf_<your-token>" } } } }

Open Cursor → Settings → MCP → Add new global MCP server and fill in:

{ "pagefire": { "url": "https://mcp.pagefire.hkting.com/mcp", "headers": { "Authorization": "Bearer <your-token>" } } }
Cursor uses a global MCP config and does not read per-project .mcp.json.

Add to codex.yaml (or ~/.codex/config.yaml):

mcp_servers: - name: pagefire type: http url: https://mcp.pagefire.hkting.com/mcp headers: Authorization: "Bearer <your-token>"
Codex CLI supports Streamable HTTP transport. Tools appear automatically after restart.

Any MCP client that supports Streamable HTTP transport works. Fill in:

Endpoint:https://mcp.pagefire.hkting.com/mcp Auth:Authorization: Bearer <your-token> Protocol:MCP 2025-03-26 (Streamable HTTP)
If the native connection reports Failed to connect (but a browser / Node can reach the domain), bridge via npx mcp-remote <endpoint> --header "Authorization:${AUTH_HEADER}" --transport http-only (token via env.AUTH_HEADER to avoid space splitting). See Playground → Connect.
3

Reload your client, then publish with a single sentence:

Publish this content as a public webpage, keep it permanently.
Type directly in the chat box — Claude calls PageFire tools and returns an HTTPS link.
Publish this content as a webpage.
Use Cursor's Agent mode (Cmd/Ctrl+I) — it auto-calls your configured MCP tools.
Publish this content as a webpage.
Codex CLI detects PageFire tools and calls the appropriate deploy_* command.
Publish this content as a webpage.
Any MCP-capable client works — describe in natural language, no code required.

You can also publish directly from the terminal or CI without an AI client:

npm install -g pagefire-mcp export PAGEFIRE_TOKEN=pf_your-token pagefire deploy ./dist --pin # deploy directory pagefire deploy README.md # deploy Markdown pagefire deploy-docs ./docs # deploy docs site pagefire list # list all deployments
Run pagefire --help after install for all commands, or use without installing via npx pagefire-mcp.

Start using PageFire

Sign up and create your API Key in the dashboard — your data stays on your server. From signup to your first live page in under 5 minutes.