2Captcha MCP

Web search, scraping, marketplace parsing and captcha solving through the 2Captcha service

Official · 2Captcha JavaScript Remote (hosted) · Streamable HTTPLocal · stdio Browser automationWeb search

45 popularity score ★ 39 ↓ 146/wk

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude Codeterminal
claude mcp add --transport http 2captcha https://mcp.2captcha.com/mcp \
  --header "Authorization: Bearer <API_TOKEN>"
qwen codeterminal
qwen mcp add --transport http 2captcha https://mcp.2captcha.com/mcp \
  --header "Authorization: Bearer <API_TOKEN>"
kimi code cli~/.kimi-code/mcp.json
{
  "mcpServers": {
    "2captcha": {
      "url": "https://mcp.2captcha.com/mcp",
      "headers": { "Authorization": "Bearer <API_TOKEN>" }
    }
  }
}
n8nMCP Client Tool node
Endpoint:       https://mcp.2captcha.com/mcp
Transport:      HTTP Streamable
Authentication: Header Auth
Header name:    Authorization
Header value:   Bearer <API_TOKEN>
Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs API_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add 2captcha -e API_TOKEN=<API_TOKEN> -- npx @2captcha/mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "2captcha": {
      "command": "npx",
      "args": [
        "@2captcha/mcp"
      ],
      "env": {
        "API_TOKEN": "<API_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "2captcha": {
      "command": "npx",
      "args": [
        "@2captcha/mcp"
      ],
      "env": {
        "API_TOKEN": "<API_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "2captcha": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "@2captcha/mcp"
      ],
      "env": {
        "API_TOKEN": "<API_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.2captcha]
command = "npx"
args = ["@2captcha/mcp"]

[mcp_servers.2captcha.env]
API_TOKEN = "<API_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e API_TOKEN=<API_TOKEN> 2captcha npx -- @2captcha/mcp
Local (container)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs API_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add 2captcha -e API_TOKEN=<API_TOKEN> -- docker run --rm -i -e API_TOKEN ghcr.io/2captcha/2captcha-mcp:latest
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "2captcha": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "API_TOKEN",
        "ghcr.io/2captcha/2captcha-mcp:latest"
      ],
      "env": {
        "API_TOKEN": "<API_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "2captcha": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "API_TOKEN",
        "ghcr.io/2captcha/2captcha-mcp:latest"
      ],
      "env": {
        "API_TOKEN": "<API_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "2captcha": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "API_TOKEN",
        "ghcr.io/2captcha/2captcha-mcp:latest"
      ],
      "env": {
        "API_TOKEN": "<API_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.2captcha]
command = "docker"
args = ["run", "--rm", "-i", "-e", "API_TOKEN", "ghcr.io/2captcha/2captcha-mcp:latest"]

[mcp_servers.2captcha.env]
API_TOKEN = "<API_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e API_TOKEN=<API_TOKEN> 2captcha docker -- run --rm -i -e API_TOKEN ghcr.io/2captcha/2captcha-mcp:latest

Settings 9

API_TOKEN Required: 2Captcha API key or an operator-issued bearer token; the server exits without it when MCP_URL is the default.
GROUPS Optional: Comma-separated tool groups; default parsing,batch,captcha; browser, browser_full or all add more.
TOOLS Optional: Comma-separated individual tool names to enable, combined with GROUPS.
MCP_URL Optional: Remote endpoint to relay to; default https://mcp.2captcha.com/mcp.
MAX_SPEND_USD Optional: Spend cap for the session, or per window such as 5/1h.
RATE_LIMIT Optional: Client-side call limit such as 100/1h.
MAX_CONCURRENCY Optional: Maximum tool calls in flight at once; unlimited by default.
POLLING_TIMEOUT Optional: Per-call timeout in seconds; default 600.
CACHE_DIR Optional: Where the offline tool-list cache is kept; default the OS cache directory.

In a container, a setting goes in with -e NAME=value after docker run.

What it does

2Captcha MCP is the captcha-solving company's own server for AI clients. It covers four jobs: searching the web, fetching pages as Markdown or HTML, turning shop product pages and listings into structured JSON, and solving captchas of the types 2Captcha supports. Batch tools run scraping or parsing over many URLs as background jobs, and an opt-in group drives a browser hosted by 2Captcha so an assistant can sign in past a captcha and keep the cookies.

The npm package does no scraping itself. Its server.js (v0.1.3) is a small stdio bridge: it fetches the tool list from the hosted service at https://mcp.2captcha.com/mcp, keeps it for 60 seconds and caches it on disk so the server still starts offline, and forwards every call with your token. The tools therefore change when the service changes, and the hosted endpoint offers the same set directly.

Only the parsing, batch and captcha groups (17 tools) are shown by default; GROUPS=browser adds 11 login tools and GROUPS=browser_full or all adds all 23 browser tools. The README counts 40 tools, but the bridge always adds a 41st, session_stats, that it answers locally (server.js). Two captcha tools, detect_captcha and solve_captcha_on_page, take HTML from a browser you already drive and return the JavaScript or cookie to apply there.

What it needs

To run it yourselfNode.js 18+orDocker

A 2Captcha account and its API key, set as API_TOKEN (sign-up is free and includes a monthly allowance; captcha solves are charged to the account balance). Node.js 18 or newer for npx, or Docker for the image. Network access to mcp.2captcha.com. The hosted endpoint needs an Authorization: Bearer header with the same key.

Limits

All work runs on 2Captcha's servers; the local package only relays calls, so nothing works offline beyond listing cached tools. The free allowance is 200 calls or $0.50 of measured spend per rolling 30 days per account; after that calls are refused until it refills. Captcha solves cost money per call, and extract always makes one model call. The hosted browser keeps one live page per account, so it is not suited to parallel work, and browser tools are off unless GROUPS includes them. MAX_SPEND_USD is checked against spend already reported, so it can overshoot by one call. DataDome and CaptchaFox answers need your own proxy and user_agent to be accepted in your session.

Who it suits

Suits developers who already hold, or are willing to open, a 2Captcha account and want scraping, search and captcha solving behind one key without running a browser themselves. A good fit for an assistant that drives its own browser and only needs help at a captcha, since the page-side captcha tools keep the session local. Pick a local browser server instead when pages must not be sent to a third party, when you need many browser pages at once, or when you want no per-call costs.

Tools 41

scrape_page
Fetches one URL and returns it as Markdown or raw HTML, rendering in a browser when needed
search_web
Runs a web search and returns ranked results with title, URL and snippet
discover_urls
Lists the URLs a site publishes in robots.txt and its XML sitemaps, with filters; does not crawl
discover_search_params
Reads one page to find the query parameters and form fields a site's own search uses
parse_marketplace
Turns a product page or a search listing into structured JSON such as price, rating and seller
extract
Pulls JSON matching a schema you supply out of a URL or pasted text, using one model call
get_account
Shows the account identity, enabled capabilities, spend counters and remaining free allowance
scrape_pages
Starts a background job that scrapes many URLs and returns a job id
parse_pages
Starts a background job that parses many marketplace URLs and returns a job id
get_job
Checks a background job's status and collects its per-URL results
cancel_job
Stops a running background job
list_captcha_types
Lists the captcha types that can be solved and the parameters each needs
solve_captcha
Solves one captcha of a supported type and returns the token or answer and its cost
detect_captcha
Identifies the captcha on a page from HTML you pass in, without solving it
solve_captcha_on_page
Detects and solves a page's captcha and returns JavaScript or a cookie to apply in your own browser
captcha_report
Marks a solution as good or bad; bad reports are refunded
captcha_balance
Returns the 2Captcha account balance in USD
browser_navigate
Opens a URL in the vendor-hosted browser
browser_click
Clicks an element in the hosted browser
browser_fill
Fills a form field in the hosted browser
browser_type
Types text into the focused element of the hosted browser
browser_press_key
Sends a key press to the hosted browser
browser_snapshot
Returns the page's accessibility tree with element references
browser_get_text
Returns the visible text of the current page
browser_get_html
Returns the HTML of the current page
browser_save_session
Stores the hosted browser's cookies on the vendor's server for later runs
browser_load_session
Restores a saved browser session
browser_list_sessions
Lists the saved browser sessions
browser_go_back
Goes back one page in history (browser_full group)
browser_go_forward
Goes forward one page in history (browser_full group)
browser_reload
Reloads the current page (browser_full group)
browser_scroll
Scrolls the page (browser_full group)
browser_select_option
Picks an option in a select element (browser_full group)
browser_hover
Moves the pointer over an element (browser_full group)
browser_drag
Drags one element onto another (browser_full group)
browser_console_messages
Returns the page's console output (browser_full group)
browser_evaluate
Runs JavaScript in the page (browser_full group)
browser_snapshot_items
Returns repeated items found on the page (browser_full group)
browser_screenshot
Takes a screenshot of the page (browser_full group)
browser_save_as_pdf
Saves the page as a PDF (browser_full group)
session_stats
Reports calls per tool and the rate-limit window for this session; answered locally

Similar servers