Back to Directory/Developer Tools

io.github.bolivian-peru/proxies-sx-mcp-server

Residential and mobile proxies for AI agents: rotating/sticky proxy URLs, live stock, IP rotation.

Developer ToolsTypeScriptv3.0.1

@proxies-sx/mcp-server

npm version License: MIT Proxies.sx MCP server on Glama

MCP (Model Context Protocol) server for Proxies.sx: residential and mobile proxies for AI agents, metered per GB. Claude, Cursor and any MCP client can get rotating or sticky HTTP/SOCKS5 proxy URLs, check live stock per country, rotate IPs and manage usage by themselves, for web scraping, data collection and browser automation.

The main product is the Pool Gateway: one endpoint, gw.proxies.sx (HTTP 7000, SOCKS5 7001), where the proxy username says which pool, country and session you want. With this server an agent reads live stock, gets its credentials, builds the proxy URL, watches usage and opens a support ticket when something is wrong. It can also manage dedicated ports on carrier modems, Private Pools and Reserved IPs.

Every tool carries MCP annotations (readOnlyHint, destructiveHint), so a client can ask before a delete, rotate or cancel.

Quick start

  1. Create an API key at client.proxies.sx/account and add traffic (GB) at client.proxies.sx/purchase.
  2. Add the server to your client. Claude Code:
claude mcp add proxies-sx -e PROXIES_API_KEY=psx_your_api_key_here -- npx -y @proxies-sx/mcp-server
  1. Ask for a proxy:

Check Pool Gateway stock for Germany, then give me a sticky residential proxy URL there.

The agent calls pool_get_stock, pool_get_my_credentials and pool_build_proxy_url and answers with a URL such as http://psx_abc123-peer-de-iptype-residential-sid-job1-rot-sticky:PASSWORD@gw.proxies.sx:7000.

API key scopes

A customer key can hold: ports:read, ports:write, ports:rotate, billing:read, account:read, account:write, traffic:read, tickets:read, tickets:write. Select all of them for the full customer tool set.

  • billing:write is not available to customer keys. The tools that need it (purchase_shared_traffic, create_crypto_payment, cancel_crypto_payment) work with reseller and admin keys only; a customer buys traffic in the dashboard.
  • The pak_ key tools (pool_mint_key and the other pool_*_key tools) need a reseller account, whose keys hold customers:read and customers:write.
  • The ops_* tools answer only to admin keys with ops:* scopes.

Pool Gateway rules

The username grammar is psx_<account>-<pool>-<country>[-token-value ...]. pool_build_proxy_url writes it for you; these are the rules behind it.

  • Two pools. peer is the main network: residential and mobile devices in most countries. mbl is carrier modems in exactly six countries: US, GB, FR, NL, PL and GE. GE is Georgia, not Germany, so mbl-de never works: use peer-de. any and best let the gateway choose. pool_get_stock shows what is online now.
  • IP class. -iptype-mobile, -iptype-residential or -iptype-isp. The ISP (static) class is addresses on ISP-registered networks hosted on servers; it is served only when you name it.
  • Rotation. sticky and hard both hold one device. auto5, auto10, auto20 and auto60 move to another device on that interval (auto10 is the default). ondemand picks again on each new connection.
  • Sessions need -sid-. sticky, hard and auto* only persist across connections when the username carries -sid-<id> (lowercase letters, digits and _). -session- is not a token: the gateway ignores it without an error.
  • Sticky holds the device, not the IP. A mobile carrier can change the exit IP of a held modem. For an address that stays, use a residential peer or a Reserved IP.
  • Limits per account: 500 concurrent connections and 250 sessions.
  • Price: per GB of traffic, lower per GB on larger purchases; time is free. get_pricing reads the live price list. Both pools cost the same.
  • Proxy password. The gateway password is the account's proxy password (pool_get_my_credentials), or a pak_ key. It is not the account login password.

Gateway errors

The gateway answers a failed request with CODE: message (req: id). pool_explain_error turns any of them into what to do next.

CodeStatusMeaning
E_AUTH_REQUIRED407no proxy credentials sent
E_AUTH_INVALID407username or proxy password rejected
E_BALANCE_EXHAUSTED407credentials are right, the account has no traffic left
E_CAP_EXCEEDED407a pak_ key reached its GB cap
E_RATE_LIMITED_AUTH429too many failed logins
E_RATE_LIMITED_CONN429over the connection limit
E_SESSION_LIMIT429over the session limit
E_NO_STOCK_COUNTRY502nothing online for that pool, country and filters
E_STOCK_DEGRADED502the device went away during the request
E_SSRF_BLOCKED403target is a private or metadata address
E_WRONG_PORT400HTTP sent to the SOCKS5 port, or the reverse
E_INTERNAL503unexpected gateway error

A tool that fails returns an MCP error result (isError: true) whose text ends with a What to do: line for the common cases: a missing or revoked API key, a missing scope, a rate limit, a server error. Keys and passwords are masked in error text.

Modes and configuration

ModeSetTools
API key (standard)PROXIES_API_KEYevery tool below except the x402 wallet group
x402 wallet (optional)AGENT_WALLET_KEYthe x402 wallet group plus the tools marked "also listed in wallet mode"
Bothboth variableseverything
VariableDescription
PROXIES_API_KEYpsx_ API key from client.proxies.sx/account
PROXIES_EMAIL, PROXIES_PASSWORDAlternative to the API key: log in with the account credentials
AGENT_WALLET_KEYPrivate key (0x...) of a USDC wallet on the Base network, for x402 payments without an account
BASE_RPC_URLCustom Base RPC endpoint, for x402 (default https://mainnet.base.org)
PROXIES_API_URLAPI base URL. Default https://api.proxies.sx; a trailing /v1 is accepted and ignored. Leave it unset unless you run a private API.

Usage with MCP clients

Every client runs the same command, npx -y @proxies-sx/mcp-server, with PROXIES_API_KEY in the environment.

Claude Code

claude mcp add proxies-sx -e PROXIES_API_KEY=psx_your_api_key_here -- npx -y @proxies-sx/mcp-server

Add -s user to make it available in every project. A project can instead carry a .mcp.json in its root with the JSON below.

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop:

{
  "mcpServers": {
    "proxies-sx": {
      "command": "npx",
      "args": ["-y", "@proxies-sx/mcp-server"],
      "env": {
        "PROXIES_API_KEY": "psx_your_api_key_here"
      }
    }
  }
}

Cursor

The same JSON in ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project).

Windsurf

The same JSON in ~/.codeium/windsurf/mcp_config.json.

Docker

docker build -t proxies-sx-mcp https://github.com/bolivian-peru/proxies-sx-mcp-server.git
docker run -i --rm -e PROXIES_API_KEY=psx_your_api_key_here proxies-sx-mcp

The container speaks MCP over stdio (-i is required).

More recipes

recipes/ has working examples for LangChain, CrewAI and a raw MCP client.

Tools

Generated from the code of version 3.0.1 by npm run build:manifest. Do not edit by hand.

Pool Gateway

ToolWhat it does
pool_get_stockGet live Pool Gateway stock, no account needed. Also listed in wallet mode.
pool_get_facetsList the cities, states, carriers (with ASN and class) and IP classes that have stock in one country, with counts, no account needed. Also listed in wallet mode.
pool_build_proxy_urlBuild a ready-to-use Pool Gateway proxy URL (gw.proxies.sx, HTTP 7000 or SOCKS5 7001). Also listed in wallet mode.
pool_explain_errorExplain a Pool Gateway error and say what to do about it. Also listed in wallet mode.
pool_get_my_credentialsGet your Pool Gateway proxy username and proxy password with ready HTTP and SOCKS5 URLs.
pool_set_proxy_passwordSet a new proxy password (at least 6 characters).
pool_get_my_statsGet your own Pool Gateway traffic and open connections, plus the health score of the pool and how many devices are connected to it.
pool_list_sessionsList your saved Pool Gateway sessions: pool, country, carrier, rotation mode, bytes and last activity.
pool_close_sessionClose one Pool Gateway session by the sessionKey from pool_list_sessions.
pool_close_all_sessionsClose every saved Pool Gateway session of the account.

Private Pool and Reserved IPs

ToolWhat it does
private_pool_listList your Private Pools with their countries, status, gateway username, connection strings with the password masked (private_pool_reveal shows the key) and remaining GB.
private_pool_buildCreate a Private Pool paid from the account's existing GB balance: no purchase, traffic is metered from the same balance.
private_pool_revealShow the gateway password (pak_ key) of a Private Pool.
private_pool_usageGet the traffic of a Private Pool per day, in MB.
reserved_ip_listList the Reserved IPs a Private Pool holds: country, class, carrier, city, rotation mode, whether the device is online, the exit IP last seen, and connection strings with the password masked.
reserved_ip_reserveReserve one device for a Private Pool so no other customer is routed through it, and get its connection strings with the password masked.
reserved_ip_rotateMove a Reserved IP to a different device in the same country now.
reserved_ip_extendChange how long a Reserved IP is kept without traffic.
reserved_ip_set_rotationSet whether a Reserved IP moves to another device on a schedule: off (hold the device, the default) or every 5, 10, 20 or 60 minutes.
reserved_ip_releaseGive a Reserved IP back to the shared pool.

Account

ToolWhat it does
get_account_summaryGet the account balance, free port slots, traffic bought and left, and any account alerts.
get_account_usageGet traffic purchased, used and still available, split into Pool Gateway traffic and dedicated-port traffic.

Billing

ToolWhat it does
get_pricingGet the live price per GB, the volume discounts, the free port-slot tiers and your current tier.
calculate_priceCalculate what a GB amount costs with the volume discount applied.
purchase_shared_trafficBuy traffic in GB from the account balance.
coupon_validateCheck whether a coupon code is valid for an order, without using it.
coupon_redeemRedeem a standalone coupon that grants free GB or port slots to the account.
get_payment_historyList the account's past payments and crypto top-up orders.

Crypto payments

ToolWhat it does
create_crypto_paymentCreate a crypto order that tops up the account balance and return its hosted payment link.
check_crypto_payment_statusCheck whether a crypto order is still unpaid, confirming, paid, expired or cancelled, and whether the balance was credited.
get_pending_crypto_paymentsList the account's crypto orders that are not finished yet, with their payment links.
cancel_crypto_paymentCancel a crypto order that has not been paid yet.
get_crypto_payment_infoCheck whether crypto top-ups are available right now and which currencies the payment page accepts.

Dedicated ports

ToolWhat it does
list_available_countriesList the countries where a dedicated port can be created right now, with the countryId create_port needs.
list_portsList your dedicated ports with status, country, carrier, expiry and port ids.
get_portGet one dedicated port with its location and ready-to-use HTTP and SOCKS5 connection strings (contains the port password).
create_portCreate a dedicated port on a carrier modem and return its connection strings.
delete_portDelete a dedicated port and free its slot.
update_port_credentialsChange the login and/or password of a dedicated port.
update_os_fingerprintSet the OS fingerprint (TCP/IP signature) a dedicated port presents.
reconfigure_portMove a dedicated port to another country, carrier or city.
extend_portAdd hours to a dedicated port's expiry.

Port status

ToolWhat it does
get_port_statusCheck whether a dedicated port is online, offline or expired.
get_port_ipGet the server address a dedicated port listens on.
ping_portTest that a dedicated port answers and measure its latency.
speed_test_portRun a speed test through a dedicated port (download, upload, ping).

Port rotation

ToolWhat it does
rotate_portMove a dedicated port to another modem in the same location.
check_rotation_availabilityCheck whether a dedicated port can be rotated now, how long the cooldown still runs and how many other modems are free.
configure_auto_rotationTurn automatic rotation of a dedicated port on or off and set its interval.
get_rotation_historyGet the past rotations of a dedicated port: when, how triggered, the location it moved to and whether it worked.
get_rotation_token_urlGet the public rotation link of a dedicated port.

Utilities

ToolWhat it does
get_proxy_connection_stringBuild the HTTP or SOCKS5 connection string of a dedicated port (contains the port password).
get_all_proxy_formatsGet a dedicated port in every common format: URLs, host:port, environment variables, curl, Python and Node.js snippets, and its public rotation link.
get_service_statusCheck whether Proxies.sx is healthy right now: open Pool Gateway incidents, the state of the API, gateway and relay, and recent uptime. Also listed in wallet mode.
get_os_fingerprint_optionsList the OS fingerprint values create_port and update_os_fingerprint accept.

Support

ToolWhat it does
create_support_ticketOpen a support ticket that a person at Proxies.sx reads and answers.
list_my_ticketsList your support tickets with their status and IDs.
get_ticketGet one support ticket with the original message and every reply.
reply_to_ticketAdd a reply to one of your support tickets.
close_ticketClose one of your support tickets once the problem is solved.

Pool access keys (reseller accounts)

ToolWhat it does
pool_mint_keyCreate a Pool Access Key (pak_) for one of your customers; it is used as the proxy password.
pool_list_keysList your Pool Access Keys with usage, cap and expiry; the key values are masked.
pool_topup_keyAdd GB to a Pool Access Key's cap and/or extend its expiry in one step.
pool_update_keyChange a Pool Access Key's label, enabled flag, cap, expiry or quality tier.
pool_regenerate_keyReplace the secret pak_ value of a Pool Access Key.
pool_reveal_keyShow the full pak_ value of a Pool Access Key.
pool_delete_keyDelete a Pool Access Key.
pool_key_usageGet the traffic of one Pool Access Key per day, in MB.
pool_key_auditGet the audit log of one Pool Access Key, newest first: created, changed, topped up, regenerated, revealed, deleted, and gateway logins that worked or failed.

x402 session management

ToolWhat it does
get_x402_sessionGet details of your x402 session including all ports.
list_x402_portsList all ports in your x402 session with connection strings and expiration times
get_x402_port_statusGet detailed status of a specific port including traffic usage and connection info
get_sessions_by_walletList all x402 sessions associated with your wallet address.
get_session_statusGet quick status check for a session including traffic usage and expiration
replace_x402_portReplace an offline port of an x402 session with a new port on another device, at no charge.
calculate_x402_topupCalculate what it costs to add traffic and/or time to an x402 session.
topup_x402_sessionAdd traffic and/or time to an x402 session.

Ops (admin keys only)

ToolWhat it does
ops_get_userCustomer 360 view: balance, pool-gateway usage, ports, and (if a farmer) their AI note.
ops_get_user_auditRecent ops-agent actions taken on this user.
ops_reconcile_paymentsRead-only Stripe-vs-DB payment view for a user (confirmed total + pending).
ops_list_ticketsList support tickets (admin view).
ops_reply_ticketPost an admin reply to a ticket, optionally emailing the customer.
ops_set_slotsSet a user's port slot limit (capped).
ops_credit_balanceCredit a user's balance in USD (admin credit).
ops_email_userSend a personalized email to one user (hourly rate-capped).
ops_list_farmersList farmer AI notes (shared operational memory).
ops_get_farmerFarmer fleet funnel (total/online/verified/listed/routable) + AI note.
ops_write_farmer_noteWrite/append a farmer AI note (situation, nextAction, free note) — shared with future AI sessions.

x402 wallet (optional, no account)

ToolWhat it does
x402_get_proxyBuy a dedicated mobile proxy on one carrier modem by paying USDC from the agent wallet; no account needed.
x402_get_pricingGet the live x402 price per GB, the smallest purchase, the allowed duration and the payment networks, and compare the cost of a purchase with the wallet balance.
x402_list_sessionsList the active x402 proxy sessions this wallet bought from this machine, with location, expiry and proxy host.
x402_check_sessionGet status, time left, traffic used and the connection strings of an x402 proxy session.
x402_wallet_balanceGet the agent wallet address and its USDC and ETH (gas) balance on the Base network.
x402_rotate_ipMove an x402 proxy to another modem so it gets a different exit IP.
x402_list_countriesList the countries where x402_get_proxy can create a proxy right now, with the number of free modems.
x402_extend_sessionAdd hours to an x402 proxy session.
x402_service_statusCheck that the x402 payment service is up, and show the wallet balance and how many sessions are active or about to expire.
x402_get_pool_accessBuy Pool Gateway traffic by paying USDC from the agent wallet; no account needed.
x402_pool_creditGet the GB bought, used and left on an x402 pool session.
x402_pool_topupAdd GB and/or time to an x402 pool session.
x402_pool_regenerateReplace the password of an x402 pool credential, for example after a leak.
x402_pool_connectionShow the gateway host, port, username and password of an x402 pool session again.
x402_pool_usageGet the traffic of an x402 pool session per day, in MB.
x402_pool_pricingGet the Pool Gateway tiers that can be bought with x402 and their live price per GB and smallest purchase.

tools.json carries the same list in machine-readable form (name, category, title, first sentence of the description, read-only and destructive flags, mode, parameters).

Dedicated ports

A dedicated port binds one port to one carrier modem. Modems exist only in US, GB, FR, NL, PL and GE (Georgia); list_available_countries shows where a modem is free right now. For every other country use the Pool Gateway.

  • rotate_port moves the port to another modem. The login and password stay, the port numbers change, and one rotation per 5 minutes is allowed.
  • reconfigure_port creates a new port in another location and removes the old one: the port ID changes.
  • The API never returns the exit IP of a port. Send a request through the proxy to see it.

Private Pools and Reserved IPs

A Private Pool is a separate gateway credential limited to the countries you choose and paid from the account's GB balance (private_pool_build). A Reserved IP holds one device for that pool alone (reserved_ip_reserve) until you release it or the idle window ends. The server keeps part of each country's stock unreserved and limits how long a peer device can be held; when it refuses a reservation, its message says why. The ISP (static) class cannot be reserved.

The connection strings of a pool or a Reserved IP come back with pak_******** as the password: put the key from private_pool_reveal in its place.

reserved_ip_list shows the exit IP last seen on a reserved device. It is shown to the owner only: do not publish it.

x402: paying without an account (optional)

An agent with a funded USDC wallet on the Base network can buy traffic without a Proxies.sx account through the x402 protocol: the API answers 402 Payment Required with the price, the server pays on-chain and retries with the transaction hash. Set AGENT_WALLET_KEY to enable the wallet tools.

  • x402_get_pool_access buys Pool Gateway traffic: one credential for every country of the tier (peer or mbl). x402_pool_pricing reads the live tiers and prices.
  • x402_get_proxy buys one dedicated port on a carrier modem. x402_list_countries shows where one is free, x402_get_pricing the live price.
  • The wallet needs USDC for the purchase and a little ETH for gas, both on Base. x402_wallet_balance shows both. (The API also accepts USDC on Solana from clients that pay by themselves; this server's wallet pays on Base.)

The account path (API key and deposited GB) is the standard one; x402 is an alternative for agents that cannot hold an account.

Earn by sharing bandwidth

Devices that share their connection through the peer SDK are paid per GB served. Terms and setup: agents.proxies.sx/peer/skill.md.

Registry

RegistryEntry
Official MCP Registryio.github.bolivian-peru/proxies-sx-mcp-server (see server.json)
npm@proxies-sx/mcp-server
Glamaglama.ai/mcp/servers/bolivian-peru/proxies-sx-mcp-server
Claude Desktop extension (MCPB)manifest.json, generated by npm run build:manifest

Troubleshooting

  • "Authentication required" at start. Neither PROXIES_API_KEY nor AGENT_WALLET_KEY is set in the environment the client starts the server with.
  • Every tool answers 401. The key is wrong, expired or revoked. Create a new one at client.proxies.sx/account.
  • A tool answers 403 "missing required scope". Create a key that includes that scope. billing:write and customers:* cannot be given to a customer key (see above).
  • The proxy answers 407. Read the error code: E_AUTH_INVALID is a wrong proxy password (use pool_get_my_credentials), E_BALANCE_EXHAUSTED is an empty balance (use get_account_usage).
  • The proxy answers 502 E_NO_STOCK_COUNTRY. Nothing is online for that pool, country and filters: check pool_get_stock and pool_get_facets, and remember that mbl exists in six countries only.
  • Claude Desktop does not show the server. Check the JSON syntax of the config file, make sure Node.js 18 or newer is installed, and restart the app completely.

Development

npm install
npm run build            # compile to dist/
npm test                 # unit tests: registry, routes, username grammar, error mapping
npm run lint
npm run build:manifest   # regenerate manifest.json, tools.json and the tool lists in the docs

# Read-only check of every tool against production (needs a real key, changes nothing):
PROXIES_API_KEY=psx_... node tests/live-smoke.mjs

Links

License

MIT License, see LICENSE.

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @proxies-sx/mcp-server

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-bolivian-peru-proxies-sx-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@proxies-sx/mcp-server"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@proxies-sx/mcp-servernpm

Compatible MCP Clients

io.github.bolivian-peru/proxies-sx-mcp-server works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More