ketch
Web search, public code search, library docs and page-to-markdown scraping from one Go binary
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
Opens the app, which asks before it adds the server.
claude mcp add --transport http 2captcha https://mcp.2captcha.com/mcp \
--header "Authorization: Bearer <API_TOKEN>"qwen mcp add --transport http 2captcha https://mcp.2captcha.com/mcp \
--header "Authorization: Bearer <API_TOKEN>"{
"mcpServers": {
"2captcha": {
"url": "https://mcp.2captcha.com/mcp",
"headers": { "Authorization": "Bearer <API_TOKEN>" }
}
}
}Endpoint: https://mcp.2captcha.com/mcp
Transport: HTTP Streamable
Authentication: Header Auth
Header name: Authorization
Header value: Bearer <API_TOKEN>Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs API_TOKEN. Replace each <NAME> with your value.
claude mcp add 2captcha -e API_TOKEN=<API_TOKEN> -- npx @2captcha/mcp{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": [
"@2captcha/mcp"
],
"env": {
"API_TOKEN": "<API_TOKEN>"
}
}
}
}{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": [
"@2captcha/mcp"
],
"env": {
"API_TOKEN": "<API_TOKEN>"
}
}
}
}{
"servers": {
"2captcha": {
"type": "stdio",
"command": "npx",
"args": [
"@2captcha/mcp"
],
"env": {
"API_TOKEN": "<API_TOKEN>"
}
}
}
}[mcp_servers.2captcha]
command = "npx"
args = ["@2captcha/mcp"]
[mcp_servers.2captcha.env]
API_TOKEN = "<API_TOKEN>"gemini mcp add --scope user -e API_TOKEN=<API_TOKEN> 2captcha npx -- @2captcha/mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs API_TOKEN. Replace each <NAME> with your value.
claude mcp add 2captcha -e API_TOKEN=<API_TOKEN> -- docker run --rm -i -e API_TOKEN ghcr.io/2captcha/2captcha-mcp:latest{
"mcpServers": {
"2captcha": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"API_TOKEN",
"ghcr.io/2captcha/2captcha-mcp:latest"
],
"env": {
"API_TOKEN": "<API_TOKEN>"
}
}
}
}{
"mcpServers": {
"2captcha": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"API_TOKEN",
"ghcr.io/2captcha/2captcha-mcp:latest"
],
"env": {
"API_TOKEN": "<API_TOKEN>"
}
}
}
}{
"servers": {
"2captcha": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"API_TOKEN",
"ghcr.io/2captcha/2captcha-mcp:latest"
],
"env": {
"API_TOKEN": "<API_TOKEN>"
}
}
}
}[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 mcp add --scope user -e API_TOKEN=<API_TOKEN> 2captcha docker -- run --rm -i -e API_TOKEN ghcr.io/2captcha/2captcha-mcp:latestAPI_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.
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.
| To run it yourself | Node.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.
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.
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.
scrape_pagesearch_webdiscover_urlsdiscover_search_paramsparse_marketplaceextractget_accountscrape_pagesparse_pagesget_jobcancel_joblist_captcha_typessolve_captchadetect_captchasolve_captcha_on_pagecaptcha_reportcaptcha_balancebrowser_navigatebrowser_clickbrowser_fillbrowser_typebrowser_press_keybrowser_snapshotbrowser_get_textbrowser_get_htmlbrowser_save_sessionbrowser_load_sessionbrowser_list_sessionsbrowser_go_backbrowser_go_forwardbrowser_reloadbrowser_scrollbrowser_select_optionbrowser_hoverbrowser_dragbrowser_console_messagesbrowser_evaluatebrowser_snapshot_itemsbrowser_screenshotbrowser_save_as_pdfsession_stats