MCP
One URL. Your agent ships.
https://mcp.shipstatic.com
Drop that URL into any MCP client. Your agent can publish a static site in its next message — free, no install, no signup, no API key. The response includes a live URL and a claim URL the user can visit later to keep the site permanently (otherwise it expires in 3 days).
Connect an account and the same URL answers with the rest: listing, custom domains, and everything tied to an account. Connecting is optional — publishing without an account keeps working exactly as it does today.
Add it to your client
Claude Code
claude mcp add --transport http shipstatic https://mcp.shipstatic.com
Cursor, Antigravity, Windsurf, n8n, Zed — anywhere with mcp.json
{
"mcpServers": {
"shipstatic": {
"url": "https://mcp.shipstatic.com"
}
}
}
Claude Desktop, Claude.ai web — add a custom connector pointing at https://mcp.shipstatic.com.
VS Code — install the ShipStatic extension; the server is built in, with no config at all.
That's it. Your agent can ship.
What you can ask
Drop any of these into your agent — no account needed:
"Ship the dist folder."
"Publish my Vite build to a live URL."
"Deploy and password-protect with
preview2026.""Re-publish with the new files."
"Ship it to a temporary URL I can send to my client."
"Tag this deployment
v1.2and publish it."
The agent calls deployments_upload and shows you:
✓ Live: https://happy-cat-abc1234.shipstatic.com
Visit https://my.shipstatic.com/claim/... within 3 days to keep this deployment permanently.
Once the user claims it, the deployment is theirs and never expires.
Connect an account
Nothing to configure. Ask your agent for something that needs an account — "list my deployments" — and your client will offer to sign you in. Approve the permissions once and the whole toolset is available:
"List my deployments."
"Connect
www.example.comto the latest one.""Show me the DNS records I need to set up."
"Switch
www.example.comto the previous deployment."
Connected deployments never expire, and you can pass a ttl when you want one that cleans itself up.
You can disconnect at any time from the same place in your client. Access is scoped and expires; it never includes creating API keys or deleting your account.
Tools
Fifteen tools, the same whichever way you connect. What changes is not which tools exist, but which ones answer.
Publishing — no account needed
| Tool | Description |
|---|---|
deployments_upload |
Publish files as a new deployment (supports password) |
Deployments — with an account
| Tool | Description |
|---|---|
deployments_list |
List all deployments |
deployments_get |
Show deployment details by hostname |
deployments_set |
Update deployment labels |
deployments_delete |
Delete a deployment permanently |
Domains — with an account
| Tool | Description |
|---|---|
domains_set |
Create a domain, link to deployment, or update labels |
domains_list |
List all domains |
domains_get |
Show domain details |
domains_records |
Get required DNS records for a domain |
domains_dns |
Look up the DNS provider for a domain (e.g. Cloudflare, Namecheap) |
domains_share |
Get a shareable DNS setup link: anyone with it can view the records without an API key |
domains_validate |
Check if a domain name is valid and available |
domains_verify |
Trigger DNS verification after records are set |
domains_delete |
Delete a domain permanently |
Account — with an account
| Tool | Description |
|---|---|
whoami |
Show current account info |
Typical workflows
Publish with no account (nothing to set up):
- Agent calls
deployments_uploadwith files - Response has
url(live now) andclaim(visit to keep) - Agent shows both URLs to the user
Custom domain (with an account):
domains_validateto check availabilitydomains_setto create or linkdomains_recordsto get DNS records, show them to the userdomains_dnsto identify the user's DNS provider (optional)domains_verifyafter the user configures DNS
Prefer to run it yourself?
The same fifteen tools also run as a local process, published as @shipstatic/mcp on npm. Reach for it when your agent needs to publish a folder on your own machine — the hosted endpoint receives files inline, so it has no path to read from — when you would rather configure a key once than sign in, or when your client does not speak OAuth yet:
claude mcp add shipstatic -e SHIP_TOKEN=ship-your-api-key -- npx -y @shipstatic/mcp
Or in any mcp.json:
{
"mcpServers": {
"shipstatic": {
"command": "npx",
"args": ["-y", "@shipstatic/mcp"],
"env": {
"SHIP_TOKEN": "ship-your-api-key"
}
}
}
}
SHIP_TOKEN is optional and takes a free API Key. Without it, deploys are public with a claim URL and expire in 3 days. With it, they go to your account and never expire — the same two states connecting gives you on the hosted endpoint.
NPM · GitHub · MCP Registry · Smithery · Glama
Agents that run shell commands
If your agent can run a terminal command, it does not need MCP at all — the CLI publishes with nothing installed and nothing configured:
npx @shipstatic/ship ./dist
Same platform, same anonymous publish, same claim URL. Many agents reach for this first because there is no client configuration to add — see the Skill for a single file that teaches any agent to use it.
Architecture
Zero business logic. Every tool is a one-liner that delegates to the SDK. One tool surface, two ways to reach it: the hosted endpoint receives file bytes inline since a server has no access to your disk, and the local package reads paths from it. Everything else — the tools, their schemas, what they answer — is the same code.