Skip to main content
Glama
normal-sugar

ruflo-captcha-solver-mcp-tool

by normal-sugar

Ruflo に CAPTCHA ソルバーツールを追加する方法

リカバリ試行 1 回、ポーリング回数制限、構造化バリデーション、人間への引き継ぎを備えた、実行可能でフィクスチャ優先の stdio MCP コンパニオンツールです。

English · 简体中文 · 日本語 · Español · Português · 한국어

はじめに

承認済みの Ruflo ワークフローが CAPTCHA による中断に遭遇した場合、検証済みの結果を返すか、人間による確認のために停止する、制限付きのリカバリツールが必要です。このコンパニオン MCP サーバーは、Ruflo タスクが明示的な承認とサポート対象のチャレンジシグナルを経た場合にのみ CapSolver を呼び出す方法を示しています。これは Ruflo を変更するものではなく、公式パートナーシップを主張するものでもありません。API タスクオブジェクトは呼び出し元によるレビュー対象のままであり、この例が製品フィールドを独自に発明することはありません。

Related MCP server: M365 Copilot Web Bridge

特徴

  • MCP ツール 1 つ: captcha_solver_recover_once

  • 明示的な承認とチャレンジのゲート

  • 冪等性のための安定したリカバリ ID

  • 作成呼び出し 1 回と結果ポーリング最大 5 回

  • タイムアウト、構造化エラー、人間への引き継ぎ

  • オフラインフィクスチャ。実際のキーやターゲットは不要

仕組み

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 の Web UI で 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-RPC ルーター

  • src/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 tool
captcha_solver_recover_onceC

Perform one bounded CAPTCHA recovery for an explicitly authorized Ruflo task.

NameRequiredDescriptionDefault
taskYes
budgetNo
contextYes
authorizationYes
challengeDetectedYes

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness1/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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. 1 tool updatev1.0.0
    • First observedcaptcha_solver_recover_once

TDQS

C2.9/5.0

Scored across 1 tool

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness1/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers