Configure any available plan and add-ons. Pay only for 48 hours.
Try proxiesThe PapaProxy.net MCP server gives Claude Code 56 tools for your proxy account: check stock, get quotes, buy, configure IP whitelisting, export proxy lists, and analyze errors. It’s a remote server, so there’s nothing to install: one claude mcp add command connects it, and Claude can manage the proxies behind the scrapers it writes, including on a remote server you work on over SSH.
claude --version. The commands below work the same on macOS, Linux, and Windows, apart from line breaks in the shell.https://papaproxy.net/account_new/api/v1/mcp and speaks Streamable HTTP, which Claude Code supports natively as --transport http.In the Dashboard, open Settings → API keys, name the key (for example, “Claude Code”), and select scopes. The full key is shown once, right after creation. Scopes are enforced on our end, so they limit Claude regardless of your permission rules or permission mode.
| What Claude should do | Scopes |
|---|---|
| Analyze only: stock, quotes, your services, usage, and errors | catalog:read, services:read, usage:read |
| Also configure: IP whitelisting, credentials, auto-renewal | the above plus services:write |
| Also pay from your balance: orders, renewals, add-ons, extra IPs | the above plus wallet:read and wallet:spend |
Start without wallet:spend. Claude can still price any order and show you the quote; add the scope, or create a second key, when you actually want it to buy. The full scope list is on the developers page.
Claude Code stores MCP servers in one of three scopes. The scope decides where the server loads and whether your team gets it too.
| Scope | Where it loads | Stored in |
|---|---|---|
local (default) | Only the project you ran the command in, only for you | ~/.claude.json, under that project |
user | All your projects on this machine | ~/.claude.json |
project | Everyone who works in the repository | .mcp.json in the project root |
For a personal setup, add the server in user scope so it’s available in every project. Replace fb_YOUR_API_KEY with your key and keep Bearer and the space before it.
claude mcp add --transport http --scope user papaproxy-net \ https://papaproxy.net/account_new/api/v1/mcp \ --header "Authorization: Bearer fb_YOUR_API_KEY"
claude mcp add --transport http --scope user papaproxy-net https://papaproxy.net/account_new/api/v1/mcp --header "Authorization: Bearer fb_YOUR_API_KEY"
Claude Code prints an Added ... line on success. Drop --scope user to limit the server to the current project. The key is saved in plain text in ~/.claude.json; if that’s a concern, use Option B.
Use this to share the setup with a team through Git. Claude Code expands ${VAR} in url and headers, so the committed file names the variable and each developer keeps their own key outside the repository.
{
"mcpServers": {
"papaproxy-net": {
"type": "http",
"url": "https://papaproxy.net/account_new/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${PAPAPROXY_API_KEY}"
}
}
}
}export PAPAPROXY_API_KEY="fb_..."
Open a new terminal, or run source ~/.zshrc, before starting claude, so it sees the variable. On Windows, set the variable in System Properties → Environment Variables. The first time you run claude in the project, it asks you to approve servers from .mcp.json; until you do, the server shows Pending approval.
Run this in your terminal. The status should read ✔ Connected; if it reads ✘ Failed to connect, the line also shows the HTTP status and the error text from our server.
claude mcp get papaproxy-net
Inside a session, /mcp lists the server with its tool count. Then send a request that can’t cost anything:
Using the papaproxy-net MCP server, list the countries where datacenter proxies are in stock, then quote 100 US IPs for one month. Don't buy anything.
Claude should call list_countries and quote_composite and reply with a price in dollars. Quotes are free and don’t reserve or charge anything. If a call fails, see Troubleshooting.
Claude Code asks before it calls an MCP tool unless a permission rule allows it. In rules, a tool is named mcp__papaproxy-net__<tool>. Rules are checked in a fixed order: deny, then ask, then allow. That means an ask rule keeps a paid tool under approval even if a broader rule allows it. Add rules with /permissions in a session, or put them in .claude/settings.json (this project) or ~/.claude/settings.json (all projects):
{
"permissions": {
"allow": [
"mcp__papaproxy-net__list_countries",
"mcp__papaproxy-net__quote_composite",
"mcp__papaproxy-net__list_services",
"mcp__papaproxy-net__get_service",
"mcp__papaproxy-net__list_proxy_ips",
"mcp__papaproxy-net__get_whitelist",
"mcp__papaproxy-net__get_usage_overview",
"mcp__papaproxy-net__get_diagnostics",
"mcp__papaproxy-net__get_recommendations",
"mcp__papaproxy-net__wallet_balance"
],
"ask": [
"mcp__papaproxy-net__order_composite",
"mcp__papaproxy-net__order_dedicated",
"mcp__papaproxy-net__add_ips",
"mcp__papaproxy-net__renew_service",
"mcp__papaproxy-net__purchase_addon",
"mcp__papaproxy-net__refresh_ips",
"mcp__papaproxy-net__rotate_proxy_credentials",
"mcp__papaproxy-net__remove_whitelist_ip",
"mcp__papaproxy-net__cancel_service",
"mcp__papaproxy-net__disable_addon"
]
}
}The allow list holds read-only tools: nothing changes and nothing is charged. The ask list holds tools that charge your balance or change access; cancel_service and disable_addon also require an explicit confirmation from Claude. The real boundary is still the key: a key without wallet:spend can’t pay for anything, whatever permission mode Claude Code runs in, and a key with it can pay only from your account balance.
Claude Code already writes and runs your scrapers from the terminal. With the MCP server connected, the same session can manage the proxies they use.
PAPAPROXY_API_KEY.” Claude checks your services with list_services and list_proxy_ips, then writes code that fetches the list at runtime, so a proxy list refresh doesn’t break the scraper.get_my_ip returns the IP the request comes from, so when Claude Code runs on a remote server, that’s the server’s public IP, and add_whitelist_ip adds it before the first run.claude -p "Summarize yesterday's proxy errors" --allowedTools "mcp__papaproxy-net__get_usage_timeseries" "mcp__papaproxy-net__get_diagnostics". In -p mode no one can approve a call, so list the read-only tools the run needs.list_countries, prices the mix with quote_composite, and stops there. When you confirm, a key with wallet:spend places the order with an idempotency key, so a retry doesn’t create a duplicate.Large proxy lists. list_proxy_ips returns the whole list of a service in one response. Claude Code warns when a tool response exceeds 10,000 tokens and cuts it at 25,000 tokens by default, which a package of a few thousand IPs can reach. For big packages, ask Claude to write code that downloads the list through the REST API instead of reading it into the chat, or raise the limit with MAX_MCP_OUTPUT_TOKENS.
All 56 tools, with the scope each needs and the REST endpoint it calls, are in the API reference. When a workflow becomes a fixed job, move it to the REST API: plain code is cheaper and easier to test than an agent.
Start with claude mcp list or claude mcp get papaproxy-net: they show the status of the server, configuration warnings, and the error our server returned.
| What you see | Cause and fix |
|---|---|
Missing or malformed Authorization header | The --header option is missing, or the value doesn’t start with Bearer . With Option B, check that PAPAPROXY_API_KEY is set in the terminal you start claude from. |
Invalid or revoked API key | A typo, a revoked key, or the placeholder fb_YOUR_API_KEY left in the command. Remove the server with claude mcp remove papaproxy-net and add it again with the right key. |
Leading or trailing whitespace in: headers.Authorization | The pasted key carries a space or a line break. Claude Code uses the value as written, so remove the server and add it again without it. |
⏸ Pending approval | The server comes from .mcp.json and you haven’t approved it yet. Run claude in the project and approve it. |
A warning that names PAPAPROXY_API_KEY | The variable isn’t set. Add the export line, open a new terminal, and start claude again. |
| A warning about the same server name in more than one scope | The server was added twice, for example in local and user scope. Keep one and remove the other with claude mcp remove papaproxy-net --scope local. |
| A tool call fails with a scope error | The key doesn’t have the scope that tool needs. Errors come back to Claude as text with a short code and an explanation, so ask it which scope is missing, then add it to a new key. |
| Calls fail after many requests in a row | The limit is 60 requests per minute per account, shared by all your API keys and the MCP server. Wait a minute, or ask Claude to batch its work. |
| The command fails on Windows | The \ line breaks only work in macOS and Linux shells. Use the one-line Windows command. |
If the status shows a server error rather than a configuration problem, contact support with the time of the failed call; we’ll check it on our end.
The same URL and header work in other clients; only the config file and its format differ. There are step-by-step guides for Cursor and n8n, and setup for VS Code, Windsurf, Cline, Codex CLI, Gemini CLI, and Claude Desktop is on the developers page.
Servers added in local or user scope are stored in ~/.claude.json in your home folder; local ones sit under the project they belong to. Servers in project scope are stored in .mcp.json in the project root, which you can commit to Git. Run claude mcp list to see every server Claude Code loads in the current folder.
Pass the key in a header: claude mcp add --transport http papaproxy-net https://papaproxy.net/account_new/api/v1/mcp --header "Authorization: Bearer <key>". To keep the key out of config files, add the server to .mcp.json with "Authorization": "Bearer ${PAPAPROXY_API_KEY}" and set the variable in your shell.
No. The MCP server and the REST API are included with every PapaProxy.net account. You pay only for the proxies and add-ons you order, at the same prices as in the Dashboard.
Only if its key includes the wallet:spend scope, and only up to your account balance. Without that scope, paid calls are rejected on our end in any permission mode. With it, keep paid tools in the ask list of your permission rules and ask Claude to show a quote before it orders.
Yes. claude -p runs a single prompt without a session and can call MCP tools you allow with --allowedTools. Use a key without wallet:spend for unattended runs. For a job that never changes, the REST API is simpler.