Configure any available plan and add-ons. Pay only for 48 hours.
Try proxiesThe PapaProxy.net MCP server gives Cursor’s agent 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: you add one URL and one header to mcp.json, and the agent can manage the proxies behind the scrapers it writes.
https://papaproxy.net/account_new/api/v1/mcp and speaks Streamable HTTP, which Cursor supports natively.In the Dashboard, open Settings → API keys, name the key (for example, “Cursor”), and select scopes. The full key is shown once, right after creation. Scopes are enforced on our end, so they limit the agent regardless of how Cursor is configured.
| What the agent 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. The agent 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.
Cursor reads MCP servers from two mcp.json files and merges them: ~/.cursor/mcp.json applies to every project, and .cursor/mcp.json in a project root applies to that project. If both define a server with the same name, the project file wins.
Install in Cursor opens Cursor with the server already filled in; confirm the install. A link can’t safely carry your key, so the config uses the placeholder fb_YOUR_API_KEY. Cursor saves it to the global file ~/.cursor/mcp.json: the mcp.json file in the hidden .cursor folder inside your home folder. Replace the placeholder there:
Cmd+O on macOS or Ctrl+O on Windows and Linux, then enter the path in the dialog. The .cursor folder is hidden, so you won’t see it while browsing, but entering the path opens the file directly.
Cmd+Shift+G and paste ~/.cursor/mcp.json. From Terminal, open -a Cursor ~/.cursor/mcp.json does the same.%USERPROFILE%\.cursor\mcp.json into the File name field. That’s C:\Users\<your user name>\.cursor\mcp.json.Ctrl+L and paste ~/.cursor/mcp.json.papaproxy-net entry and the line with fb_YOUR_API_KEY. Replace only the placeholder with your key and keep Bearer and the space before it. If the file lists other servers, leave them as they are.
"Authorization": "Bearer fb_YOUR_API_KEY" "Authorization": "Bearer fb_…your key…"
Cmd+S or Ctrl+S. Then open Customize, turn the server off and on again, or restart Cursor, so it reconnects with the new key.Add the papaproxy-net entry to the mcpServers object. A remote server needs only url and headers; there’s no command and no transport field. The server name is up to you.
{
"mcpServers": {
"papaproxy-net": {
"url": "https://papaproxy.net/account_new/api/v1/mcp",
"headers": {
"Authorization": "Bearer fb_YOUR_API_KEY"
}
}
}
}The header value must start with Bearer and a space. Save the file; if the server doesn’t appear in Customize, restart Cursor.
Use this when .cursor/mcp.json is committed to a repository. Cursor resolves ${env:NAME} in url and headers, so the file names the variable and each developer keeps their own key outside Git.
{
"mcpServers": {
"papaproxy-net": {
"url": "https://papaproxy.net/account_new/api/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:PAPAPROXY_API_KEY}"
}
}
}
}export PAPAPROXY_API_KEY="fb_..."
Cursor reads the variable when it starts, so quit Cursor completely and reopen it after adding the line. On Windows, set the variable in System Properties → Environment Variables instead. The envFile option works only for local (stdio) servers, not for remote ones like this.
Open Customize in the Cursor sidebar and find papaproxy-net among your MCP servers. It should be turned on and list its tools. Then start an agent chat and 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.
The agent 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.
By default, Cursor asks before every MCP tool call and shows the arguments when you expand it. MCP tools follow the same Run Modes as terminal commands, set in Settings → Agents → Approvals & Execution: Auto-review, Allowlist, or Run Everything.
list_countries, quote_composite, list_services, get_service, list_proxy_ips, get_whitelist, get_usage_overview, get_diagnostics, get_recommendations, wallet_balance.
order_composite, order_dedicated, add_ips, renew_service, purchase_addon, refresh_ips, rotate_proxy_credentials, remove_whitelist_ip. cancel_service and disable_addon also require an explicit confirmation from the agent.
Approvals in Cursor are a convenience, not a security boundary: Cursor’s own documentation notes that the Auto-review classifier can make mistakes. The boundary is the key. A key without wallet:spend can’t pay for anything, whatever mode Cursor runs in, and a key with it can pay only from your account balance.
Cursor already writes and runs your scrapers. With the MCP server connected, the same chat can manage the proxies they use.
PAPAPROXY_API_KEY.” The agent 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, which for Cursor on your computer is usually your current public IP, and add_whitelist_ip adds it. For a server, give the agent the server’s IP instead.get_usage_timeseries with get_diagnostics and get_top_destinations, which break errors down by status code and affected hosts, and suggests a fix from get_recommendations, such as lowering the request rate to one target website.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.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 that runs on a schedule, move it to the REST API: plain code is cheaper and easier to test than an agent.
Start with the logs: open the Output panel (Cmd+Shift+U on macOS, Ctrl+Shift+U on Windows and Linux) and select MCP Logs. They show the connection attempt, each tool call, and the server’s reply.
| What you see | Cause and fix |
|---|---|
Missing or malformed Authorization header | The headers block is missing, or the value doesn’t start with Bearer . With Option C, the variable may be empty: check that it’s set, then quit and reopen Cursor. |
Invalid or revoked API key | A typo, a key that was revoked, or the placeholder fb_YOUR_API_KEY left in place after a one-click install. Create a new key and replace it. |
| A tool call fails with a scope error | The key doesn’t have the scope that tool needs. Errors come back to the agent 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 the agent to batch its work. |
| The server isn’t listed, or has no tools | Check that mcp.json is valid JSON (a trailing comma is enough to break it), that the server is turned on in Customize, and restart Cursor after editing the file. |
| Works locally, not in Cloud Agents | Cloud Agents keep their own MCP configuration and sign-ins on Cursor’s servers. Add the server and key there separately. |
If the logs show 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 Claude Code and n8n, and setup for VS Code, Windsurf, Cline, Codex CLI, Gemini CLI, and Claude Desktop is on the developers page.
There are two files. ~/.cursor/mcp.json in your home folder applies to every project; .cursor/mcp.json in a project root applies only to that project and can be committed to Git. Cursor merges them, and the project file wins when both define a server with the same name.
Add an entry with url and headers to mcpServers in mcp.json, and put the key in the header as "Authorization": "Bearer <key>". A remote server needs no command. To keep the key out of the file, write Bearer ${env:PAPAPROXY_API_KEY} and set the variable in your environment.
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 no matter how Cursor’s approvals are set. Keep paid tools under approval in Cursor and ask the agent to show a quote before it orders.
Yes. For rotating plans, the agent gets the gateway hostname, ports, and sample connection strings through get_proxy_config. Sticky sessions are managed through the REST API.