Products
Datacenter proxies from $19/mo Rotating proxies from $25/mo ISP proxies from $33/mo Dedicated proxies from $3.50/mo UDP proxies from $5/mo Try proxies
Use cases
Data & scraping AI services Social media & messaging E-commerce & finance Media & entertainment Marketing & ads Automation & tools All use cases →
Pricing
Full pricing table All locations Money-back guarantee
Resources
Dashboard guide API reference API and MCP Setup guides FAQ Blog For business About us Affiliate program
New dashboard
English
English Русский
MCP integration

How to add the PapaProxy.net MCP server to Cursor

The 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.

Before you start

Step 1. Create an API key with the right scopes

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 doScopes
Analyze only: stock, quotes, your services, usage, and errorscatalog:read, services:read, usage:read
Also configure: IP whitelisting, credentials, auto-renewalthe above plus services:write
Also pay from your balance: orders, renewals, add-ons, extra IPsthe 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.

Step 2. Add the server to Cursor

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.

Option A: one-click install

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:

  1. Open the file in CursorPress 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.
    • macOS: press Cmd+Shift+G and paste ~/.cursor/mcp.json. From Terminal, open -a Cursor ~/.cursor/mcp.json does the same.
    • Windows: paste %USERPROFILE%\.cursor\mcp.json into the File name field. That’s C:\Users\<your user name>\.cursor\mcp.json.
    • Linux: press Ctrl+L and paste ~/.cursor/mcp.json.
  2. Replace the placeholderFind the 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.
    Before and after
    "Authorization": "Bearer fb_YOUR_API_KEY"
    "Authorization": "Bearer fb_…your key…"
  3. Save and reconnectSave with 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.

Option B: edit mcp.json

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.

~/.cursor/mcp.json
{
  "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.

Option C: keep the key in an environment variable

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.

.cursor/mcp.json
{
  "mcpServers": {
    "papaproxy-net": {
      "url": "https://papaproxy.net/account_new/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer ${env:PAPAPROXY_API_KEY}"
      }
    }
  }
}
~/.zshrc or ~/.bashrc
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.

Step 3. Check the connection

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:

Prompt
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.

Tool approvals: what to let the agent run on its own

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.

Safe to allowlist

Read-only: nothing changes, nothing is charged

list_countries, quote_composite, list_services, get_service, list_proxy_ips, get_whitelist, get_usage_overview, get_diagnostics, get_recommendations, wallet_balance.

Keep under approval

These charge your balance or change access

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.

What to do with it in Cursor

Cursor already writes and runs your scrapers. With the MCP server connected, the same chat can manage the proxies they use.

Build a scraper on live proxies“Write a Python scraper for this site that loads the proxy list from the PapaProxy.net API at startup and reads the key from 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.
Whitelist the machine before a run“Add my current IP to IP whitelisting on my datacenter plan.” 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.
Find out why errors went up“Why did the success rate drop yesterday?” The agent compares 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.
Price before you buy“What would 500 IPs across Germany and the Netherlands cost for 3 months?” The agent checks stock with 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.

Troubleshooting: Cursor MCP not working

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 seeCause and fix
Missing or malformed Authorization headerThe 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 keyA 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 errorThe 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 rowThe 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 toolsCheck 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 AgentsCloud 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.

Other MCP clients

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.

Frequently asked questions

Where is mcp.json in Cursor?

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.

How do I add a remote MCP server with an API key to Cursor?

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.

Does the MCP server cost extra?

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.

Can the agent in Cursor buy proxies without asking me?

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.

Does it work with rotating proxies?

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.