I added country/city-selectable browser exits to my free web scraping MCP
I’ve been building VPNFail MCP, and one of the more useful pieces is now working well enough that I wanted to share it with other scraping folks.
The basic idea is that a scrape can start as a normal HTTP request, but escalate to Chromium when the target actually needs JS rendering.
The browser request can also be pinned to a specific exit country or city.
So instead of maintaining separate proxy + browser infrastructure, an agent can do things like:
- fetch a page from a specific country
- request a particular city when location matters
- compare geo-dependent content
- inspect regional redirects
- check localized pricing/content
- render JS-heavy pages through Chromium
- optionally return a viewport screenshot
I deliberately kept the default path as plain HTTP because running a browser for every scrape is expensive and unnecessary.
The rough flow is:
HTTP scrape → inspect extraction quality → escalate to Chromium if needed → optionally choose geography
HTTP can return Markdown, text, or HTML. The response also includes quality metadata so the caller can decide whether the cheap extraction was good enough or whether it should retry using the browser.
The MCP exposes:
scrapeusageservice_status
Example config:
{
"mcpServers": {
"vpnfail": {
"type": "http",
"url": "https://mcp.vpn.fail/mcp"
}
}
}
No local install and currently no account required.
I’m particularly curious how people here handle geo-aware scraping today.
Do you normally expose country/city directly to the scraping client, or keep geography hidden behind your proxy infrastructure?
Also interested in cases where city-level routing has actually mattered versus country-level being enough.