2Captcha MCP
Servidor MCP oficial do 2Captcha: busca na web, scraping que contorna proteção anti-bot, parsing de produtos/buscas de marketplace em JSON estruturado, automação de navegador e resolução de CAPTCHA para agentes de IA. Local (npx @2captcha/mcp) ou remoto (https://mcp.2captcha.com/mcp).
Servidor MCP hospedado
npx add-mcp 'https://mcp.2captcha.com/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
2Captcha MCP: ferramentas para agentes de IA, raspagem web e automação de navegador
Raspagem web com bypass anti-bot, parsing de marketplaces para JSON estruturado e resolução de CAPTCHA para agentes de IA via Model Context Protocol.
Funciona com Claude, Cursor, agentes de codificação e qualquer cliente compatível com MCP.
Franquia mensal gratuita em toda conta — cadastre-se, adicione sua chave de API e as primeiras 200 chamadas por mês são por nossa conta. O que está incluído
Plano Gratuito • Início Rápido • Instalação • Grupos de Ferramentas • Ferramentas • Configuração • Solução de Problemas
Inglês • Russo
https://github.com/user-attachments/assets/884d89a8-3a73-495b-9649-dca282a70369
Codex desktop, mesmo modelo e prompt, gravados um após o outro · velocidade 3×
[!IMPORTANT] O pacote oficial 2Captcha MCP é
@2captcha/mcp(publicado sob a organização npm @2captcha). O pacote2captcha-mcpsem escopo no npm não é afiliado à 2Captcha — não coloque sua chave de API nele.
Visão Geral
O servidor MCP 2Captcha dá aos agentes de IA acesso em tempo real a dados web que bloqueiam clientes HTTP comuns. Ele expõe 40 ferramentas que cobrem:
- Pesquisa web — resultados orgânicos ranqueados (título, URL, trecho) para uma consulta
- Raspagem de páginas — qualquer URL como Markdown limpo ou HTML bruto. Cada requisição passa por uma escada anti-bot em camadas: APIs JSON ocultas, um cliente HTTP com impersonação de TLS, proxies residenciais rotativos e um navegador gerenciado com resolução de CAPTCHA — escalando apenas até onde a página exige, para que páginas fáceis permaneçam rápidas e baratas.
- Parsing de marketplaces — páginas de produto e listagens de busca como JSON estruturado (título, preço, avaliação, vendedor, estoque, ofertas). Camadas determinísticas primeiro (APIs ocultas de marketplace, JSON-LD, seletores aprendidos); uma passagem de extração com LLM apenas quando elas falham.
- Extração estruturada — qualquer URL ou texto bruto mais seu próprio JSON Schema na entrada, JSON correspondente na saída.
- Trabalhos em lote — execute as ferramentas de raspagem/parsing sobre muitas URLs como um trabalho em segundo plano: envie, consulte, cancele.
- Resolução de CAPTCHA, inclusive no seu navegador — resolva qualquer tipo que a 2Captcha suporta (reCAPTCHA, Turnstile, hCaptcha, DataDome, imagens, …).
detect_captchanomeia a barreira em uma página que você já está dirigindo no Playwright MCP, browser-use ou uma extensão — grátis, a partir de HTML que você cola — esolve_captcha_on_pageresolve e devolve o JavaScript ou cookie exato para aplicar na sua própria sessão. Nada precisa ser movido para o nosso navegador. - Logins em navegador — opcional. Entre em um site cujo formulário de login está atrás de um CAPTCHA, em um navegador gerenciado, e salve a sessão para depois.
Duas opções de implantação: o servidor remoto hospedado (uma URL, sem instalação) ou uma instância local via npx @2captcha/mcp.
Plano gratuito: o que está incluído
Cadastrar-se na 2Captcha é grátis, e uma conta vem com uma franquia mensal neste servidor: 200 chamadas ou $0,50 de gasto medido por 30 dias, o que ocorrer primeiro, em toda a superfície de ferramentas — raspagem, parsing de marketplace, extração estruturada, trabalhos em lote, ferramentas de navegador e resolução de CAPTCHA. Sem cartão, sem plano separado, sem bloqueio de recursos.
A janela é contínua em vez de mensal por calendário, então a capacidade retorna continuamente em vez de a cota de todos ser redefinida no dia 1º.
A franquia é medida por conta, e é por isso que uma credencial é necessária: a identidade é contra o que ela é contabilizada. Não há modo anônimo — um endereço IP não é uma identidade, e um plano gratuito vinculado a um é um plano gratuito vinculado a um pool de proxies.
get_account relata o que resta, para que um agente possa planejar em torno do limite em vez de descobri-lo
como uma falha no meio de uma tarefa:
{"tenant": "2captcha:8f14e45fceea167a",
"free_tier": {"allowance": {"max_calls": 200, "calls": 12, "remaining_calls": 188,
"max_spend_usd": 0.5, "remaining_spend_usd": 0.4871,
"window_hours": 720}}}
Nada mais neste servidor cobra por chamada: resoluções de CAPTCHA são cobradas do seu saldo 2Captcha como
sempre foram, e include_meta: true relata o que qualquer chamada realmente custou. Então, quando a
franquia acaba, chamadas são recusadas até a janela reabastecer — a mensagem diz isso, e diz que o
operador pode aumentá-la. Precisa de mais do que a franquia? Fale com o operador; no serviço hospedado
isso é o suporte 2Captcha.
Início Rápido
Servidor hospedado — sem instalação
Adicione a URL ao seu cliente MCP com um cabeçalho Authorization:
URL: https://mcp.2captcha.com/mcp
Header: Authorization: Bearer YOUR_API_TOKEN
Seu token é sua chave de API 2Captcha (configurações da conta) ou o token bearer emitido pelo operador do seu servidor. Cadastrar-se é grátis e traz a franquia mensal junto.
Servidor local via npx
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": {
"API_TOKEN": "<your-api-token-here>"
}
}
}
}
O servidor local espelha a superfície de ferramentas hospedada via stdio — use-o com clientes que não podem enviar cabeçalhos de autenticação ou que só iniciam servidores MCP locais.
Instalação
Cada cliente abaixo precisa das mesmas duas coisas: o comando npx @2captcha/mcp com API_TOKEN em
seu ambiente, ou — onde o cliente fala HTTP — a URL hospedada mais um
cabeçalho Authorization: Bearer. Obtenha um token em
2captcha.com/setting; cadastrar-se é grátis e traz a
franquia mensal junto.
Claude Code
claude mcp add --transport http 2captcha https://mcp.2captcha.com/mcp \
--header "Authorization: Bearer YOUR_API_TOKEN"
Ou localmente:
claude mcp add 2captcha -e API_TOKEN=YOUR_API_TOKEN -- npx @2captcha/mcp
Claude Desktop
Um clique: baixe 2captcha-mcp-<version>.mcpb do
último lançamento e abra-o. O Claude
Desktop o instala como uma extensão e pede seu token de API — sem Node, sem npx, sem arquivo de configuração.
Ou manualmente: edite o arquivo de configuração (macOS ~/Library/Application Support/Claude/claude_desktop_config.json, Windows %APPDATA%\Claude\claude_desktop_config.json) e reinicie o aplicativo:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Cursor
Adicione a ~/.cursor/mcp.json:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Codex CLI
codex mcp add 2captcha --env API_TOKEN=YOUR_API_TOKEN -- npx @2captcha/mcp
Ou adicione-o a ~/.codex/config.toml manualmente:
[mcp_servers.2captcha]
command = "npx"
args = ["@2captcha/mcp"]
env = { API_TOKEN = "YOUR_API_TOKEN" }
VS Code (GitHub Copilot)
Adicione a .vscode/mcp.json:
{
"servers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
MCP Inspector (explore as ferramentas manualmente)
API_TOKEN=YOUR_API_TOKEN npx @modelcontextprotocol/inspector npx @2captcha/mcp
Ou conecte o Inspector diretamente a https://mcp.2captcha.com/mcp (transporte Streamable HTTP, cabeçalho Authorization: Bearer YOUR_API_TOKEN).
Windsurf
Adicione a ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Zed
Adicione ao settings.json do Zed (cmd/ctrl + ,):
{
"context_servers": {
"2captcha": {
"source": "custom",
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Warp
Configurações → IA → Gerenciar servidores MCP → + Adicionar, então cole:
{
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" },
"start_on_launch": true
}
}
Gemini CLI
Adicione a ~/.gemini/settings.json:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Kimi Code CLI
Adicione a ~/.kimi-code/mcp.json, ou .kimi-code/mcp.json para um único projeto:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Ou pule o processo local — uma chave url em vez de command o torna um servidor HTTP:
{
"mcpServers": {
"2captcha": {
"url": "https://mcp.2captcha.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_TOKEN" }
}
}
}
/mcp-config no TUI edita o mesmo arquivo; /mcp mostra o status da conexão.
Qwen Code
qwen mcp add 2captcha -e API_TOKEN=YOUR_API_TOKEN npx @2captcha/mcp
Ou hospedado:
qwen mcp add --transport http 2captcha https://mcp.2captcha.com/mcp \
--header "Authorization: Bearer YOUR_API_TOKEN"
Ambos escrevem em ~/.qwen/settings.json (.qwen/settings.json para escopo de projeto), que você pode editar
manualmente — observe que o campo HTTP é httpUrl, não url:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
DeepSeek Harness (dsh)
dsh alcança servidores MCP através do plugin @deepseek-ai/dsh-mcp-client — uma entrada por servidor em
cordis.patch.yml, ou qualquer arquivo que você passe para --patch:
- id: mcp-2captcha
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: 2captcha
transport: stdio
command: npx
args: ['@2captcha/mcp']
env:
API_TOKEN: !!js process.env.API_TOKEN
Ou contra o servidor hospedado:
- id: mcp-2captcha
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: 2captcha
transport: streamable-http
url: https://mcp.2captcha.com/mcp
headers:
Authorization: !!js '`Bearer ${process.env.API_TOKEN}`'
O agente então vê as ferramentas como mcp__2captcha__<tool>.
GLM (Z.ai)
Duas superfícies, duas respostas.
Através de um CLI de codificação. O GLM Coding Plan expõe um endpoint com formato Anthropic, então o Claude Code
roda no GLM e mantém sua própria configuração MCP. Defina ANTHROPIC_BASE_URL para
https://api.z.ai/api/anthropic e ANTHROPIC_AUTH_TOKEN para sua chave Z.ai em
~/.claude/settings.json, então instale este servidor exatamente como no bloco Claude Code acima.
Através da API. O chat/completions do Z.ai chama servidores MCP remotos por conta própria. Não há processo
local nesse caminho, então ele precisa da URL hospedada:
"tools": [
{
"type": "mcp",
"mcp": {
"server_label": "2captcha",
"server_url": "https://mcp.2captcha.com/mcp",
"headers": { "Authorization": "Bearer YOUR_API_TOKEN" }
}
}
]
Streamable HTTP é o transporte padrão, então transport_type pode ser omitido. allowed_tools
aparar o que o modelo vê; GROUPS também — veja Seleção de Ferramentas.
MiniMax
A MiniMax publica servidores MCP (fala, imagem, vídeo), mas nenhum cliente MCP de primeira parte, então não há arquivo específico da MiniMax para editar para este servidor. Duas rotas que funcionam hoje:
- Rode um modelo MiniMax dentro de qualquer cliente acima que permita escolher o backend — Cline, Continue, Cursor e LM Studio todos permitem — e instale o 2captcha lá como de costume.
- Para hosts que aceitam uma URL MCP remota diretamente, aponte-os para
https://mcp.2captcha.com/mcpcom um cabeçalhoAuthorization: Bearer YOUR_API_TOKEN.
Continue
Adicione a ~/.continue/config.yaml:
mcpServers:
- name: 2captcha
command: npx
args:
- "@2captcha/mcp"
env:
API_TOKEN: YOUR_API_TOKEN
LM Studio
Programa → Instalar → Editar mcp.json:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Cline / Roo Code
Servidores MCP → Configurar → Editar cline_mcp_settings.json:
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" },
"disabled": false
}
}
}
Goose
goose session --with-extension "npx @2captcha/mcp"
Ou adicione-o permanentemente com goose configure → Adicionar Extensão → Extensão de Linha de Comando,
comando npx @2captcha/mcp, variável de ambiente API_TOKEN.
n8n
Use o nó Ferramenta de Cliente MCP contra o servidor hospedado — sem processo local para gerenciar:
Endpoint: https://mcp.2captcha.com/mcp
Transport: HTTP Streamable
Authentication: Header Auth
Header name: Authorization
Header value: Bearer YOUR_API_TOKEN
Aponte-o para as ferramentas parsing para fluxos de raspagem; veja
Seleção de Ferramentas para aparar a superfície que o agente vê.
Qualquer outro cliente MCP
O servidor é um servidor MCP stdio simples, então qualquer coisa que possa executar um comando funciona:
command: npx
args: ["@2captcha/mcp"]
env: API_TOKEN=YOUR_API_TOKEN
Clientes que falam Streamable HTTP podem pular o processo inteiro e usar
https://mcp.2captcha.com/mcp com um cabeçalho Authorization: Bearer.
Docker
Publicado no GHCR a cada lançamento, para amd64 e arm64:
docker run --rm -i -e API_TOKEN=YOUR_API_TOKEN ghcr.io/2captcha/2captcha-mcp:latest
-i importa: o servidor fala MCP via stdin/stdout. Em uma configuração de cliente:
{
"mcpServers": {
"2captcha": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "API_TOKEN", "ghcr.io/2captcha/2captcha-mcp:latest"],
"env": { "API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
A imagem roda como o usuário não-root node e contém apenas o servidor empacotado
— sem gerenciador de pacotes, sem árvore de dependências.
Experimente
Pergunte ao seu agente:
Analise https://www.wildberries.ru/catalog/0/search.aspx?search=coffee como resultados de busca e liste os cinco itens mais baratos.
Raspe https://news.ycombinator.com e resuma as principais notícias.
Qual é o meu saldo no 2Captcha?
Seleção de Ferramentas: Grupos
Por padrão, o servidor expõe os grupos parsing, batch e captcha (17 ferramentas). Os grupos de navegador são opcionais: eles são a única parte da superfície que custa ao cliente contexto real a cada turno, e a maioria das tarefas nunca os utiliza.
Custo medido de cada grupo, conforme as definições de ferramentas que um cliente envia em cada requisição (nome +
descrição + JSON Schema, tiktoken o200k_base — regenere com o repositório de serviço
benchmarks/scripts/tool_surface_tokens.py):
| Grupo | Ferramentas | Tokens |
|---|---|---|
parsing | 7 | 3.936 |
batch | 4 | 1.759 |
captcha | 6 | 2.180 |
| padrão (os três acima) | 17 | 7.875 |
browser | 11 | +2.842 |
browser_full | 23 | +5.201 |
all | 40 | 13.076 |
| Grupo | Ferramentas | Para que serve |
|---|---|---|
parsing | scrape_page, search_web, discover_urls, discover_search_params, parse_marketplace, extract, get_account | Pesquise na web, raspe páginas, descubra as URLs de um site e seus parâmetros de busca, analise marketplaces, extraia JSON estruturado |
batch | scrape_pages, parse_pages, get_job, cancel_job | As ferramentas de parsing sobre muitas URLs como trabalhos em segundo plano |
captcha | list_captcha_types, solve_captcha, detect_captcha, solve_captcha_on_page, captcha_report, captcha_balance | Resolva qualquer tipo de CAPTCHA que o 2Captcha suporta — incluindo um em uma página no seu próprio navegador |
browser | 11 ferramentas browser_* | Faça login atrás de um CAPTCHA em um navegador gerenciado e salve a sessão |
browser_full | todas as 23 ferramentas browser_* | A superfície completa estilo Playwright, quando você realmente quiser aqui |
all | tudo que o servidor anuncia | Sem filtragem — inclui ferramentas adicionadas no lado do servidor no futuro |
Por que captcha é padrão e browser não é. detect_captcha e solve_captcha_on_page
funcionam em HTML de qualquer navegador que você já está dirigindo, então são úteis para um cliente que
nunca abre o nosso — que é o caso comum. Veja Dirigindo seu próprio
navegador.
Exemplos de configuração
{
"mcpServers": {
"2captcha": {
"command": "npx",
"args": ["@2captcha/mcp"],
"env": {
"API_TOKEN": "YOUR_API_TOKEN",
"GROUPS": "parsing,browser"
}
}
}
}
Ferramentas individuais, sem grupos:
"env": {
"API_TOKEN": "YOUR_API_TOKEN",
"TOOLS": "scrape_page,solve_captcha"
}
GROUPS e TOOLS combinam (união). A disponibilidade de ferramentas é, em última análise, uma decisão do servidor — um grupo nomeado aqui apenas filtra o que o servidor realmente anuncia.
Referência de Ferramentas (40 Ferramentas)
Qual ferramenta usar
- Procurando páginas para raspar? →
search_web(consulta → URLs classificadas) - Só precisa do conteúdo da página? →
scrape_page(sem LLM, mais barato) - Precisa de um inventário de URLs antes de agrupar? →
discover_urls(robots.txt + sitemaps, sem rastreamento) - Construindo uma URL de busca para um site? →
discover_search_params(os nomes reais dos parâmetros, não um palpite) - Página de produto ou busca → JSON? →
parse_marketplace(níveis determinísticos primeiro, fallback LLM) - Seu próprio esquema de qualquer página/texto? →
extract(sempre uma chamada LLM, ou cache) - Muitas URLs? →
scrape_pages/parse_pages+get_job - Encontrou um CAPTCHA no seu próprio navegador? →
detect_captcha(grátis) depoissolve_captcha_on_page - Um token CAPTCHA para sua própria automação? →
list_captcha_typesdepoissolve_captcha - Fazer login atrás de um CAPTCHA e manter a sessão? →
GROUPS=browser, depoisbrowser_navigate→browser_fill→browser_click→browser_save_session
Parsing
| Ferramenta | Descrição | Custa dinheiro? |
|---|---|---|
scrape_page | Busque uma página e retorne seu conteúdo legível como markdown (ou HTML bruto com clean=false). Opções: render, keep_links, structured_data, country, max_chars/offset janelamento, cache freshness_seconds por chamada. | apenas proxy/navegador |
search_web | Encontre URLs para uma consulta: resultados orgânicos classificados com título, URL e trecho. Opções: count, country, engine. | sem LLM |
discover_urls | Liste as URLs que um site publica em robots.txt e sitemaps XML — um inventário revisável para scrape_pages/parse_pages, com filtros pattern/prefix. Não é um rastreador. | sem LLM |
discover_search_params | Os parâmetros reais de busca de URL de um site, lidos de uma página: os parâmetros de consulta que seus próprios links usam (com valores conhecidos por funcionar) mais quaisquer controles <form>. Use em vez de adivinhar uma URL de busca. | sem LLM |
parse_marketplace | Página de produto (target="product") ou listagem (target="search_results") → JSON estruturado. Passe schema para sua própria forma, include_offers para dados Amazon Buy-Box, include_meta para metadados de custo/procedência. | LLM apenas quando os níveis determinísticos falham |
extract | Qualquer URL ou texto bruto + seu JSON Schema → JSON extraído. instructions orienta a extração. | sempre uma chamada LLM (ou cache) |
get_account | Identidade do locatário, capacidades configuradas, contadores de gastos da sessão. | não |
Trabalhos em lote
| Ferramenta | Descrição |
|---|---|
scrape_pages / parse_pages | As ferramentas acima sobre muitas URLs; retornam um job_id imediatamente (ou aguardam até wait_seconds). |
get_job | Consulte o status e colete resultados por item. |
cancel_job | Pare um trabalho em execução (interrompe os gastos). |
Dirigindo seu próprio navegador (recomendado)
Se você já tem um navegador — Playwright MCP, browser-use, uma extensão Chrome, seu próprio script Playwright — mantenha-o, e use estas duas ferramentas para a parte que precisa de uma conta de solver:
your browser hits a wall
-> browser_get_html / page.content() your session, your IP
-> detect_captcha(url, html=...) free: "recaptcha, sitekey 6Lc..., solvable"
-> solve_captcha_on_page(url, html=...) one solve
-> run apply.javascript in your page returns 'callback' / 'submit' / 'set'
apply.javascript é uma expressão completa com o token já embutido — é o mesmo
injetor que o nível de renderização deste serviço usa — então ele se encaixa diretamente em page.evaluate, um
console devtools, ou qualquer ferramenta de execução de JS. Quando a resposta é um cookie (DataDome, AWS WAF), você
recebe o cookie analisado e a instrução para re-requisitar em vez de recarregar.
Duas coisas que valem a pena saber. Passe html do seu navegador, porque paredes anti-bot são levantadas por
cliente e nosso endereço vê uma página diferente da sua. E para DataDome ou CaptchaFox, passe seu
próprio proxy e user_agent: essas respostas são cunhadas para a identidade que as resolveu, então uma
resolvida como nós é recusada na sua sessão, mesmo que seja tecnicamente correta.
Logins de navegador (GROUPS=browser, 11 ferramentas)
O navegador gerenciado não está tentando superar o Playwright. Essa superfície é gratuita e você provavelmente já a tem, e esta mantém uma página viva por conta, então é a ferramenta errada para qualquer coisa paralela. O que ela tem que um navegador comum não tem é que resolve o CAPTCHA no formulário de login e pode manter os cookies depois — então o grupo é limitado exatamente a isso, a 2.842 tokens em vez de 5.201:
| Categoria | Ferramentas |
|---|---|
| Navegar e interagir | browser_navigate, browser_click, browser_fill, browser_type, browser_press_key |
| Ler | browser_snapshot (árvore de acessibilidade com elementos ref), browser_get_text, browser_get_html |
| Sessões | browser_save_session, browser_load_session, browser_list_sessions |
Defina GROUPS=browser_full para a superfície completa de 23 ferramentas — adicionando histórico (browser_go_back,
browser_go_forward, browser_reload), browser_scroll, browser_select_option,
browser_hover, browser_drag, browser_console_messages, browser_evaluate,
browser_snapshot_items, browser_screenshot e browser_save_as_pdf.
CAPTCHA
| Ferramenta | Descrição | Custa dinheiro? |
|---|---|---|
list_captcha_types | O catálogo de tipos solucionáveis com seus parâmetros necessários — chame antes de solve_captcha em vez de adivinhar. | não |
solve_captcha | Resolva um CAPTCHA de qualquer tipo suportado; retorna o token/resposta, um captcha_id e o custo. | sim — uma solução por chamada |
detect_captcha | Identifique a parede em uma página — tipo de widget, sitekey, se uma tarefa solucionável pode ser construída a partir dela, e a chamada exata solve_captcha para emitir. Passe html do seu próprio navegador. Nunca resolve. | não (grátis com html) |
solve_captcha_on_page | Detecte + resolva em uma etapa, e retorne um bloco apply: uma expressão JS autocontida para evaluate, ou um cookie para adicionar e uma URL para re-requisitar. | sim — uma solução por chamada |
captcha_report | Reporte uma solução como boa/ruim (relatórios ruins reembolsam). | não |
captcha_balance | Saldo atual em USD. | não |
Local
| Ferramenta | Descrição |
|---|---|
session_stats | Uso de ferramentas durante esta sessão (chamadas por ferramenta, janela de limite de taxa). Tratado localmente, grátis. |
Configuração
Variáveis de ambiente
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
API_TOKEN | sim | — | Sua chave de API 2Captcha, ou o token bearer emitido pelo operador do seu servidor. Inscrever-se é grátis e inclui a mesada mensal |
GROUPS | não | parsing,batch,captcha | Grupos de ferramentas separados por vírgula (veja acima): browser adiciona as 11 ferramentas de login, browser_full todas as 23, all desativa a filtragem |
TOOLS | não | — | Nomes de ferramentas individuais separados por vírgula para habilitar |
MCP_URL | não | https://mcp.2captcha.com/mcp | O endpoint MCP remoto — defina para um servidor auto-hospedado |
POLLING_TIMEOUT | não | 600 | Tempo limite por chamada de ferramenta em segundos (renderizações, trabalhos em lote e soluções de CAPTCHA podem levar minutos) |
RATE_LIMIT | não | — | Limitador de chamadas no lado do cliente, ex. 100/1h ou 50/30m |
MAX_SPEND_USD | não | — | Limite de gastos, medido pelo que cada chamada reporta que custou: 5 para a sessão inteira, ou 5/1h para uma janela contínua |
MAX_CONCURRENCY | não | — | Número máximo de chamadas de ferramentas em voo ao mesmo tempo. Sem isso, um agente se espalhando sobre uma lista de URLs abre uma conexão por URL |
CACHE_DIR | não | Diretório de cache do SO | Onde o cache offline da lista de ferramentas é mantido |
MAX_SPEND_USD é o que vale a pena definir se você definir apenas um. Um limite de chamadas limita a quantidade errada — um único parse_pages sobre 500 URLs custa mais do que cem chamadas scrape_page — então RATE_LIMIT protege você de um loop descontrolado enquanto MAX_SPEND_USD protege você de uma conta descontrolada. O custo de uma chamada só é conhecido quando o servidor responde, então o limite é verificado contra o que já foi gasto: ele limita o excesso a uma chamada em vez de fingir ser exato.
Linha de comando
npx @2captcha/mcp --version
npx @2captcha/mcp --help # every variable above, with its default
O que sai da sua máquina
Vale a pena resolver antes que isso chegue a uma revisão de segurança, porque a resposta honesta é "mais do que uma ferramenta local, menos do que uma extensão de navegador".
Para onde vai. Um lugar: MCP_URL — https://mcp.2captcha.com/mcp a menos que você aponte para seu próprio servidor. Sem telemetria, sem análises, sem terceiros. A ponte não abre porta de escuta.
O que acompanha uma chamada de ferramenta. Os argumentos dessa ferramenta, encaminhados literalmente e nem inspecionados nem registrados pela ponte. Para scrape_page, isso é uma URL. Para detect_captcha e solve_captcha_on_page, é o HTML da página que você envia — e HTML obtido de uma sessão autenticada contém o que essa página contém. Para extract, é o seu esquema e qualquer texto que você fornecer diretamente.
Seu token de API vai para MCP_URL como um token de portador e para nenhum outro lugar. Este pacote nunca o grava em disco.
O que os grupos de navegador armazenam. browser e browser_full controlam um navegador no servidor, e browser_save_session mantém deliberadamente os cookies desse navegador no lado do servidor para que uma execução posterior possa pular o login. Esse é o recurso, e também é a parte em que é preciso pensar mais: uma sessão salva é uma credencial ativa para esse site, mantida por nós. browser_list_sessions mostra o que existe. Ambos os grupos são opcionais e desativados por padrão.
As ferramentas de CAPTCHA do lado da página — detect_captcha e solve_captcha_on_page, ambas ativadas por padrão — existem em parte para evitar isso. Elas leem o HTML do seu navegador e devolvem o JavaScript ou cookie para aplicar na sua sessão, então a sessão nunca se move.
O que permanece na sua máquina. Um arquivo: o cache offline da lista de ferramentas — nomes de ferramentas e esquemas JSON, indexados por endpoint, em CACHE_DIR (padrão ~/Library/Caches/2captcha-mcp no macOS, $XDG_CACHE_HOME/2captcha-mcp no Linux, %LOCALAPPDATA%\2captcha-mcp no Windows). Sem argumentos, sem resultados, sem credenciais. Excluí-lo custa uma ida e volta na próxima inicialização.
Retenção e remoção. Os dados de solicitação são retidos no lado do servidor conforme a política de privacidade da 2Captcha. Para descartar uma sessão de navegador armazenada, carregue-a e limpe-a, ou entre em contato com support@2captcha.com. Para remover tudo localmente, exclua o diretório de cache; para invalidar o acesso, gire sua chave em 2captcha.com/setting.
Como funciona
Este pacote é uma ponte stdio leve para o serviço remoto: os esquemas de ferramentas são buscados ao vivo do servidor e mantidos por 60 segundos, para que o pacote nunca se desvie da superfície de ferramentas implantada, e novas ferramentas do lado do servidor apareçam automaticamente sob GROUPS=all. As chamadas são encaminhadas literalmente — incluindo structuredContent, imagens (capturas de tela) e erros de ferramenta — com reconexão automática se a conexão cair no meio da sessão, e novas tentativas com backoff exponencial em respostas 429 e 5xx, respeitando Retry-After.
Ele inicia mesmo que a rede não inicie. A lista de ferramentas é armazenada em cache no disco, então um laptop que acorda com Wi-Fi morto ainda registra um servidor funcional e repopula suas ferramentas por notificação assim que a conexão volta — em vez de o cliente marcar o servidor como quebrado até você reiniciá-lo manualmente. A única falha na qual ele ainda se recusa a iniciar é um token rejeitado, porque essa não se resolve sozinha.
Os custos são medidos no lado do servidor contra seu token: scraping gasta recursos de proxy/navegador, solve_captcha gasta uma solução por chamada, e a extração de LLM em parse_marketplace/extract cobra sua própria chave de LLM quando você tem uma guardada (BYOK), ou o padrão do servidor caso contrário. Passe include_meta: true para as ferramentas de análise para ver exatamente o que uma chamada gastou — este serviço é o único que relata o preço de uma chamada ao agente que a faz, em vez de apenas em um painel depois.
A permissão do nível gratuito usa esse mesmo medidor, vinculado à sua conta em sua própria janela de 30 dias — é por isso que get_account pode dizer exatamente quantas chamadas e quanto de gasto você ainda tem.
Solução de problemas
"Cannot run without the API_TOKEN env"
Defina API_TOKEN no bloco env da configuração do seu cliente para sua chave de API da 2Captcha (https://2captcha.com/setting). A permissão gratuita é medida por conta, então ela precisa da credencial — criar uma conta é gratuito.
"Authentication to … failed"
O servidor rejeitou o token. Verifique se há espaços em branco e confirme qual credencial sua implantação aceita (chave de API da 2Captcha vs. um token emitido pelo operador).
"has used N of N calls allowed per 720h"
A permissão mensal da sua conta foi gasta. A janela é contínua, então a capacidade retorna conforme chamadas mais antigas expiram; get_account mostra quanto resta e quando. Em um servidor auto-hospedado, o operador aumenta WEBPARSE_FREE_TIER_MAX_CALLS / WEBPARSE_FREE_TIER_MAX_SPEND_USD, ou isenta a conta completamente.
"is outside this server's allowance, which covers: …"
O operador restringiu a permissão a um subconjunto de ferramentas (WEBPARSE_FREE_TIER_TOOLS). Isso é uma restrição de todo o servidor, não algo que uma credencial diferente resolva — peça a eles para ampliá-la. get_account lista as ferramentas que sua conta pode acessar.
"spawn npx ENOENT"
Seu cliente MCP não consegue encontrar o Node. Instale Node.js ≥ 18 e certifique-se de que npx esteja no PATH que o cliente usa (em aplicativos GUI do macOS, use um caminho absoluto para npx).
Timeouts em sites difíceis
Páginas que forçam a escada completa (navegador gerenciado + solução de CAPTCHA) podem levar minutos. Aumente POLLING_TIMEOUT (segundos) e prefira scrape_pages/parse_pages para muitas URLs, para que a espera aconteça no lado do servidor.
Uma ferramenta que espero está ausente
O padrão expõe parsing,batch,captcha. Para uma ferramenta de navegador, defina GROUPS=browser (as 11 ferramentas de login) ou GROUPS=browser_full (todas as 23); GROUPS=all desativa a filtragem completamente. Se ainda estiver ausente, o próprio servidor tem esse conjunto de ferramentas desativado — ou o operador restringiu a permissão a um subconjunto de ferramentas (get_account dirá).
Licença
MIT — © 2Captcha. Veja LICENSE.