Skip to main content

Confirm

Are you sure?

Integrations

URLpipe in Windsurf

Give Cascade the pages it needs — rendered, readable, and measured.

By · Last updated: September 2026

TL;DR

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. A remote server uses "serverUrl" rather than "url": set it to https://urlpipe.dev/mcp, add an Authorization header, and refresh the MCP list in Cascade. Headers expand ${env:NAME}, so the token can live in your environment.

Free plan, no credit card. 1,000 credits a month.

Why

What Cascade gets

Cascade can already search and edit your code; URLpipe lets it read the web as it actually renders. It reads a page as Markdown, captures a screenshot, and runs a Lighthouse audit — so "why is our landing page slow on mobile?" becomes a question it can answer with numbers: LCP, CLS, TBT and the four category scores.

Setup

1. Create an organization token

MCP uses its own credential, not a project API key: an organization token, created under Organization → MCP access in the dashboard. An agent works across projects, and a project key names only one. The token is shown once — copy it when you create it.

Choose Fetch pages and read results for an agent that works normally, or Read past results only for one that must not spend credits (more on that below). The account's email address must be confirmed before the token works; until then the server answers 403 with email_unverified.

Setup

2. Add the server to mcp_config.json

Open the config from Cascade's MCPs panel (the … menu → Open MCP config file). It lives at ~/.codeium/windsurf/mcp_config.json on macOS and Linux and %USERPROFILE%\.codeium\windsurf\mcp_config.json on Windows. Note serverUrl: Windsurf's key for a remote server's address.

mcp_config.json
{
  "mcpServers": {
    "urlpipe": {
      "serverUrl": "https://urlpipe.dev/mcp",
      "headers": {
        "Authorization": "Bearer ${env:URLPIPE_TOKEN}"
      }
    }
  }
}

${env:URLPIPE_TOKEN} is replaced with the environment variable of that name; ${file:/path/to/token} reads it from a file instead. Both keep the token out of the config.

Check it loaded

Refresh the MCP list in Cascade's MCPs panel. urlpipe should appear with its fourteen tools. Cascade can use 100 tools in total across all servers, so switch off any URLpipe tools you don't need if you run many servers.

Try it

3. A first prompt to try

Prompt for Windsurf
Use urlpipe with sync: true to run a mobile Lighthouse audit of https://example.com and a
screenshot of it. Tell me the performance score, the LCP and CLS values, and what on the
screenshot is the likely LCP element.

A Lighthouse audit costs 2 credits and usually takes 15–20 seconds, well inside the sync window. The Lighthouse guide explains what the numbers mean.

The agent starts with list_projects, because every fetching tool takes a project_id. Async is the default, as over HTTP: without sync: true a tool returns a token and the agent collects the result with get_result. Most agents work this out from the tool descriptions; saying "use sync: true" in the prompt saves a round trip.

Tokens

Keep the token safe and the spend bounded

  • A read-only token cannot spend. Created with Read past results only, it can list projects, read usage and retrieve results already paid for, and nothing else. Give it to an agent that should only look things up.
  • Narrow it. A token can be limited to one project, or given an expiry date. Deleting it revokes it at once.
  • Keep it out of version control. Put it in an environment variable or the client's secret prompt rather than in a config file you commit.
  • Same credits as the API. fetch_markdown costs 1 credit, summarize_page 17; a cached result is free. get_usage shows what is left. See pricing.

Troubleshooting

If it doesn't connect

  • 401 — "A bearer token is required" or "not valid". The header must be exactly Authorization: Bearer YOUR_TOKEN: the word Bearer, one space, the token. Check that an environment variable actually expanded.
  • 403 email_unverified. Confirm the account's email address; the token then works as it is.
  • The client asks you to sign in with OAuth. URLpipe has no OAuth flow — the header is the whole of the authentication. Set it, and the client has nothing to sign in to.
  • Tool calls fail with rate_limited. The server allows 300 calls per 5 minutes per token. concurrency_limit means your plan's parallel requests are all busy.
  • The server shows no tools. Check the key is serverUrl, not url, and that the file is valid JSON.

The server speaks streamable HTTP and answers each message with a single JSON response — it opens no SSE stream and keeps no session. Every argument and tool is in the MCP docs.

FAQ

Frequently asked questions

Where is Windsurf's MCP config file?
~/.codeium/windsurf/mcp_config.json on macOS and Linux, %USERPROFILE%\.codeium\windsurf\mcp_config.json on Windows. Open it from Cascade's MCPs panel.
Is it url or serverUrl in Windsurf?
serverUrl. Windsurf uses that key for a remote server's address, with headers beside it.
How many tools does URLpipe add?
Fourteen: the nine endpoints plus get_result, get_request, list_requests, list_projects and get_usage. Cascade's limit is 100 across all servers.
Can Cascade run Lighthouse on a staging site?
If the staging URL is public, yes. URLpipe fetches from the internet, so private or localhost addresses are refused.

Connect it in five minutes.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.