Skip to main content
Glama
capsolver-ai

CapSolver MCP Server

Official
by capsolver-ai

capsolver-mcp

MCP Server for CapSolver — expose captcha-solving capabilities to AI agents via the Model Context Protocol.

See the capsolver-ai-hub repo for integration examples and the full documentation.

For detailed MCP client setup (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, and more), see docs/mcp-integration.md.

Install

pip install capsolver-mcp
pip install capsolver-mcp[browser]   # with Playwright support (for detect/solve_on_page)

All tools read the API key from the environment:

# bash / zsh
export CAPSOLVER_API_KEY="your-capsolver-api-key"

# PowerShell
$env:CAPSOLVER_API_KEY = "your-capsolver-api-key"

# cmd
set CAPSOLVER_API_KEY=your-capsolver-api-key

Related MCP server: @curviate/mcp

Usage

CLI

# stdio (default — for local MCP clients like Claude Desktop)
capsolver-mcp

# SSE (for remote / HTTP access)
capsolver-mcp --transport sse --host 0.0.0.0 --port 8000

# Streamable HTTP (MCP 2025-03-26 spec)
capsolver-mcp --transport streamable-http --host 0.0.0.0 --port 8000

CLI options

capsolver-mcp [OPTIONS]

  --transport {stdio,sse,streamable-http}
                              Transport protocol (default: stdio)
  --host HOST                 Bind host for SSE/HTTP transports (default: 127.0.0.1)
  --port PORT                 Bind port for SSE/HTTP transports (default: 8000)
  --api-key KEY               API key (fallback: CAPSOLVER_API_KEY env)
  --name NAME                 Server name (default: capsolver)

Programmatic

from capsolver_mcp.server import create_server

server = create_server(
    api_key="your-key",       # or set CAPSOLVER_API_KEY env var
    server_name="capsolver",  # name advertised to MCP clients
    host="127.0.0.1",         # bind host for SSE / HTTP transports
    port=8000,                # bind port for SSE / HTTP transports
)
server.run(transport="sse")   # or "stdio" or "streamable-http"

Note: host and port are constructor parameters on create_server() (forwarded to FastMCP), matching the MCP Python SDK 1.x API.

Configure in Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "capsolver": {
      "command": "capsolver-mcp",
      "env": {
        "CAPSOLVER_API_KEY": "your-key"
      }
    }
  }
}

Available tools

Tool

Browser?

Description

solve_captcha

No

Solve a captcha by type + site params (token mode)

detect_captchas

Yes

Scan a page URL and list present captcha types

solve_on_page

Yes

Detect + solve + autofill all captchas on a page

get_balance

No

Check account balance and packages

get_supported_captchas

No

List all supported captcha types and handlers

Browser-based tools (detect_captchas, solve_on_page) require the browser extra:

pip install capsolver-mcp[browser]
playwright install chromium

Development

git clone https://github.com/capsolver-ai/capsolver-mcp.git
cd capsolver-mcp
uv sync --all-extras          # or: pip install -r requirements-dev.txt
uv run pytest                 # run tests
uv run ruff check src tests   # lint

License

MIT

Available Tools

5 tools
detect_captchasA

Detect which captcha types are present on a given page URL.

Opens the page in a headless browser and inspects the DOM to identify captcha widgets (reCAPTCHA, Cloudflare Turnstile). Requires playwright to be installed.

Args: page_url: The full URL of the page to inspect.

Returns: {"success": True, "url": "...", "detected_captchas": ["reCaptchaV2", ...]} on success. {"success": False, "error": "..."} on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the behavioral disclosure burden. It does this well by disclosing that the tool opens a headless browser, inspects the DOM, requires playwright, and returns either a success payload with detected captchas or an error. This goes beyond the schema and gives the agent a solid picture of side effects and prerequisites.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose. Each sentence serves a purpose: what it does, how it behaves, the environment requirement, the parameter, and the return contract. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter detection tool, the description is complete: it states the action, mechanics, prerequisite, parameter, and return shape. The only minor gap is that the listed captcha types are examples rather than an exhaustive set, and there is no mention of potential load-time or network behavior. An output schema exists, so return values need not be fully re-explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the bare 'page_url' string parameter. It does by defining page_url as 'The full URL of the page to inspect,' adding meaningful guidance about what value the tool expects. It could add URL format specifics, but the provided semantics are sufficient for a single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb plus resource: 'Detect which captcha types are present on a given page URL.' It clearly distinguishes this detection tool from the sibling solvers like solve_captcha and solve_on_page, so an agent knows exactly what operation this tool performs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains how the tool works ('Opens the page in a headless browser and inspects the DOM') and notes the requirement that playwright be installed, which is useful context. However, it does not explicitly state when to use this tool instead of solve_captcha or solve_on_page; the intended use is only implied by the word 'detect.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_balanceA

Get the current CapSolver account balance.

Returns: {"success": True, "balance": 5.67, "packages": [...]} on success. {"success": False, "error": "...", "error_id": ..., "error_code": "..."} on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It transparently discloses both success and failure return formats, including fields like 'success', 'balance', 'packages', and error details. However, it does not explicitly state that the operation is read-only or safe, nor does it mention authentication or rate limits, but the return structure is more than minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence stating the purpose and one sentence providing the return format. Every word serves a purpose, and the key information is front-loaded. There is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with no parameters and an output schema exists. The description already provides the return structure, making the agent fully aware of what to expect. It could mention authentication or that no parameters are required, but these are minor omissions for a trivial read-only operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema coverage is 100%. Per the rubric, a zero-parameter tool receives a baseline score of 4. The description adds no parameter details because none exist, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the action ('Get') and the resource ('current CapSolver account balance'), making the tool's purpose unambiguous. It is clearly distinct from sibling tools that solve or detect captchas, so an agent can immediately understand this is for account balance retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. While the name and context imply it is for checking balance and not for captcha operations, there is no direct guidance such as 'Use this to verify funds before solving' or 'Do not use this for captcha tasks.' Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_supported_captchasA

List all captcha types supported by this CapSolver instance.

Returns the registered handler names and all available captcha type values. No parameters required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It clearly states the tool returns registered handler names and all available captcha type values, and the read-only nature is evident from 'List'. It does not mention authentication or error behavior, but for a zero-parameter discovery endpoint this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with no filler. It front-loads the purpose, then states the return content and parameter expectation. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter listing tool with an output schema present, the description covers purpose, scope, return content, and call shape. It could be slightly stronger by mentioning when to use this in relation to the sibling tools, but nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no properties, and the description explicitly reinforces this with 'No parameters required.' With zero parameters, the baseline is 4, and the explicit statement adds a small usability benefit beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List all captcha types supported by this CapSolver instance.' It is immediately clear what the tool does and is easily distinguished from siblings like solve_captcha and detect_captchas, which perform actions rather than discovery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied by the purpose: if an agent needs to know which captcha types are supported, this is the tool. However, the description does not explicitly state when to use it over siblings or provide any workflow guidance, such as checking supported types before calling solve_captcha.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solve_captchaA

Solve a captcha in token mode — no browser required.

CapSolver will create a task on its server, solve the captcha challenge, and return the solution token. Use this when you only need the token to submit to a target website (e.g. via form POST or API call).

Args: captcha_type: One of "reCaptchaV2", "reCaptchaV3", "cloudflare". website_url: The full URL of the page where the captcha appears. website_key: The site key / public key / data-sitekey of the captcha widget. version: reCAPTCHA version hint ("v2" or "v3"). Usually auto-detected. page_action: reCAPTCHA v3 action name (e.g. "login", "submit"). min_score: reCAPTCHA v3 minimum score threshold (0.0–1.0). invisible: Whether the reCAPTCHA widget uses invisible mode. enterprise: Whether to use the Enterprise API variant. s_token: Enterprise s_token for stoken-based verification. cdata: Cloudflare Turnstile custom data parameter. proxy: Proxy in "user:pass@host:port" or "host:port" format. user_agent: Custom User-Agent string to use during solving. timeout: Maximum seconds to wait for a solution (default: 120). polling_interval: Seconds between status polls (default: 5).

Returns: {"success": True, "solution": {...}} on success. {"success": False, "error": "...", "error_id": ..., "error_code": "...", "http_status": ...} on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
cdataNo
proxyNo
s_tokenNo
timeoutNo
versionNo
invisibleNo
min_scoreNo
enterpriseNo
user_agentNo
page_actionNo
website_keyYes
website_urlYes
captcha_typeYes
polling_intervalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the internal flow ('CapSolver will create a task on its server, solve the captcha challenge, and return the solution token') and details the return payload structure for both success and failure. It does not mention costs, rate limits, or authentication, but the core behavior and error reporting are transparent enough for an agent to call it safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: it leads with purpose, then presents an organized Args section with one line per parameter, followed by a Returns section. Despite covering 14 parameters, it avoids fluff and each line adds information. The format is scannable and efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (14 parameters, 3 required, multiple captcha types), the description covers everything an agent needs: what it does, when to use it, how each parameter behaves, and the exact return format. It also notes that an output schema exists (implied by 'Returns:'), though the schema itself is not provided here. For a token-based captcha solver, this is complete and self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero description coverage, so the description must compensate for every parameter. It does so comprehensively: all 14 parameters are individually explained in the Args list, including formats for proxy and user_agent, defaults for timeout and polling_interval, and notes on auto-detection for version. This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement: 'Solve a captcha in token mode — no browser required.' It names the exact action, resource, and distinguishes from a browser-based flow, implying a contrast with the sibling tool solve_on_page without naming it. The purpose is unambiguous and the verb+resource pairing is precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit condition: 'Use this when you only need the token to submit to a target website (e.g. via form POST or API call).' This clearly frames the intended context. However, it does not explicitly exclude alternatives like solve_on_page or detect_captchas, nor does it mention when not to use it, so it stops short of a full when/when-not comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solve_on_pageA

Detect, solve, and optionally autofill all captchas on a page.

One-shot operation: opens the page in a headless browser, detects captcha widgets, solves them via the CapSolver API, and injects the solution tokens back into the page DOM.

Requires playwright to be installed.

Args: page_url: The full URL of the page containing captchas. autofill: If True, inject solved tokens into the page (default: True). timeout: Maximum seconds to wait per captcha (default: 120). polling_interval: Seconds between status polls (default: 5).

Returns: {"success": True, "url": "...", "results": [{"captcha_type": "...", "solved": true, "token": "...", "filled": true}, ...]} {"success": False, "error": "..."} on failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
autofillNo
page_urlYes
polling_intervalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and largely succeeds: it discloses the headless browser flow, CapSolver API, DOM injection, configurable defaults, and the success/error return structure. It omits secondary details such as needing an API key or behavior with zero captchas, but the core behavioral model is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear summary, followed by a compact operational flow, a single dependency note, and tidy parameter and return sections. Every sentence adds value and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex browser-automation tool, this description covers the workflow, prerequisites, parameters, and expected returns well. It falls just short of complete by not mentioning environment requirements like CapSolver API credentials or behavior when no captcha is found, but the missing pieces are secondary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the prose must explain every parameter. It does: page_url is defined, autofill's behavior and default are given, and timeout and polling_interval specify units and defaults. An agent can set each parameter confidently without additional schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence uses specific verbs and a resource: 'Detect, solve, and optionally autofill all captchas on a page.' This clearly identifies the operation and distinguishes it from siblings like detect_captchas and solve_captcha by describing a single page-wide flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the use case with 'one-shot operation' and 'all captchas on a page', but it does not explicitly name alternative tools or state when not to use this tool. The playwright prerequisite is helpful, but 'when to use vs alternatives' is only inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.1
    • First observeddetect_captchas
    • First observedget_balance
    • First observedget_supported_captchas
    • First observedsolve_captcha
    • First observedsolve_on_page

TDQS

A4.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: solve_captcha is token-only solving from provided parameters, detect_captchas only inspects a page, solve_on_page combines detection/solving/autofill, get_balance and get_supported_captchas are utility queries. There is no meaningful overlap that would cause misselection.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (solve_captcha, detect_captchas, solve_on_page, get_balance, get_supported_captchas). The pattern is predictable and uniform, with no mixed conventions or vague verbs.

Tool Count5/5

Five tools is well-scoped for a captcha-solving server: one core solving tool, one detection tool, one combined page-solving tool, and two informational tools. Each tool earns its place and the count fits comfortably within the ideal 3-15 range.

Completeness5/5

The tool surface covers the full user-facing workflow: checking balance, listing supported captcha types, detecting captchas on a page, solving a captcha for a token, and solving+autofilling on a page. There are no obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Official MCP server for the Curviate API, enabling AI agents to perform LinkedIn actions like profile management, messaging, posting, and advanced search, with Sales Navigator and Recruiter support.
    4 npm
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that lets AI agents solve reCAPTCHA, Cloudflare Turnstile, GeeTest, and image captchas via the local CapSkip solver. It enables autonomous captcha handling without per-solve fees or human intervention.
    6
    17 npm
    2
    MIT