MCProxy

evgenygurin/MCProxy
0 starsMITCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

An MCP server that gives AI agents on-demand access to proxies from the world's leading and Russian/CIS proxy providers — through a single, unified interface.

README.md

MCProxy

An MCP server that gives AI agents on-demand access to proxies from the world's leading and Russian/CIS proxy providers — through a single, unified interface.

Built with FastMCP 3. When an agent needs a proxy, it calls one MCProxy tool; MCProxy talks to whichever provider you've configured and returns ready-to-use proxy strings.

---

Why

Every proxy provider has its own API, auth scheme, and quirks. MCProxy normalizes them behind one provider-agnostic tool surface so an agent (or you) can:

  • discover which providers are configured and what they support,
  • generate or list proxies with geo-targeting and rotation,
  • buy and extend proxies where the provider's API allows it,
  • check balance / usage and list targetable countries,
  • run requests through managed scraping APIs,

…without learning each vendor's API.

How it works

AI agent ──MCP──> MCProxy (FastMCP server)
                      │
                      ├─ unified tools: list_providers, get_proxies,
                      │   generate_proxy_list, buy_proxies, check_balance, …
                      │
                      └─ provider registry ─> per-provider adapters ─HTTP─> vendor APIs

Each provider is a small adapter that maps the vendor's API onto shared models (ProxyEndpoint, BalanceInfo, CountryListResult, …). A registry exposes them, and a handful of generic tools dispatch to the right adapter based on a provider argument. This keeps the tool count low (great for token usage) while supporting many providers.

Supported providers

Implemented adapters

| Provider | Region | Types | Operations | |---|---|---|---| | Webshare | 🌍 US | datacenter, ISP, residential | list, balance, usage, countries | | IPRoyal | 🌍 LT | residential | generate, balance, usage, countries | | ProxyMesh | 🌍 US | datacenter, ISP | list, countries, usage | | ScraperAPI | 🌍 US | scraping API | scrape, usage | | ScrapingBee | 🌍 FR | scraping API | scrape, usage | | Proxy6 | 🇷🇺 RU | datacenter (IPv4/IPv6) | list, balance, countries, buy, extend | | ProxyLine | 🇷🇺 RU | datacenter (IPv4/IPv6) | list, balance, countries, buy, extend | | Proxy-Store | 🇷🇺 RU | datacenter, residential, mobile | list, balance, countries, buy, extend | | Proxy-Seller | 🇷🇺 RU | IPv4/IPv6/ISP/mobile/residential | list, balance, countries | | ASOCKS | 🇷🇺 RU/CIS | residential, mobile | balance | | FineProxy | 🇷🇺 RU | datacenter, ISP, residential | balance |

Documented & planned

list_providers also surfaces a catalog of major providers with public APIs whose adapters are planned: Bright Data, Oxylabs, Decodo (Smartproxy), SOAX, NetNut, Infatica, Proxy-Cheap, Zyte, Nimble, Rayobyte (global) and Mobile Proxy Space, iProxy.online, ProxyMarket, Froxy (RU/CIS). See docs/PROVIDERS.md for the full landscape, API notes and sources.

Install

Requires Python 3.12+. uv recommended.

git clone https://github.com/evgenygurin/mcproxy.git
cd mcproxy
uv venv --python 3.12
uv pip install -e .            # add ".[dev]" for tests/linting

Configure

Credentials are read from environment variables (or a local .env). Configure only the providers you use. Copy .env.example and fill in your keys:

cp .env.example .env
# e.g.
WEBSHARE_API_KEY=...
IPROYAL_API_TOKEN=...
PROXY6_API_KEY=...

list_providers shows which providers are configured and the exact env var names each one needs.

Run

# stdio (default — for Claude Desktop, Cursor, etc.)
uv run mcproxy
# or
uv run fastmcp run server.py:mcp

# HTTP transport
MCPROXY_TRANSPORT=http MCPROXY_PORT=8000 uv run mcproxy

Use with an MCP client

{
  "mcpServers": {
    "mcproxy": {
      "command": "uv",
      "args": ["run", "mcproxy"],
      "env": {
        "WEBSHARE_API_KEY": "your-key",
        "PROXY6_API_KEY": "your-key"
      }
    }
  }
}

Tools

| Tool | Purpose | |---|---| | list_providers | Discover providers, capabilities and config status. Start here. | | get_provider_info | Capabilities for one provider. | | get_proxies | List proxies already on your account (fixed-IP providers). | | generate_proxy_list | Generate proxy strings with geo + rotation (residential pools). | | buy_proxies | Purchase new proxies (spends money; supported providers only). | | extend_proxies | Renew existing proxies by ID. | | check_balance / get_usage | Monitor spend and traffic. | | list_countries | Targetable locations for a provider. | | scrape | Fetch a URL through a managed scraping API. | | acquire_proxy | "Just give me a proxy" — picks a configured provider automatically. |

Every returned proxy includes a ready-to-use url (e.g. http://user:pass@host:port).

Settings

Global options use the MCPROXY_ prefix:

| Variable | Default | Description | |---|---|---| | MCPROXY_TRANSPORT | stdio | stdio, http, or sse. | | MCPROXY_HOST / MCPROXY_PORT | 127.0.0.1 / 8000 | HTTP bind address. | | MCPROXY_REQUEST_TIMEOUT | 30 | Outbound HTTP timeout (seconds). | | MCPROXY_DEFAULT_PROVIDER | – | Preferred provider for acquire_proxy. |

Development

uv pip install -e ".[dev]"
uv run pytest          # tests (in-memory MCP client + mocked HTTP)
uv run ruff check .    # lint
uv run mypy src        # types

Adding a provider: create src/mcproxy/providers/<name>.py subclassing BaseProvider, override the operations it supports, and register it in src/mcproxy/providers/__init__.py. See webshare.py for a clean reference.

Disclaimer

Use proxies lawfully and in accordance with each provider's terms of service and applicable law. This project is an integration layer; it does not endorse misuse.

License

MIT

Related MCP servers

Browse all →