Proxy Veil

Created By
Goldentrii2 months ago
Overview

ProxyVeil

Residential proxy MCP server for AI agents. Route any HTTP request through 2M+ real home devices — Android phones, Windows PCs, Macs — to bypass anti-bot systems, geo-target by country or city, and maintain sticky sessions across multi-step workflows.

npm version npm downloads License: MIT Node.js Smithery

Works with Claude Code, Cursor, Windsurf, Cline, Continue, and any MCP-compatible AI agent. Powered by Novada.


Why ProxyVeil

AI agents get blocked on 60–70% of commercial websites. Standard HTTP requests are detected and rejected by Cloudflare, Akamai, DataDome, PerimeterX, and similar systems. ProxyVeil routes your agent through real residential IPs — so it looks indistinguishable from a human browser.

ProblemProxyVeil
Amazon, LinkedIn block your agentResidential IPs from real home devices
Cloudflare / Akamai bot challengesBypassed via real device fingerprints
JS-rendered pages return blankBrowser API runs real Chromium
Geo-restricted or localized content195+ countries, city-level targeting
Multi-step workflows lose sessionSticky sessions — same IP across calls
Need structured search resultsBuilt-in Google search, clean JSON output

Providers

ProxyVeil works with any HTTP proxy. Novada is the built-in default with the deepest integration. BrightData, Smartproxy, and Oxylabs have dedicated adapters with full auto-targeting. Any other provider works via the generic adapter.

Priority: Novada → BrightData → Smartproxy → Oxylabs → Generic. First configured provider wins.

Full integration: automatic geo-targeting, city-level targeting, sticky sessions, 195+ countries.

claude mcp add proxy-veil \
  -e NOVADA_PROXY_USER=your_username \
  -e NOVADA_PROXY_PASS=your_password \
  -- npx -y proxy-veil

Get credentials: novada.com → Dashboard → Residential Proxies → Endpoint Generator

BrightData

Full integration: automatic country/city/session targeting via BrightData's username-suffix format.

claude mcp add proxy-veil \
  -e BRIGHTDATA_USER="brd-customer-abc123-zone-residential" \
  -e BRIGHTDATA_PASS=your_password \
  -- npx -y proxy-veil

Get credentials: brightdata.com → Proxies & Scraping → Residential → Access Parameters

BRIGHTDATA_USER is your full username including zone (e.g. brd-customer-abc123-zone-residential). Optional: BRIGHTDATA_HOST (default: zproxy.lum-superproxy.io), BRIGHTDATA_PORT (default: 22225).

Smartproxy

Full integration: automatic country/city/session targeting.

claude mcp add proxy-veil \
  -e SMARTPROXY_USER=your_username \
  -e SMARTPROXY_PASS=your_password \
  -- npx -y proxy-veil

Get credentials: smartproxy.com → Dashboard → Residential → Endpoint Generator

Optional: SMARTPROXY_HOST (default: gate.smartproxy.com), SMARTPROXY_PORT (default: 10001).

Oxylabs

Full integration: automatic country/city/session targeting.

claude mcp add proxy-veil \
  -e OXYLABS_USER=your_username \
  -e OXYLABS_PASS=your_password \
  -- npx -y proxy-veil

Get credentials: oxylabs.io → Dashboard → Residential Proxies → Access Details

Optional: OXYLABS_HOST (default: pr.oxylabs.io), OXYLABS_PORT (default: 7777).

Generic HTTP Proxy — any other provider

Set PROXY_URL to use IPRoyal, your own infrastructure, or any standard HTTP proxy.

# IPRoyal
claude mcp add proxy-veil \
  -e PROXY_URL="http://username:password@geo.iproyal.com:12321" \
  -- npx -y proxy-veil

# Any HTTP proxy
claude mcp add proxy-veil \
  -e PROXY_URL="http://user:pass@your-proxy-host:port" \
  -- npx -y proxy-veil

Note: With the generic adapter, encode country/city/session targeting directly in your proxy URL per your provider's format. country, city, and session_id tool parameters are logged as warnings and not forwarded.

FeatureNovadaBrightDataSmartproxyOxylabsGeneric HTTP
Auto country targetingmanual
Auto city targetingmanual
Sticky sessionsmanual
Built-in search API
Browser API (JS render)

Get Your Credentials

Sign up at novada.com — 30 seconds, no credit card.

ToolRequired env varsWhere to get them
agentproxy_fetchNOVADA_PROXY_USER + NOVADA_PROXY_PASSDashboard → Residential Proxies → Endpoint Generator
agentproxy_sessionNOVADA_PROXY_USER + NOVADA_PROXY_PASSDashboard → Residential Proxies → Endpoint Generator
agentproxy_searchNOVADA_API_KEYDashboard → API Keys
agentproxy_render [BETA]NOVADA_BROWSER_WSDashboard → Browser API → Playground → copy Puppeteer URL
agentproxy_status(none)

You only need credentials for the tools you use.


Install

Fetch + Session (core — recommended start):

claude mcp add proxy-veil \
  -e NOVADA_PROXY_USER=your_username \
  -e NOVADA_PROXY_PASS=your_password \
  -e NOVADA_PROXY_HOST=your_account_host \
  -- npx -y proxy-veil

Search only:

claude mcp add proxy-veil \
  -e NOVADA_API_KEY=your_key \
  -- npx -y proxy-veil

All tools:

claude mcp add proxy-veil \
  -e NOVADA_PROXY_USER=your_username \
  -e NOVADA_PROXY_PASS=your_password \
  -e NOVADA_PROXY_HOST=your_account_host \
  -e NOVADA_API_KEY=your_key \
  -- npx -y proxy-veil

NOVADA_PROXY_HOST — your account-specific proxy host from the Endpoint Generator (e.g. abc123.vtv.na.novada.pro). Required for reliable sticky sessions. Defaults to the shared load balancer if omitted.


Compatible With

ProxyVeil works with any MCP-compatible AI client:

ClientInstall method
Claude Codeclaude mcp add proxy-veil -e ... -- npx -y proxy-veil
CursorSettings → MCP → Add server → npx -y proxy-veil
WindsurfMCP config → npx -y proxy-veil
ClineMCP settings → command: npx, args: ["-y", "proxy-veil"]
Continue.continue/config.json → mcpServers
Smitherysmithery.ai/server/proxy-veil
Any MCP clientstdio transport, npx -y proxy-veil

Claude Code example (copy-paste ready):

claude mcp add proxy-veil \
  -e NOVADA_PROXY_USER=your_username \
  -e NOVADA_PROXY_PASS=your_password \
  -- npx -y proxy-veil

Cursor / Windsurf / Cline — add to your MCP config:

{
  "mcpServers": {
    "proxy-veil": {
      "command": "npx",
      "args": ["-y", "proxy-veil"],
      "env": {
        "NOVADA_PROXY_USER": "your_username",
        "NOVADA_PROXY_PASS": "your_password"
      }
    }
  }
}

Tools

agentproxy_fetch

Fetch any URL through a residential proxy. Works on Amazon, LinkedIn, Cloudflare-protected pages, and most anti-bot-protected sites.

Requires: Any proxy provider — Novada (NOVADA_PROXY_USER + NOVADA_PROXY_PASS), BrightData, Smartproxy, Oxylabs, or PROXY_URL

ParameterTypeDefaultDescription
urlstringrequiredTarget URL (http:// or https://)
countrystring2-letter ISO code: US, DE, JP, GB, BR, IN, FR, CA, AU... (195+ countries)
citystringCity-level targeting: newyork, london, tokyo, paris, berlin...
session_idstringReuse same ID to keep the same IP (letters/numbers/underscores only, max 64 chars)
formatstringmarkdownmarkdown strips HTML tags · raw returns full HTML
timeoutnumber60Timeout in seconds (1–120)

agentproxy_session

Sticky session fetch — every call with the same session_id uses the same residential IP. Essential for login flows, paginated scraping, and price monitoring across pages.

Requires: Any proxy provider — Novada (NOVADA_PROXY_USER + NOVADA_PROXY_PASS), BrightData, Smartproxy, Oxylabs, or PROXY_URL

ParameterTypeDefaultDescription
session_idstringrequiredUnique ID — reuse to keep same IP (no hyphens, max 64 chars)
urlstringrequiredTarget URL
countrystring2-letter country code
citystringCity-level targeting: newyork, london, tokyo...
formatstringmarkdownmarkdown or raw
timeoutnumber60Timeout in seconds (1–120)

Structured Google search via Novada. Returns titles, URLs, and descriptions — no HTML parsing needed. Best for discovery and research tasks.

Requires: NOVADA_API_KEY

ParameterTypeDefaultDescription
querystringrequiredSearch query
numnumber10Result count (1–20)
countrystringLocalize results: us, uk, de, jp, fr...
languagestringLanguage: en, zh, de, ja, fr...

agentproxy_render [BETA]

Render JavaScript-heavy pages using Novada's Browser API (real Chromium, full JS execution). Use for SPAs, React/Vue apps, and pages that return blank without a real browser.

Requires: NOVADA_BROWSER_WS (copy the Puppeteer URL from Dashboard → Browser API → Playground)

ParameterTypeDefaultDescription
urlstringrequiredTarget URL
formatstringmarkdownmarkdown · html · text
wait_forstringCSS selector to wait for before extracting (e.g. .product-title)
timeoutnumber60Timeout in seconds (5–120)

agentproxy_status

Check Novada's proxy network health — live node count, device types, service status. No credentials required.


Real-World Results

Live outputs from actual API calls — not fabricated.

Geo-targeting: same URL, different exit countries

agentproxy_fetch(url="https://httpbin.org/ip", country="US", format="raw")
→ { "origin": "200.50.235.236" }   ← US residential IP

agentproxy_fetch(url="https://httpbin.org/ip", country="JP", format="raw")
→ { "origin": "60.85.57.175" }     ← Japan residential IP

Sticky session: same IP confirmed across two requests

agentproxy_session(session_id="job001", url="https://httpbin.org/ip", format="raw")
→ { "origin": "103.135.135.168" }

agentproxy_session(session_id="job001", url="https://httpbin.org/ip", format="raw")
→ { "origin": "103.135.135.168" }  ← same IP, confirmed ✓

Amazon — 1.6 MB product page, not blocked

agentproxy_fetch(url="https://www.amazon.com/dp/B0BSHF7WHW", country="US")
→ [URL: https://www.amazon.com/dp/B0BSHF7WHW | Status: 200 | Size: 1637 KB | Country: US]

  Apple 2023 MacBook Pro — M2 Pro chip, 16-inch, 16GB, 1TB
  Full product page: price, reviews, specs, related items

HackerNews — 30 stories as clean markdown

agentproxy_fetch(url="https://news.ycombinator.com")
→ [URL: https://news.ycombinator.com | Status: 200 | Size: 34 KB]

  1. LittleSnitch for Linux — 752 points, 243 comments
  2. I ported Mac OS X to the Nintendo Wii — 1590 points, 281 comments
  3. Git commands I run before reading any code — 2054 points, 445 comments
  ...

Google search — structured output, no HTML parsing

agentproxy_search(query="residential proxy for AI agents", num=3)
→ Search: "residential proxy for AI agents" via GOOGLE — 3 results

  1. Residential Proxies Trusted by Fortune 500 Companies
     https://brightdata.com/proxy-types/residential-proxies
     Access 400M+ residential proxies from 195 countries...

  2. Proxies for AI Web Agents: The Complete Guide
     https://netnut.io/proxies-for-ai-web-agents/
     Real-user IPs that bypass even the toughest anti-bot systems...

Browser render — React SPA, full JS execution

agentproxy_render(url="https://react.dev", format="markdown")
→ [URL: https://react.dev | Title: React | Size: 266 KB | Rendered: yes (Browser API)]

  React v19.2

  The library for web and native user interfaces

  ## Create user interfaces from components
  React lets you build user interfaces out of individual pieces called components.
  Create your own React components like Thumbnail, LikeButton, and Video.
  Then combine them into entire screens, pages, and apps.
  ...

Browser render — wait_for selector on HackerNews

agentproxy_render(url="https://news.ycombinator.com", wait_for=".athing")
→ [URL: https://news.ycombinator.com | Title: Hacker News | Size: 34 KB | Rendered: yes (Browser API)]

  1. LittleSnitch for Linux — 834 points, 285 comments
  2. Help Keep Thunderbird Alive — 138 points, 77 comments
  3. I ported Mac OS X to the Nintendo Wii — 1638 points
  ...

Example Workflows

Price monitor — same product, three markets

agentproxy_fetch(url="https://amazon.com/dp/B0BSHF7WHW", country="US")
agentproxy_fetch(url="https://amazon.com/dp/B0BSHF7WHW", country="DE")
agentproxy_fetch(url="https://amazon.com/dp/B0BSHF7WHW", country="JP")

Login + multi-page scrape with same IP

agentproxy_session(session_id="workflow01", url="https://example.com/login")
agentproxy_session(session_id="workflow01", url="https://example.com/dashboard")
agentproxy_session(session_id="workflow01", url="https://example.com/data/page/1")
agentproxy_session(session_id="workflow01", url="https://example.com/data/page/2")

Research pipeline

# 1. Find relevant pages
agentproxy_search(query="Claude MCP proxy tools", num=10)

# 2. Fetch each result through residential proxy
agentproxy_fetch(url="https://found-result.com/article", country="US")

# 3. Render JS-heavy dashboard (requires Browser API)
agentproxy_render(url="https://app.example.com/dashboard", wait_for=".data-table")

Geo Coverage

195+ countries including:

US GB DE FR JP CA AU BR IN KR SG NL IT ES MX RU PL SE NO DK FI CH AT BE PT CZ HU RO UA TR IL ZA NG EG AR CL CO PE VN TH ID MY PH PK BD TW HK NZ + 188 more

City-level targeting (selected): newyork · losangeles · chicago · london · paris · berlin · tokyo · seoul · sydney · toronto · singapore · dubai · mumbai · saopaulo


Network

MetricValue
Residential IPs2,000,000+
Live nodes7,000+
Countries195+
Device typesAndroid, Windows, Mac
Uptime99.9%

Confirmed Working

E-commerce: Amazon, eBay, Walmart, Etsy, Shopify stores
Professional networks: LinkedIn
Anti-bot protected: Cloudflare sites, Akamai-protected pages, DataDome-protected sites
News & content: HackerNews, Reddit, BBC, CNN, NYTimes
Tech: GitHub, Wikipedia, Stack Overflow
Entertainment: IMDB, Rotten Tomatoes


Dependencies

PackageVersionPurpose
@modelcontextprotocol/sdk^1.26MCP protocol — stdio transport, tool definitions, request handling
axios^1.7HTTP client — handles redirects, compression, streaming
https-proxy-agent^9.0HTTPS proxy routing — CONNECT tunnel + TLS for secure targets
http-proxy-agent^7.0HTTP proxy routing — plain HTTP targets through proxy
puppeteer-core^22.15Browser API — WebSocket connection to Novada's real Chromium cloud

Lightweight core. Package size: ~52 KB (excluding node_modules). puppeteer-core is the largest dependency but bundles no browser — it connects to Novada's remote Chromium.


Known Limitations

  • Sites requiring full JS execution → use agentproxy_render
  • agentproxy_render requires a separate Novada Browser API subscription and NOVADA_BROWSER_WS
  • Session IDs must not contain hyphens (Novada uses - as its auth delimiter)
  • For reliable sticky sessions, set NOVADA_PROXY_HOST to your account-specific host

License

MIT © Novada

Permission is hereby granted, free of charge, to any person obtaining a copy of this software to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies, subject to the following conditions: the above copyright notice and this permission notice shall be included in all copies or substantial portions of the software.

The software is provided "as is", without warranty of any kind.

See LICENSE for full text.

Project Info
Created At
2 months ago
Updated At
2 months ago
Author Name
Goldentrii
Star
-
Language
-
License
-
Category
Tags

Recommend Servers

View All
Tavily Mcp
@tavily-ai

JavaScript
a year ago