Best MCP Servers for Windsurf in 2026
Firecrawl, Bright Data, and Crawlora compared as Windsurf MCP servers — config, tool counts, and which fits which job (plus where Zyte doesn't reach yet).
Windsurf's own docs and third-party trackers both flag it as a strong pick for parallel multi-agent sessions, and its MCP support has been stable for a while — but nobody's published a Windsurf-specific buyer's guide for web-data MCP servers. This one compares what actually connects, with real config, not marketing copy.
Windsurf's MCP config — and a real filename discrepancy
Windsurf reads MCP server definitions from a JSON file under ~/.codeium/windsurf/, root key mcpServers (the same shape as Claude Desktop). The filename itself is documented inconsistently across vendors: Firecrawl's own MCP repo instructs ./codeium/windsurf/model_config.json, while Crawlora's own repo and most third-party guides say mcp_config.json. This isn't a typo either side made up — it likely reflects Windsurf renaming the file at some point and docs going stale at different rates. Check what your installed Windsurf version actually reads (open its MCP settings panel, which shows the resolved config path) rather than trusting any single vendor's doc blindly.
What to evaluate, in Windsurf specifically
- Does the vendor document Windsurf by name, or are you pasting a Claude Desktop block and hoping the key names match? Windsurf's remote-server shape differs from other clients, and the config filename itself is documented inconsistently (see above).
- Header placement: Windsurf expects a bearer token under a headers object on remote servers. A config that puts Authorization at the top level, or uses another client's serverUrl convention, fails silently in the MCP panel.
- Generic crawl (any URL → markdown) versus structured platform data (named sites → JSON). Cascade sessions tend to do both: read a docs page, then look up a number on a known site.
- Tool count against Cascade's tool picker: 60 tools that mostly need a browser, or 1,398 that map one-to-one onto REST endpoints? Bright Data's groups= filter and Crawlora's per-endpoint tools both let you narrow what Cascade sees.
- Billing on failure: Cascade retries a failed tool call. Whether each failed attempt is billed changes the cost of a long session.
The contenders
| Tool | Format | Coverage | Config | Best for |
|---|---|---|---|---|
| Firecrawl MCP | MCP server | Scrape/crawl/search/extract any URL | mcpServers key, npx -y firecrawl-mcp, server name mcp-server-firecrawl per their own docs | Generic crawl-to-markdown for arbitrary sites |
| Bright Data | MCP server (60+ tools) | 40+ named platforms + proxy/anti-bot infra | Same mcpServers shape, npx @brightdata/mcp or hosted mcp.brightdata.com/mcp?token=... | Anti-bot-hardened extraction at scale |
| Zyte | — | — | No official Windsurf integration (its plugins target Claude Code and GitHub Copilot specifically) | Not currently an option here |
| Crawlora | MCP server | 1,398 tools across 155 platform groups | mcpServers key, https://mcp.crawlora.net/mcp, note the Authorization header goes under headers, not a top-level field | Structured JSON from named platforms, pay-on-success |
Firecrawl MCP: the vendor that documents Windsurf's filename its own way
Firecrawl's repo documents Windsurf directly, which is worth something in a client where most vendors do not. Its block names the server mcp-server-firecrawl, runs npx -y firecrawl-mcp with FIRECRAWL_API_KEY in env, and points at ./codeium/windsurf/model_config.json (the filename discrepancy covered above). It has no fixed platform catalog: any public page comes back as markdown, structured JSON or a full-site crawl. Choose it when Cascade's web calls are "read this page or repo into context", which is most of them in a coding session.
Bright Data: same shape as VS Code, with a hosted option
Bright Data uses the same JSON in Windsurf as in VS Code: a local npx @brightdata/mcp command with API_TOKEN in env, or the hosted mcp.brightdata.com/mcp?token=... URL if you would rather not run a process. Its 60+-tool server covers named e-commerce, social, business and finance platforms plus its proxy and browser infrastructure, and the groups= filter keeps Cascade from being handed every tool at once. Choose it when anti-bot reliability on hard, named targets is the constraint.
Zyte: not currently available for Windsurf
Worth stating plainly rather than skipping: Zyte's two Claude-adjacent products (the Claude Code plugin in zyte-ai/claude-skills and the GitHub-Copilot-specific VS Code extension) are each locked to one client, and neither connects to Windsurf. A generic Zyte-branded MCP server circulates in a few third-party directories, but Zyte's own docs frame community MCP builds against its API as unofficial. If your stack is Windsurf-first, Zyte is not in the running here.
Crawlora: the header goes under headers, and nothing runs locally
Crawlora's MCP server documents Windsurf directly: ~/.codeium/windsurf/mcp_config.json, mcpServers key, https://mcp.crawlora.net/mcp, with the API key as Authorization: Bearer <key> under a headers object. That last detail is the one people get wrong when adapting a block from a client that uses a serverUrl field or a top-level header, so copy the exact block rather than guessing:
{
"mcpServers": {
"crawlora": {
"serverUrl": "https://mcp.crawlora.net/mcp",
"headers": { "Authorization": "Bearer YOUR_CRAWLORA_API_KEY" }
}
}
}
No npx process to install or keep alive. The 1,398 tools map one-to-one onto documented REST endpoints across search, maps, e-commerce, social, finance, travel, jobs, media, app stores and reviews, return normalized JSON, and are billed only on success, with 2,000 free credits a month and no card. Choose it when Cascade needs a record from a named platform (a price, a ranking, a listing, a filing) rather than a page to read.
How to choose, by job
- "Read this page / these docs into context" → Firecrawl MCP, and accept the filename ambiguity.
- "Get me the data off this hard, named site, at volume" → Bright Data, local or hosted, with
groups=narrowing the tools. - "Give me the price / ranking / listing / filing from a known platform, as JSON, with nothing installed" → Crawlora MCP, header under
headers. - "I want Zyte's Scrapy-generation workflow" → Claude Code or GitHub Copilot for now, not Windsurf.
- Server shows as disconnected in the MCP panel → check the filename you edited and where the header sits before anything else; those two account for most Windsurf MCP failures.
Add structured web data to Windsurf
1,398 tools across 155 platform groups, one API key, billed only on success. 2,000 free credits a month, no card.
Sources
Related reading
- Best MCP Servers for Warp in 2026 · Best MCP Servers for JetBrains IDEs in 2026 — the same comparison, two more clients.
- Best MCP Servers for GitHub Copilot in 2026 — the same comparison, Copilot's config shape.
- Best Web Scraping MCP Servers & Skills for Claude Code in 2026.
- Crawlora vs Firecrawl · Crawlora vs Bright Data.
- Give your AI agent live web data with MCP.
Frequently asked questions
What's the best MCP server for web scraping with Windsurf?
Firecrawl MCP fits crawling or reading arbitrary websites. Bright Data is built for anti-bot-hardened extraction across 40+ named platforms. Crawlora fits when you want structured JSON from named platforms without maintaining a parser, billed only on success. Zyte does not currently offer a Windsurf integration — its two products (a Claude Code plugin and a GitHub-Copilot-specific VS Code extension) are each locked to one client.
Where does Windsurf read its MCP server config from?
A JSON file under ~/.codeium/windsurf/, root key mcpServers — the same shape as Claude Desktop. The exact filename is documented inconsistently across vendors (Firecrawl's own repo says model_config.json, most others say mcp_config.json), which likely reflects Windsurf renaming the file at some point. Check your installed Windsurf version's MCP settings panel for the resolved path rather than trusting one vendor's doc.
Does Zyte work with Windsurf?
Not officially. Zyte's Claude Code plugin and its GitHub-Copilot-specific Web Scraping Copilot extension are each locked to one client, and neither connects to Windsurf. Community MCP builds against the Zyte API do circulate in a few directories, but Zyte's own blog explicitly frames those as unofficial demos, not a supported product.
How do I install Crawlora's MCP server for Windsurf?
Add an mcpServers block to your Windsurf config pointing at https://mcp.crawlora.net/mcp, with the API key under a headers.Authorization field (Bearer <key>) — this is a different shape than the serverUrl convention some other remote servers use, so copy the exact block from the docs rather than guessing the key names. Free tier is 2,000 credits/month, no card.
