Skip to content

ship.page in Windsurf: mind the serverUrl

Windsurf's Cascade agent reads MCP servers from a single global JSON file. Remote servers use serverUrl — not url like every other client — and you must hit Refresh after editing. Get those two things right and the setup is thirty seconds.

What this wires up

The ship.page MCP server gives Cascade 9 tools: deploy_html, deploy_files, append_files, and drop management (list, claim, restore, delete). Anonymous use works with zero account — deploys go live for 7 days on their own unguessable subdomains.

Config is global only: Windsurf has no project-scoped MCP file, so the server is available in every project you open.

Connect it

~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "ship-page": {
      "serverUrl": "https://ship.page/mcp"
    }
  }
}

On Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json. The field is serverUrl — copy a Cursor config with "url" and Windsurf silently ignores it. After saving, open Cascade → Manage MCPs and click Refresh; servers do not reload on their own.

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.

Add a headers block to the same entry: "headers": { "Authorization": "Bearer sp_your_key" }.

Prompts to try

Prompt

Write a single-file HTML status page for this service and deploy it to ship.page, then give me the URL.

Prompt

Run the tests, deploy the HTML report folder to ship.page, and paste the link in the PR.

Prompt

Use ship-page to list my drops and delete anything older than two weeks.

Questions

The server connects but shows zero tools — why?

Almost always the field name: Windsurf wants serverUrl, and a copied "url" field fails silently. Fix the key, save, then hit Refresh in Manage MCPs — forgetting the refresh is the second most common cause.

Can I scope the server to one project?

No — Windsurf only reads the global mcp_config.json, so every project shares the same server list. To keep a project clean, toggle the server off in Manage MCPs when you don't need it.

Do I need an API key?

No. Anonymous deploys work and live for 7 days. A free sp_ key ties drops to your account for dashboard management and 30-day expiry; paid plans add named drops with stable URLs.

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.