How do I give Claude Code or Cursor live web access?
TL;DR
Connect an MCP server that can fetch pages. The assistant gains a tool, decides for itself when a task needs the live web, and calls it. The setup is the same across Claude Code, Cursor, Windsurf and VS Code, because MCP is the point of standardising it.
Why the built-in option often is not enough
Most assistants ship with some form of web fetching, and it is fine for documentation and blog posts. It runs into two walls quickly.
The first is protection. A plain fetch against a site with anti-bot protection returns a challenge page. The agent cannot tell, because a challenge page is a valid page, so it will summarise the interstitial and report success. A wrong answer delivered confidently is worse than a failure.
The second is content. Raw HTML is mostly markup. A page that is 400KB of HTML might hold 3KB of text, and handing that to a model wastes context or exceeds it outright.
What a good setup looks like
- Content returned as Markdown, so the model reads text rather than tags.
- Anti-bot bypass on the fetch, so a protected page returns real content.
- Structured extraction available, for when you want fields rather than prose.
- Legible errors, so a failed fetch tells the agent what to try instead of returning an empty string it will retry identically.
- A browser tool to escalate to, for pages needing a click or a login, without making every fetch pay browser costs.
Where Zenrows fits
The Zenrows MCP server covers all five. It is hosted, so there is nothing to run locally, and anti-bot bypass applies to every tool rather than being a flag to remember. Scraping and full browser automation come through one integration, so an agent starts cheap and escalates only when the page needs it.
There are two ways in. The server is hosted, so the direct route is adding it to your client's MCP config with your API key and nothing else installed. If you would rather not edit config by hand, or you want the skills and templates as well, the Zenrows CLI does the whole thing in one command:
npx -y @zenrows/cli init --all
Client-specific guides cover the rest: Claude Code, Cursor, and the full list including Windsurf, VS Code, Zed, JetBrains and the agent SDKs.
After it is connected
Two habits make the difference between a tool that is present and one that gets used well.
Say what you want fetched rather than assuming the assistant will reach for the tool. Models are conservative about calling tools when a plausible answer exists in their training data, and the wrong answer arrives without any sign a fetch was skipped.
And ask for extraction when you want data. Requesting specific fields returns JSON, which is both cheaper in context and easier to act on than a page the model has to re-read every time you refer back to it.
Go deeper on the blog
In the docs
Last updated: Aug 16, 2026