Skip to main content
An AI agent with two Model Context Protocol (MCP) servers sets up a batch of browser profiles from one text request. The ProxyLane server gives each profile its own sticky session in the target city and checks the exit IP, the address that websites see for that profile. The AdsPower server creates the profiles. The example builds 20 profiles for ad accounts in Houston, US, named tx01 to tx20. 🤖  One request replaces 20 rounds of copying proxy details into AdsPower. For each profile the agent checks the IP, then creates the profile. Claude Code asks before each tool call unless the tool is allowed in its permissions.

Prerequisites

  • Claude Code 2.1 or later. Any MCP client that supports remote servers with sign-in works the same way. The commands below are for Claude Code.
  • Node.js 18 or later, required by the AdsPower MCP server.
  • AdsPower installed, signed in, and open on the same computer, on a paid plan. The AdsPower Local API is not available on the free plan.
  • An AdsPower API key and the Local API port, both shown in the API settings of the AdsPower app.
  • A ProxyLane account with purchased traffic. IP reputation checks work only after a traffic purchase, and each check uses a small amount of traffic.
The AdsPower part of this guide follows the AdsPower MCP server README for package local-api-mcp-typescript 2.0.8.

Connect both servers

1

Add the ProxyLane server

Run in a terminal:
--scope user makes the server available in every folder. Start Claude Code with claude, run /mcp, and choose proxylane. A ProxyLane sign-in window opens in the browser. Sign in and click Allow access. No API key or password goes into the chat.
2

Add the AdsPower server

Run in a terminal, with the API key in place of <ADSPOWER_API_KEY>:
50325 is the default AdsPower Local API port. If the API settings in AdsPower show a different port, use that number.
3

Check both connections

Exit Claude Code with /exit, run claude again, and send:
The agent calls get_account on ProxyLane and get-group-list on AdsPower. The answer shows the residential traffic balance and any AdsPower groups. Group ID 0 is the ungrouped group and works in create-browser even when the list does not show it.

Send the request

Copy the request, change the city, count, or name prefix if needed, and send it to the agent:
The agent works through the list in this order: Tools that start with residential_ belong to the ProxyLane server. If an exit IP scores above 25, residential_check_connection tries a new session in the same city, up to 3 times. The returned session_id then differs from the original, and the profile gets the replacement session.
Keep the agent’s final table as the record of which session each profile uses. The “Houston ads” list under Saved lists on the Residential proxies page holds the sessions created in step 2. A replacement session such as tx03r1 is not in that list, and the original tx03 stays there with its rejected IP.

Check the result

  1. In AdsPower, open the profile list. Profiles tx01 to tx20 appear in the ungrouped group, minus any profile the agent reported as skipped.
  2. Open one profile and visit My IP. The IP and city match the row for that profile in the agent’s table.
  3. Compare the time zone on My IP with the profile settings. AdsPower sets the time zone from the proxy IP by default.
The sensitive accounts guide lists the profile settings that keep accounts apart after launch.

Use Native ISP for fixed IPs

A residential sticky session keeps its IP while the home device behind it stays online. For accounts that need the same IP for months, use Native ISP static IPs instead. ProxyLane rents each IP for 30, 60, or 90 days from the USD balance of the account.
The agent calls isp_list_products and isp_quote_order. These tools appear only while Native ISP sales are open. If the balance is short, the quote includes a top-up link for the missing amount. Place the order on the Native ISP page. After the IPs are issued, ask the agent to call isp_list_orders with format adspower and to create one profile per IP.

Troubleshoot

  • The agent says the ProxyLane account has no traffic. It calls residential_top_up and returns a checkout link. Pay on that page, then send the request again.
  • A check returns threshold_not_met. No session in that city met the score after 3 attempts. The same session names return the same IPs while those sessions last, so ask the agent to check the skipped profiles with a new session prefix, for example txb, or with max_attempts 5. A broader location, such as the whole state, also helps.
  • AdsPower returns “Not found”. Update the AdsPower app to its current patch version, as the AdsPower MCP server README advises.
  • AdsPower calls fail with a connection or key error. Check that the AdsPower app is open and that the port and API key in the claude mcp add command match the API settings in AdsPower. To change them, run claude mcp remove adspower-local-api --scope user and add the server again.
  • AdsPower refuses new profiles. The AdsPower plan has a profile limit. Check the limit in the AdsPower app or create fewer profiles.
  • A check fails with a daily limit message. Each account has 200 IP reputation checks per day, and get_account shows how many are left. Retries count as separate checks.
  • /mcp does not list proxylane or adspower-local-api. The server was added without --scope user in another folder. Run the claude mcp add command again with --scope user.
  • The ProxyLane sign-in window does not open. Run /mcp in Claude Code, choose proxylane, and select the authenticate option.
For anything else, contact ProxyLane support with the time of the request and the profile names.