ruflo-captcha-solver-mcp-tool
Как добавить инструмент решения CAPTCHA в Ruflo
Запускаемый, основанный на фикстурах stdio MCP-инструмент с одной попыткой восстановления, ограниченным опросом, структурированной валидацией и передачей человеку.
English · 简体中文 · 日本語 · Español · Português · 한국어
Введение
Когда авторизованный рабочий процесс Ruflo сталкивается с прерыванием CAPTCHA, ему нужен ограниченный инструмент восстановления, который либо возвращает проверенный результат, либо останавливается для проверки человеком. Этот вспомогательный MCP-сервер показывает, как задача Ruflo может вызывать CapSolver только после явной авторизации и поддерживаемого сигнала вызова. Он не изменяет Ruflo и не претендует на официальное партнерство. Объект задачи API остается на проверке вызывающей стороны, поэтому пример не выдумывает поля продукта.
Related MCP server: M365 Copilot Web Bridge
Возможности
Один MCP-инструмент:
captcha_solver_recover_onceЯвные проверки авторизации и вызова
Стабильный идентификатор восстановления для идемпотентности
Один вызов создания и не более пяти опросов результатов
Тайм-ауты, структурированные ошибки и передача человеку
Офлайн-фикстуры; не требуется реальный ключ или цель
Как это работает
Ruflo направляет одобренную задачу на локальный stdio-сервер. Инструмент проверяет авторизацию, состояние вызова, контекст и бюджет перед использованием официального контракта создания задачи. Он принимает только готовое решение, в противном случае опрашивает в пределах настроенного бюджета и безопасно останавливается.
Архитектура
Ruflo → MCP tools/call → policy gates → CapSolver client → result validator → resume or human handoff
Быстрый старт
npm test
npm run smoke
CAPSOLVER_API_KEY=replace_me npm startВ веб-интерфейсе Ruflo откройте MCP (n) → Add Server, выберите stdio-сервер и используйте node src/server.js в качестве локальной команды. Ruflo также документирует конечные точки HTTP и SSE; этот репозиторий намеренно реализует только stdio.
Использование
Используйте examples/tool-call.json в качестве формы фикстуры. Заменяйте task только на объект задачи, проверенный на соответствие официальному контракту запроса createTask. Опрос результатов следует официальному жизненному циклу getTaskResult.
Пример вывода
{"ok":true,"status":"ready","recoveryId":"qa-run-0001","polls":1,"solution":{"fixtureResult":"ok"}}Поддерживаемые сценарии
Собственные тестовые фикстуры, явно авторизованное QA и соразмерная автоматизация против одобренных целей. Неподдерживаемые состояния останавливаются для проверки человеком.
Структура проекта
src/server.js— маршрутизатор stdio JSON-RPCsrc/tool.js— определение MCP-инструмента и безопасное сопоставление ошибокsrc/recovery.js— ограниченный контракт восстановленияtests/— офлайн-модульные тестыexamples/— вызов инструмента только с фикстурами
Тестирование
npm test
npm run smokeТесты используют внедрённые клиенты и никогда не вызывают живой API.
Устранение неполадок
AUTHORIZATION_REQUIRED, NO_SUPPORTED_CHALLENGE, DUPLICATE_RECOVERY, TIMEOUT и BUDGET_EXHAUSTED являются сигналами остановки. Проверьте задачу и передайте её человеку, а не повторяйте попытки бесконечно.
Ответственное использование
Используйте только общедоступные данные, собственные системы или цели, покрытые явным письменным разрешением. Уважайте политики доступа, условия, ограничения скорости, ограничения хранения и решения человека об остановке. Не используйте этот пример для частных данных, учётных данных, чувствительной личной информации, неограниченного сбора или несанкционированного доступа.
Вклад
Сохраняйте изменения на основе фикстур, ограниченными и закрывающимися при сбое. Запустите обе проверки перед запросом на включение.
Безопасность
Никогда не коммитьте ключи, куки, профили браузеров, частные целевые URL или производственные ответы. См. SECURITY.md.
Заключение
Этот вспомогательный инструмент даёт Ruflo небольшую, проверяемую границу восстановления, сохраняя при этом явными маршрутизацию, бюджеты, валидацию и контроль человека. Для авторизованного производственного адаптера подтвердите каждое поле задачи по документации CapSolver перед использованием.
Примечание сопровождающего
Разработчик, делящийся примерами интеграции CapSolver.
Лицензия
MIT
Available Tools
1 toolcaptcha_solver_recover_onceC
Perform one bounded CAPTCHA recovery for an explicitly authorized Ruflo task.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| budget | No | ||
| context | Yes | ||
| authorization | Yes | ||
| challengeDetected | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It mentions 'bounded' (implying a polling limit) and 'recovery' (implying a state change), but fails to disclose side effects, failure modes, whether the operation is destructive, or what happens if authorization is insufficient. An agent is left guessing about the tool's actual impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A tightly written single sentence that front-loads the action and scope. Every word earns its place, avoiding filler or redundant phrasing. It is appropriately concise for the action described, though it sacrifices explanatory depth for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, nested objects, no output schema, no annotations), the description is grossly insufficient. It does not explain what 'CAPTCHA recovery' entails, how the polling budget works, what constitutes a valid 'task', or what the response will be. An agent cannot reliably construct a correct invocation from this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides no parameter-level explanation. The terms 'authorization', 'challengeDetected', 'task', 'context', and 'budget' appear in the schema, but the description gives no hints about their meanings, relationships, or expected values. The agent must infer everything from the schema alone, which the description should supplement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Perform') and a clear resource ('CAPTCHA recovery'), with a scope constraint ('one bounded') and a precondition ('explicitly authorized Ruflo task'). It clearly communicates the core action, though 'Ruflo' is undefined jargon that may confuse an agent outside that domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies it should be used only when a CAPTCHA is detected and authorization is explicit, as reflected in the schema constants. However, it gives no explicit when-not-to-use guidance, no mention of alternatives (though no siblings exist), and no context about when recovery would fail or should be retried.
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 tool update
v1.0.0- First observed
captcha_solver_recover_once
TDQS
Scored across 1 tool
Only one tool exists, so there is no possibility of confusion between tools. The tool's purpose is specific (recover once) even if the underlying 'Ruflo task' is opaque.
With a single tool, naming consistency is trivially maintained. The name 'captcha_solver_recover_once' follows a clear verb_noun_adverb pattern without conflicting conventions.
A single tool is far too few for a CAPTCHA solver domain. Typical workflows require multiple operations (solve, verify, status), so this feels like a deliberately minimal or unfinished server.
The sole tool covers a narrow 'recover once' action, but lacks standard CAPTCHA operations like solving, verification, or result retrieval. The surface is severely incomplete for the stated purpose.
Maintenance
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
Remote MCP for C2PA intake verifier MCP, structured receipts, audit logs, and reviewer-ready evidenc
A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready
Verified component catalog over remote MCP: agents pick component ids and get a stamped project repo that builds. Connect at https://www.botkelp.com/mcp. Auth: MCP OAuth 2.1, or a Bearer bk_live_ API key; initialize and tools/list are open.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to manage secrets and credentials from a secure vault via MCP tools over stdio.7MIT
- AlicenseNot gradedqualityDmaintenanceExposes a user-authenticated Microsoft 365 Copilot Chat browser session as a stdio MCP server, enabling AI-powered chat interactions via MCP tools like copilot_chat and copilot_status.2MIT
- AlicenseCqualityAmaintenanceMCP stdio bridge for the Delx Protocol: continuity, witness, recovery, ontology and passport tools.10037 npmMIT
- AlicenseBqualityDmaintenanceA local, evidence-driven MCP runtime and control plane for open-source maintainers that provides workspace-bounded tools including controlled file operations, command execution, validation primitives, durable execution records, and human review workflows via stdio and Streamable HTTP transports.33MIT