
How to add Fetch (Reference) to Windsurf
Official MCP reference server that fetches a URL and returns its content as clean Markdown, with chunking. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.
Last updated June 15, 2026 · 87k★ · stdio · no auth · official
Windsurf config for Fetch (Reference)
uvx mcp-server-fetch{
"mcpServers": {
"fetch-reference": {
"command": "uvx",
"args": [
"mcp-server-fetch"
]
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Setup steps
- 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
- 2Paste the Fetch (Reference) config below.
- 3Fill in placeholder secrets, then save.
- 4Click Refresh in the MCP panel.
- 5Fetch (Reference)'s tools become available to Cascade.
Before you start
- Python 3.10+ with `uv`/`uvx` installed (recommended), or `pip` to install the package
- Optionally Node.js — if present, it is used for better HTML-to-Markdown simplification
- Alternatively Docker, to run the prebuilt `mcp/fetch` image
- No API key or account required (auth: none)
What Fetch (Reference) can do in Windsurf
fetchFetch a URL and return its content as Markdown; supports max_length, start_index (for chunked paging), and raw (return unconverted HTML).
fetch (prompt)A bundled prompt that instructs the model to retrieve and summarize a URL's contents as Markdown.
Security
Because it fetches from the local machine, it can reach internal/private IPs and intranet services, which is an SSRF risk; restrict which URLs you allow it to fetch in sensitive networks. It honors robots.txt by default for model-initiated requests unless explicitly disabled.
Fetch (Reference) + Windsurf FAQ
Where is the Windsurf config file?
Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the Fetch (Reference) config there under the "mcpServers" key and restart the client.
Is Fetch (Reference) safe to use with Windsurf?
Because it fetches from the local machine, it can reach internal/private IPs and intranet services, which is an SSRF risk; restrict which URLs you allow it to fetch in sensitive networks. It honors robots.txt by default for model-initiated requests unless explicitly disabled.
Does it need an API key?
No. The fetch server uses stdio with no authentication, so there is nothing to sign up for.
Why is my response cut off?
Output is truncated to max_length (default 5000 chars). Have the model call fetch again with a higher start_index to page through the rest of the document.
It refuses to fetch a page citing robots.txt — why?
By default the server obeys robots.txt for model-initiated requests. Run it with --ignore-robots-txt to bypass this.