proxy-finder-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@proxy-finder-mcpfind me a working proxy in France to test a geo-blocked site"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
proxy-finder-mcp
An MCP (Model Context Protocol) server that finds and validates working free HTTP/HTTPS/SOCKS
proxies, optionally filtered by country. Built for agents that need to route a request or
curl through a specific country — a geo-blocked municipal site, a region-locked API, or just
debugging why a request fails from one network but not another.
It aggregates three free proxy-list sources (ProxyScrape, Proxifly, Geonode), merges and dedupes them, and actually tests candidates live (not just trusting self-reported uptime) before handing one back — with a local disk cache so repeat calls don't re-scrape or re-test everything from scratch.
Pure TypeScript, zero external process dependencies (no curl/ffmpeg/etc. required) — works
anywhere Node.js does, install-free via npx.
Install
No install step needed — run it directly with npx. Add it to your MCP client's config:
Claude Code
claude mcp add proxy-finder -- npx -y proxy-finder-mcpClaude Desktop / other JSON-config clients
Add to your MCP config file (e.g. claude_desktop_config.json):
{
"mcpServers": {
"proxy-finder": {
"command": "npx",
"args": ["-y", "proxy-finder-mcp"]
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"proxy-finder": {
"command": "npx",
"args": ["-y", "proxy-finder-mcp"]
}
}
}Google Antigravity
Open the Manage MCP Servers panel (Command Palette → "MCP") and add a new server, or edit
its mcp_config.json directly with the same mcpServers block used above:
{
"mcpServers": {
"proxy-finder": {
"command": "npx",
"args": ["-y", "proxy-finder-mcp"]
}
}
}Related MCP server: klawfetch
Tools
Tool | Description |
| Finds a live, validated proxy, optionally filtered by |
| Validates one specific proxy string (e.g. |
| Lists merged/deduped/ranked candidates without live-testing — fast, cache-aware. |
| Lists which countries are currently covered by the proxy pool, with counts, so you know what to ask |
find_proxy parameters
Param | Type | Default | Description |
| string | — | ISO alpha-2 code ( |
|
|
| Restrict to a proxy protocol. |
| string |
| Validate candidates against this URL instead — e.g. the site your |
| number |
| Per-proxy check timeout. |
| number |
| How many ranked candidates to live-test. |
| number |
| How many checks to run in parallel. |
| boolean |
| Bypass the cached proxy list and re-fetch all sources. |
Example
"I need a working proxy in France to check if this site is geo-blocked."
The agent calls find_proxy with { "country": "FR" } and gets back something like:
{
"found": true,
"proxy": {
"proxy": "socks4://31.59.234.26:40001",
"ip": "31.59.234.26",
"port": 40001,
"protocol": "socks4",
"countryCode": "FR",
"city": "Amiens",
"latencyMs": 1918,
"statusCode": 200,
"testUrl": "https://httpbin.org/ip"
},
"alternates": [ ... ],
"testedCount": 25,
"candidatePoolSize": 225
}How it works
Sources — ProxyScrape v4, Proxifly's static list, and Geonode's proxy-list API are fetched concurrently and merged, deduped by
ip:port. The merged list is cached on disk for 10 minutes so repeat tool calls don't hammer any source.Ranking — before live-testing, candidates are sorted cache-first: previously-confirmed fast proxies come first (fastest first), then untested proxies (best self-reported uptime/speed first), then previously-failed proxies last.
Validation — a capped, concurrency-bounded batch of ranked candidates is dialed for real (via
axios+https-proxy-agent/socks-proxy-agent— no shelling out tocurl) against a target URL. Success = the request completes with an HTTP status in[200, 400).Caching — every tested proxy's result (success and failure) is written to
~/.proxy-finder-mcp/health.jsonwith a timestamp, so later calls skip re-testing recently confirmed-fast or confirmed-dead proxies.
Local development
git clone https://github.com/shakthizen/proxy-finder-mcp.git
cd proxy-finder-mcp
npm install
npm run build
npm run typecheck
npm run lint
npm test
node dist/index.js # runs the server over stdioLicense
MIT © shakthizen
Available Tools
4 toolscheck_proxyCheck a specific proxyA
Validates a single specific proxy (e.g. "socks5://1.2.3.4:1080" or "http://1.2.3.4:8080") by making a real request through it to a target URL. Use this to test a proxy you already have, or to re-check whether a specific site works through a given proxy after find_proxy returned it.
| Name | Required | Description | Default |
|---|---|---|---|
| proxy | Yes | Full proxy URL to validate, e.g. "socks5://1.2.3.4:1080" or "http://1.2.3.4:8080". | |
| testUrl | No | URL to validate against. Defaults to a generic IP-echo endpoint. | |
| timeoutMs | No | Check timeout in ms. Default 4000. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses that the check performs a real network request through the proxy (not a mock), which implies latency and network egress, but says nothing about failure semantics, whether it throws or returns a status, or what the result contains. This is meaningful but incomplete disclosure for a validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The core purpose and mechanism come first, with the when-to-use guidance following immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should at least hint at what a successful/failed validation returns (boolean, latency, error detail). It covers inputs and usage well but leaves the result shape and failure behavior unstated, which is a real gap for a check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (proxy, testUrl, timeoutMs) are already documented with defaults and constraints in the schema. The description's example URL format duplicates the schema rather than adding new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (validates) and resource (single specific proxy), and explains the mechanism ('by making a real request through it to a target URL'). Example proxy URLs make the expected input format concrete and clearly distinguish it from find_proxy/list_proxies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names two use cases — testing a proxy you already have, and re-checking a specific site through a proxy that find_proxy returned. The alternative tool is named and the selection condition is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_proxyFind a working proxyA
Finds a live, validated free proxy, optionally filtered by country and/or protocol. Tests a batch of candidates concurrently against a target URL and returns the fastest one that actually works, plus a few backups. Use this when a direct request/curl is geo-blocked or otherwise failing and you need a working proxy to route through.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | ISO 3166-1 alpha-2 country code (e.g. "FR") or full country name (e.g. "France"). Omit for any country. | |
| testUrl | No | URL to validate candidates against. Defaults to a generic IP-echo endpoint; pass the site you actually need to reach (e.g. the one your curl just failed against) for a more relevant check. | |
| protocol | No | Proxy protocol to filter by, or "any" for no filter. | |
| timeoutMs | No | Per-proxy check timeout in ms. Default 4000. | |
| concurrency | No | Max concurrent checks. Default 10. | |
| forceRefresh | No | Bypass the cached proxy list and re-fetch all sources. | |
| maxCandidates | No | Max candidates to live-test. Default 25. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does reasonably well: it discloses concurrent batch testing against a target URL, that it returns the fastest working proxy plus backups, and (via forceRefresh/'cached proxy list') that a cache exists. It omits rate limits, timeout/failure behavior on no match, and whether network egress occurs, keeping it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, followed by mechanics, then usage condition. Every sentence adds distinct value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-param tool with no output schema, the description covers purpose, selection behavior, and return shape ('fastest one that actually works, plus a few backups'). It lacks guidance on no-match outcomes and the cache's behavioral implications, minor gaps that keep it from 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters with defaults and bounds. The description adds no syntax or format detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Finds a live, validated free proxy') with scope ('optionally filtered by country and/or protocol') and contrasts implicitly with siblings like check_proxy or list_proxies by emphasizing validated-and-working selection. An agent can distinguish this as the search-and-validate tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use guidance: 'when a direct request/curl is geo-blocked or otherwise failing and you need a working proxy to route through.' It does not name sibling alternatives (check_proxy vs list_proxies) to route away, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesList available countriesA
Lists the countries currently covered by the merged proxy pool, with a proxy count per country. Use this to discover what country codes are worth passing to find_proxy before asking for one.
| Name | Required | Description | Default |
|---|---|---|---|
| forceRefresh | No | Bypass the cached proxy list and re-fetch all sources. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the data source (merged proxy pool) and that results reflect currently covered countries, but says nothing about caching or freshness — the cache/refresh behavior is only visible in the forceRefresh parameter schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, zero waste, with the core behavior front-loaded before the usage routing. Nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though there is no output schema, the description explains the return shape (countries with per-country proxy counts), which is what an agent needs. The only omission is the freshness/caching dimension that forceRefresh hints at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema already documents forceRefresh fully. The description adds no information about the parameter, which is acceptable given the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists the countries') plus the scope ('currently covered by the merged proxy pool') and the return shape (a proxy count per country). This clearly distinguishes it from find_proxy, check_proxy, and list_proxies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use this to discover country codes worth passing to find_proxy 'before asking for one.' Names the alternative sibling and the ordering condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_proxiesList candidate proxiesA
Lists merged, deduped proxies from all sources, optionally filtered by country/protocol, ranked cache-first (previously confirmed-fast proxies first). Does not perform any live network testing, so it is fast; use find_proxy when you need a proxy that is actually confirmed working right now.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return. Default 50. | |
| country | No | ISO 3166-1 alpha-2 country code or full country name. Omit for any country. | |
| protocol | No | Proxy protocol to filter by, or "any" for no filter. | |
| forceRefresh | No | Bypass the cached proxy list and re-fetch all sources. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden, and it does well: it discloses that no live network testing occurs, that results are merged/deduped across sources, and that ordering is cache-first with previously confirmed-fast proxies prioritized. It does not cover result freshness/staleness beyond forceRefresh or any rate limits, leaving modest gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, and the core behavior plus ordering rule is front-loaded before the routing hint. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full schema coverage and no output schema, the description covers behavior, ordering, and sibling routing adequately. Only minor gaps remain, such as what a returned entry contains or how stale the cache can be.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, country, protocol, forceRefresh) are already documented in the schema. The description only echoes the country/protocol filtering, adding no format or interaction detail beyond what structured data provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists merged, deduped proxies from all sources') plus scope details (country/protocol filtering, cache-first ordering). An agent can distinguish it from find_proxy and check_proxy purely from the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the alternative and the selecting condition: 'use find_proxy when you need a proxy that is actually confirmed working right now.' It also clarifies what this tool does not do (no live testing), which is the key routing signal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.2- First observed
check_proxy - First observed
find_proxy - First observed
list_countries - First observed
list_proxies
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: find_proxy discovers and live-tests proxies, check_proxy validates one specific proxy, list_proxies returns cached listings without live testing, and list_countries enumerates coverage. The descriptions explicitly guide when to use find_proxy versus list_proxies or check_proxy, eliminating overlap.
All names follow a consistent snake_case verb_noun pattern (find/check/list + resource). The only minor deviation is list_proxies using plural while find_proxy and check_proxy use singular, but this is natural and predictable.
Four tools are well-scoped for a proxy-finding service: discovery, validation, listing, and country lookup. Each tool earns its place and none feels redundant or excessive.
The toolset covers the core discover-validate-list lifecycle for proxies and provides country enumeration. Minor gaps like detailed proxy metadata (e.g., response times, source) or a batch validation tool exist, but agents can work around them.
Maintenance
Related MCP Connectors
Free proxy list, live proxy checker and IP lookup for AI agents. No key, nothing to install.
31Free remote MCP server for fetching public web pages through a rotating proxy pool.
Control dedicated 4G mobile and residential proxies on mobileproxy.space from AI agents.
Buy and manage residential, mobile and datacenter proxies in 170+ countries, prepaid per GB
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables AI agents to route HTTP requests through millions of real residential IPs, bypassing anti-bot systems and geo-targeting by country or city.4MIT- AlicenseNot gradedqualityDmaintenanceA geo-distributed HTTP proxy for AI agents, enabling web fetching from multiple global regions (Frankfurt, Sydney, New York, San Francisco) with support for screenshots, scraping, and JS rendering.MIT
- AlicenseNot gradedqualityCmaintenanceEnables agents to autonomously route traffic through real 4G/5G mobile and residential IPs by country, with tools to check live proxy stock, obtain ready-to-use proxy URLs, and monitor remaining data usage.44 npmMIT
- AlicenseNot gradedqualityCmaintenanceRoutes AI agent HTTP requests through residential proxies to bypass anti-bot systems, geo-target by country/city, and maintain sticky sessions across multi-step workflows.18 npm1MIT