AdsPower
AdsPower

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化

By AdsPower||28 Views

本文转载自 51CTO 博客作者「大鹏AI教育」的原创文章《AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化》,原文链接:https://blog.51cto.com/u_12805695/14592040

本文仅作技术学习与自动化方案参考,版权归原作者所有,转载请以原文授权要求为准。


大家好,我是张大鹏,AI量化 / AI全栈开发从业者,也是 InsMatrixAutomation(Instagram 矩阵自动化)项目的负责人。

在上一篇文章《用AI-Agent控制浏览器——MCP协议让指纹浏览器成为Agent的工具》里,我深入探讨了 MCP 协议如何打通 AI Agent 与指纹浏览器的协作通道。文章发布后,很多朋友问我:有没有哪家指纹浏览器厂商直接提供 MCP Server,不需要自己写适配层?

好问题。答案是:有,AdsPower 官方直接提供了 MCP Server

今天这篇文章,我就把 AdsPower 官方 MCP Server 完整跑一遍,从安装、配置到实战操作,全部实操记录。全文可运行代码,零保留。


什么是 AdsPower MCP Server

官方定义

AdsPower MCP Server 是 AdsPower 官方开源的 TypeScript 项目,托管在 GitHub AdsPower/adspower-browser。它将 AdsPower Local API 的能力封装成 MCP 协议工具,AI 编码助手(如 Claude Code、Cursor、OpenClaw)可以直接调用,无需自己写 API 适配层。

核心能力一览

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化

它与自建适配层的核心区别

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化


环境准备

前置条件

在开始之前,请确保你已安装:

  • AdsPower 客户端(V2.4.1 及以上): 下载地址
  • Node.js 18+:MCP Server 使用 TypeScript 开发,需要 Node.js 运行环境
  • AI 编码助手:本文以 OpenClaw 为例,Claude Code / Cursor 操作方式类似

获取 API Key

  1. 打开 AdsPower 客户端 → 点击右上角头像
  2. 进入设置 → **interface settings
  3. 找到 API Key,点击复制

注意:API Key 等同于你的账户凭证,请勿泄露或提交到公开代码仓库。

确认 Local API 端口

AdsPower Local API 默认端口为 50325,可通过客户端设置或启动参数修改。如果本机端口被占用,可以手动指定:

# 方式一:环境变量
export PORT=50325

# 方式二:启动参数(需在 AdsPower 客户端设置)
# --port=50325


安装 AdsPower MCP Server

方式一:通过 OpenClaw 安装(推荐)

如果你使用 OpenClaw 作为 AI 编码助手,安装 MCP Server 只需一行命令:

npx clawhub@latest install adspower-browser --force

OpenClaw 会自动下载并配置 MCP Server,无需手动管理路径。


方式二:独立 CLI 安装

如果你希望独立使用 AdsPower CLI 工具:

npm install -g adspower-browser

# 验证安装
ads --version


方式三:源码构建(适合二次开发)

git clone https://github.com/AdsPower/adspower-browser.git
cd adspower-browser
pnpm install
pnpm run build

构建完成后,MCP Server 入口文件位于:

packages/local-api-mcp/build/index.js

在 AI 编码助手的 MCP 配置中直接指向这个路径即可。

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化


MCP Server 配置到 OpenClaw

配置步骤

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化

在 OpenClaw 中添加 AdsPower MCP Server 非常简单。首先打开 OpenClaw 的配置文件,在 mcpServers 节点下添加如下配置,将 50325 替换为你的 API 端口,你的API密钥 替换为第三章获取的真实密钥:

# 格式
claude mcp add adspower-local-api \
  -e PORT="50325" \
  -e API_KEY="你的API密钥" \
  -- npx -y local-api-mcp-typescript

配置完成后,OpenClaw 会自动加载 MCP 工具,无需重启


验证连接

在 OpenClaw 中执行:

/ads get-browser-list

如果返回浏览器配置文件列表(JSON 格式),说明连接成功:

{
  "code": 0,
  "data": [
    {
      "user_id": "h1yynkm",
      "group_id": "0",
      "name": "Instagram账号01",
      "serial_number": "INS001"
    }
  ],
  "msg": "success"
}

如果返回连接超时错误,检查:

  • AdsPower 客户端是否正在运行
  • API 端口(默认 50325)是否被防火墙阻止
  • API Key 是否正确


实战:自然语言控制浏览器环境

MCP Server 配置好后,所有 Local API 的能力都可以通过自然语言调用。以下是几个高频场景。

查询所有浏览器环境

自然语言指令:

帮我查一下 AdsPower 里有哪些浏览器环境

背后调用的 API:GET /api/v1/user/list

返回示例:

{
  "code": 0,
  "data": {
    "list": [
      {
        "user_id": "h1yynkm",
        "group_id": "0",
        "name": "Instagram账号01",
        "serial_number": "INS001",
        "account_name": "ins_matrix_01",
        "password": "******",
        "cookie": "",
        "status": "Idle"
      }
    ],
    "page_count": 1,
    "total": 1
  }
}


创建新的浏览器环境

自然语言指令:

创建一个新的浏览器环境,名称是"测试环境01",分组ID是0,代理类型是HTTP,代理地址是 192.168.1.100,端口是 8080

背后调用的 API:POST /api/v1/user/create

请求示例:

curl -X POST 'http://local.adspower.net:50325/api/v1/user/create' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "测试环境01",
    "group_id": "0",
    "user_proxy_config": {
      "proxy_type": "http",
      "proxy_host": "192.168.1.100",
      "proxy_port": "8080"
    }
  }'

返回示例:

{
  "code": 0,
  "data": {
    "user_id": "abc12345"
  },
  "msg": "success"
}


启动浏览器并获取自动化接入点

自然语言指令:

启动 user_id 为 h1yynkm 的浏览器,获取 Selenium 接入地址

背后调用的 API:GET /api/v1/browser/start

Python 完整接入代码:

import requests
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service

# ⚠️ 安全提示:请勿将 API_KEY 直接硬编码在代码中,建议使用环境变量或配置文件
API_KEY = "你的API密钥"  # 建议改为 os.getenv("ADSPOWER_API_KEY")
USER_ID = "h1yynkm"
BASE_URL = "http://local.adspower.net:50325"

def start_browser(user_id: str, api_key: str) -> dict:
    """通过 AdsPower API 启动浏览器,返回接入信息"""
    url = f"{BASE_URL}/api/v1/browser/start"
    params = {"user_id": user_id, "api_key": api_key}
    response = requests.get(url, params=params, timeout=60)
    data = response.json()
    if data["code"] != 0:
        raise RuntimeError(f"启动失败: {data.get('msg', '未知错误')}")
    return data["data"]

def connect_with_selenium(ws_data: dict):
    """通过 Selenium 接入已启动的浏览器"""
    selenium_endpoint = ws_data["ws"]["selenium"]  # 格式: "host:port"
    webdriver_path = ws_data["webdriver"]

    chrome_options = Options()
    chrome_options.add_experimental_option("debuggerAddress", selenium_endpoint)

    service = Service(executable_path=webdriver_path)
    driver = webdriver.Chrome(service=service, options=chrome_options)

    try:
        driver.get("https://www.instagram.com")
        print(f"页面标题: {driver.title}")
    finally:
        driver.quit()

# 执行
ws_data = start_browser(USER_ID, API_KEY)
print(f"Selenium 端点: {ws_data['ws']['selenium']}")
print(f"WebDriver 路径: {ws_data['webdriver']}")
connect_with_selenium(ws_data)

关键说明:

  • debuggerAddress 直接使用 ws.selenium 返回的 host:port无需额外协议前缀
  • webdriver 路径由 AdsPower 自动管理版本匹配,无需手动下载 chromedriver
  • 浏览器启动成功后,Selenium 即可接管,Instagram 页面加载完全由你的自动化代码控制


关闭浏览器

自然语言指令:

关闭 user_id 为 h1yynkm 的浏览器

背后调用的 API:GET /api/v1/browser/stop

def stop_browser(user_id: str, api_key: str):
    url = f"{BASE_URL}/api/v1/browser/stop"
    params = {"user_id": user_id, "api_key": api_key}
    response = requests.get(url, params=params)
    print(response.json())

stop_browser(USER_ID, API_KEY)
# {"code": 0, "msg": "success"}


批量操作:批量启动多个浏览器环境

自然语言指令:

帮我批量启动分组ID为1下的所有浏览器环境,并打印每个环境的 Selenium 接入地址

实战代码:

import requests
import concurrent.futures
import time

# ⚠️ 安全提示:请勿将 API_KEY 直接硬编码在代码中,建议使用环境变量或配置文件
API_KEY = "你的API密钥"  # 建议改为 os.getenv("ADSPOWER_API_KEY")
GROUP_ID = "1"
BASE_URL = "http://local.adspower.net:50325"

def list_browsers(group_id: str) -> list:
    """获取指定分组下的所有环境"""
    url = f"{BASE_URL}/api/v1/user/list"
    params = {"group_id": group_id, "page": 1, "page_size": 100}
    response = requests.get(url, params=params)
    data = response.json()
    if data["code"] != 0:
        raise RuntimeError(f"查询失败: {data.get('msg')}")
    return data["data"]["list"]

def start_single_browser(user_id: str) -> dict:
    """启动单个浏览器"""
    url = f"{BASE_URL}/api/v1/browser/start"
    params = {"user_id": user_id, "api_key": API_KEY}
    try:
        response = requests.get(url, params=params, timeout=60)
        result = response.json()
        if result["code"] == 0:
            return {
                "user_id": user_id,
                "status": "success",
                "selenium": result["data"]["ws"]["selenium"]
            }
        else:
            return {"user_id": user_id, "status": "failed", "error": result.get("msg")}
    except Exception as e:
        return {"user_id": user_id, "status": "error", "error": str(e)}

# 查询所有环境
browsers = list_browsers(GROUP_ID)
print(f"分组 {GROUP_ID} 下共有 {len(browsers)} 个环境,开始批量启动...")

# 并发启动(建议不超过 5 个并发,避免机器资源耗尽)
results = []
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
    futures = {
        executor.submit(start_single_browser, b["user_id"]): b["name"]
        for b in browsers
    }
    for future in concurrent.futures.as_completed(futures):
        result = future.result()
        results.append(result)
        status_icon = "✅" if result["status"] == "success" else "❌"
        print(f"{status_icon} {result['user_id']}: {result.get('selenium', result.get('error', ''))}")

print(f"\n总计: 成功 {sum(1 for r in results if r['status']=='success')},失败 {sum(1 for r in results if r['status']!='success')}")


AdsPower MCP Server 指纹配置实战

MCP Server 不只管理环境,还能配置指纹。AdsPower 的指纹配置能力覆盖 20+ 维度,这里重点演示几个高频配置。

创建带指纹配置的环境

自然语言指令:

创建一个浏览器环境,指纹配置:时区自动跟随IP,WebRTC 禁用,Canvas 添加噪音,UA 使用 Chrome on Windows

背后调用的 API:POST /api/v1/user/create/v2(V2 接口支持更精细的指纹参数)

import requests
import json

# ⚠️ 安全提示:请勿将 API_KEY 直接硬编码在代码中,建议使用环境变量或配置文件
API_KEY = "你的API密钥"  # 建议改为 os.getenv("ADSPOWER_API_KEY")
BASE_URL = "http://local.adspower.net:50325"

def create_browser_with_fingerprint(name: str, fingerprint_config: dict) -> str:
    """创建带指纹配置的浏览器环境"""
    url = f"{BASE_URL}/api/v1/user/create/v2"
    payload = {
        "name": name,
        "group_id": "0",
        "fingerprint_config": fingerprint_config
    }
    headers = {"Content-Type": "application/json"}
    response = requests.post(url, json=payload, headers=headers)
    result = response.json()
    if result["code"] != 0:
        raise RuntimeError(f"创建失败: {result.get('msg')}")
    return result["data"]["user_id"]

# 指纹配置示例
fingerprint = {
    "automatic_timezone": "1",          # 时区自动跟随 IP
    "webrtc": "disabled",                # WebRTC 完全禁用
    "canvas": "1",                       # Canvas 添加噪音
    "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
    "screen_resolution": "random",       # 随机屏幕分辨率
    "webgl": "2",                        # WebGL 自定义配置
    "audio": "1",                        # 音频指纹添加噪音
}

user_id = create_browser_with_fingerprint("高隐匿环境", fingerprint)
print(f"创建成功,user_id: {user_id}")


指纹维度对照表

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化


踩坑实录

坑一:chromedriver 版本不匹配

问题描述:AdsPower 返回了 webdriver 路径,但 Selenium 启动时报错 ChromeDriver 不可用或版本错误

原因:AdsPower 自带的 chromedriver 与当前 Chrome 内核版本不一致。

解决方案:不要用 AdsPower 返回的 webdriver 路径,改用 webdriver_manager 自动同步版本:

from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 替换为自动管理版本
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=chrome_options)

注意:debuggerAddress(Selenium 接入点)仍然使用 AdsPower 返回的值,两者不冲突。


坑二:并发启动数量过多导致崩溃

问题描述:批量启动 10+ 浏览器环境时,部分浏览器启动失败或进程崩溃。

原因:机器性能不足,每个 Chrome 进程占用约 300~500MB 内存。

解决方案:控制并发数,建议每台机器同时启动不超过 5 个浏览器环境。


坑三:Selenium 接入成功但页面操作超时

问题描述:浏览器启动成功,Selenium 也连接上了,但执行 driver.get() 或元素定位时持续超时。

原因:AdsPower 启动的浏览器实例网络代理响应慢,或目标网站反爬机制触发了加载延迟。

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化


解决方案:为 Selenium 操作添加合理的超时控制,并使用显式等待替代固定延时:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

# 页面加载超时 30 秒
driver.set_page_load_timeout(30)

try:
    driver.get("https://www.instagram.com")
    # 显式等待元素出现(最长 20 秒)
    wait = WebDriverWait(driver, 20)
    wait.until(EC.presence_of_element_located((By.TAG_NAME, "body")))
    print(f"页面标题: {driver.title}")
except Exception as e:
    print(f"页面加载失败: {e}")

注意:避免使用 time.sleep() 固定延时,推荐使用 WebDriverWait 显式等待,可以大幅提升脚本稳定性和执行效率。


总结与延伸

核心结论

经过完整实测,AdsPower 官方 MCP Server 有以下核心价值:

  1. 零适配成本:官方提供,开箱即用,无需自己封装 Local API
  2. 自然语言驱动:配合 AI 编码助手,用大白话控制浏览器环境
  3. 完整能力覆盖:Local API 的 20+ 接口全部通过 MCP 暴露
  4. 生产级稳定:官方维护,与客户端版本同步更新
  5. 指纹配置强大:20+ 指纹维度,业界领先

适用场景
AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化

延伸阅读


作者:张大鹏

AI量化 / AI全栈开发从业者
51CTO 博客专家
专注领域:AI量化、海外电商自动化
微信公众号:AI大鹏量化(欢迎交流)

AdsPower

与AdsPower一起,开启多账号管理新篇章

AdsPower 官方 MCP Server 深度测评:用自然语言控制指纹浏览器自动化

人们还读过

  • Flask + MCP 协议打通 AdsPower 指纹浏览器自动化,这个方案太丝滑了Flask + MCP 协议打通 AdsPower 指纹浏览器自动化

    Flask + MCP 协议打通 AdsPower 指纹浏览器自动化,这个方案太丝滑了

    本文介绍如何通过 Flask + MCP 架构实现对 AdsPower 指纹浏览器的可视化自动化控制。涵盖方案设计、代码实战和效果展示,适合 AI 应用开发者和跨境电商技术负责人。预计阅读时间 15 分钟。

  • 用AI Agent控制浏览器:MCP协议让指纹浏览器成为Agent的工具用AI Agent控制浏览器:MCP协议让指纹浏览器成为Agent�%9

    用AI Agent控制浏览器:MCP协议让指纹浏览器成为Agent的工具

    本文深入解析AI Agent如何通过AdsPower指纹浏览器的MCP协议实现浏览器自动化控制以及多账号隔离与自动化操作,涵盖Selenium实战、MCP Server接入方式及真实项目应用场景,帮助你构建可规模化的AI自动化系统。

  • 用AI Agent控制指纹浏览器实现Instagram全自动注册(附源码)用AI Agent控制指纹浏览器实现Instagram全自动注册(附源码)

    用AI Agent控制指纹浏览器实现Instagram全自动注册(附源码)

    本文转载自 51CTO 博客,介绍如何结合 AI Agent、AdsPower 指纹浏览器与浏览器自动化技术,实现 Instagram 注册流程的环境隔离、状态管理与自动化控制。

  • 采集浏览器AdsPower:让大规模任务跑得更稳更快采集浏览器AdsPower:让大规模任务跑得更稳更快

    采集浏览器AdsPower:让大规模任务跑得更稳更快

    AdsPower 采集浏览器将浏览器环境抽象为可调度资源,支持大规模动态页面采集、多地区数据抓取和 AI Agent 自动调用 API,提升任务稳定性和扩展能力。

  • AI Agent 自动注册 Facebook 全流程实测:真正卡住的是这一步AI Agent 自动注册 Facebook 全流程实测:真正卡住的是这一步

    AI Agent 自动注册 Facebook 全流程实测:真正卡住的是这一步

    这次 AdsPower 做了一次自动化测试:用 AI Agent + Puppeteer,在指纹浏览器环境中完整跑了一遍 Facebook 注册流程。填写表单、邮箱验证、安全检查都可以自动完成,但最后还是卡在了视频刷脸验证。