ship.page from any MCP client
ship.page's MCP server is a single streamable-HTTP endpoint — stateless, no sessions, no SDK required. Clients that speak HTTP connect directly; stdio-only clients go through the mcp-remote bridge. Both paths take under a minute.
What this wires up
The endpoint exposes 9 tools: deploy_html for a single page, deploy_files for a file map, append_files to extend a drop, and management tools (list_drops, claim_drop, restore_drop, delete_drop, get_limits, get_account). Anonymous calls work — no handshake beyond initialize, no account, no key.
Because it's plain JSON-RPC over POST, you can also skip MCP entirely and call the REST API (one curl to /deploy) — see /docs/agents for both surfaces.
Connect it
Direct — streamable HTTP
Endpoint: https://ship.page/mcp
Transport: streamable HTTP (POST, JSON-RPC)
Auth: none required — or Authorization: Bearer sp_your_key
(?apiKey=sp_your_key also works, for clients that can't set headers)GET on the same URL returns a JSON server card describing the endpoint. Clients that probe with an SSE request get a valid empty stream back.
Stdio-only client — mcp-remote bridge
{
"mcpServers": {
"ship-page": {
"command": "npx",
"args": ["mcp-remote", "https://ship.page/mcp"]
}
}
}mcp-remote launches locally over stdio and forwards to the HTTP endpoint, so any client that can spawn npx can use ship.page. Needs Node.js 18+.
The optional API key
Everything above works with zero account — anonymous deploys go live for 7 days and that's all you need for quick shares. Mint a free sp_ key (sign in at ship.page, dashboard → Keys) and deploys land on your account instead: drops the agent can list, restore and delete, 30-day expiry on the free plan, and named drops — stable, readable URLs that redeploy in place — on paid plans.
Send "Authorization: Bearer sp_your_key" on every request, or append ?apiKey=sp_your_key to the endpoint URL (handy for bridges and session-config UIs like Smithery). The header wins if both are present.
Prompts to try
Prompt
Deploy this HTML to ship.page and give me the live URL.Prompt
Zip up the report directory, deploy it to ship.page, and paste the link into the PR.Prompt
List my ship.page drops and delete the expired ones.Questions
Which clients does this cover?
Anything that speaks MCP: Claude Code, Cursor, Windsurf, VS Code, Zed, Gemini CLI, Codex, or your own agent harness. Direct streamable HTTP where supported, mcp-remote for stdio-only clients. The dedicated guides on this site cover the five most common setups with exact config blocks.
Do I need OAuth or an account?
No. Anonymous deploys work with zero auth and live for 7 days. A free sp_ API key (header or ?apiKey= query param) ties drops to your account for management tools and 30-day expiry.
My client sends an SSE probe and reports the server missing — what's up?
Older scanners GET the endpoint expecting a persistent SSE stream. ship.page answers those probes with a valid empty SSE response, which current clients accept. If yours still complains, bridge with mcp-remote — it normalizes the transport.
Ship something in the next minute
Paste the config, restart your client, and ask it to deploy a page. No account, no key, no wait — the first URL is free.