ファクトリードロイド + スクラップレス: リモートMCPサーバーを追加
Senior Web Scraping Engineer
TL;DR:
droid mcp addは、1つのコマンドでScrapelessを接続します。--type http、x-api-tokenヘッダー、および--no-oauthを使用します; エントリは~/.factory/mcp.jsonに届きます。- キーは
${SCRAPELESS_API_KEY}として、波括弧で記述します。 Droidはその形式を展開し、変数が未設定の場合に名前を付けますが、単に$SCRAPELESS_API_KEYをリテラルテキストとして送信します。 - プロジェクト
.factory/mcp.jsonは参照を安全に運べます。 キーは各開発者の環境内に留まり、サーバーはconnected [project]としてリストされます。 droid mcp listは4つの異なる問題を分けます。connected、needs authentication、failed: Failed to connect to MCP server、および未設定変数の失敗は、それぞれ異なる修正を指しています。connectedはヘッダーが到着したことを証明し、キーが機能していることを証明しません。 作り上げられたキーも接続されたとしてリストされるので、1つのツールコールで確認してください。- ヘッドレスツールコールには
--auto highが必要なので、その範囲を特定してください。droid exec --auto high --only-tools 'MCP:scrapeless/scrape_markdown'は、それだけのツールを呼び出すランコールを許可します。 - Scrapelessの無料プランでキーを取得し、サーバーを数分で追加してください。
Factory Droidは、あなたのターミナルからコードを計画し編集し、droid execはスクリプトとCIのヘッドレスで同じエージェントを実行します。どちらのモードも自動的にウェブページを閲覧することはできません。MCPサーバーは、Droidがタスク中に呼び出すツールを提供し、ホスティングされたScrapeless MCPサーバーはページフェッチ、クラウドブラウザ、および検索を提供します。
セットアップは1つのコマンドです。保持できるかどうかは、キーがヘッダーにどのように到達するか、エントリがどの設定ファイルに存在するか、およびdroid mcp listが実際に何を報告しているかによって決まります。
Scrapelessが追加されたときにDroidが呼び出せるもの
Scrapelessサーバーは25のツールを公開します。 scrape_markdown、scrape_html、およびscrape_screenshotは1回の呼び出しでページを返します。16のbrowser_*ツールは、browser_createからbrowser_closeまで、クラウドブラウザセッションをステップバイステップで実行します。 crawl_start、crawl_result、およびcrawl_cancelはクローリングを管理します。 google_searchおよびgoogle_trendsは検索とトレンドデータを返し、ai_scraperはChatGPTやPerplexityなどのAIアシスタントからの回答を取得します。
MCPアーキテクチャは、ツールを呼び出すクライアントを提供するサーバーから分離します。これがDroidにURLとヘッダーだけでホストされているサーバーを使用させる理由です。
前提条件
- Factory Droid CLI。このガイドでは、バージョン0.213.0および0.220.0を使用しました。
- サインイン済みのFactoryアカウント、または
FACTORY_API_KEY設定、モデルがプロンプトを実行するステップのために。 - ScrapelessダッシュボードからのScrapeless APIキー。
ステップ1: サーバーを追加する
bash
droid mcp add scrapeless https://api.scrapeless.com/mcp --type http --header "x-api-token: YOUR_SCRAPELESS_API_KEY" --no-oauth
--type httpは、ストリーミング可能なHTTPトランスポートを選択します。デフォルトのタイプはstdioで、これはURLを起動コマンドとして扱います。--no-oauthは、Droidがヘッダー認証されたリモートサーバーのために提供するOAuthフローをオフにします。
text
Added HTTP MCP server scrapeless with URL: https://api.scrapeless.com/mcp
~/.factory/mcp.jsonに書き込まれたエントリ:
json
{
"mcpServers": {
"scrapeless": {
"url": "https://api.scrapeless.com/mcp",
"headers": {
"x-api-token": "YOUR_SCRAPELESS_API_KEY"
},
"oauth": false,
"disabled": false,
"type": "http"
}
}
}
"oauth": falseは--no-oauthが追加したものです。"disabled": falseがサーバーをアクティブのままにします。
ステップ2: ヘッダーに変数参照を入れる
上記のコマンドはファイルにリテラルキーを残します。それを${SCRAPELESS_API_KEY}で置き換えて、ファイルが名前を保持し、シェルが値を保持します。波括弧は重要です: DroidはPOSIXパラメータ展開の波括弧形式を展開し、$SCRAPELESS_API_KEYを未変更で通過させます。
json
{
"mcpServers": {
"scrapeless": {
"url": "https://api.scrapeless.com/mcp",
"headers": {
"x-api-token": "${SCRAPELESS_API_KEY}"
},
"oauth": false,
"disabled": false,
"type": "http"
}
}
}
bash
export SCRAPELESS_API_KEY="your-scrapeless-api-key"
droid mcp list
text
Configured MCP servers:
scrapeless http connected [user]
そのシェルで変数が設定されていない場合、Droidは漠然と失敗する代わりに、それに名前を付けます:
text
scrapeless http failed: MCP server credential references an unset environment variable "SCRAPELESS_API_KEY" [user]
波括弧を省略すると、その警告は決して表示されません。Droidはリテラルテキスト$SCRAPELESS_API_KEYを送信し、サーバーはconnectedとしてリストされ続けます。この問題は最初のツールコールでのみ表面化します。
ステップ3: プロジェクトmcp.jsonを介してサーバーを共有する
Droidはプロジェクトから.factory/mcp.jsonも読み取るため、サーバーはそれをクローンする全ての人のリポジトリ内に存在できます。そのファイル内のリテラルキーは一緒にコミットされることになりますし、ハードコーディングされた資格情報はその理由からも分類されたソフトウェアの弱点です。波括弧付きの参照はコミットするのが安全です。なぜなら、各開発者が自分の環境からキーを供給するからです。同じJSONをリポジトリのルートに.factory/mcp.jsonとして保存します:
text
scrapeless http connected [project]
括弧で囲まれたラベルはDroidがエントリを読み込んだ範囲であり、プロジェクトファイルが有効であることを確認する最も迅速な方法です。変数がなければ、プロジェクトエントリは同じ未設定変数の失敗を[project]というラベルで報告します。
今これを設定していますか? Scrapelessの無料プラン では、接続と最初のツールコールがカバーされています。
ステップ4: droid mcpリストレポートを読む
| ステータス | 原因 | 修正 |
|---|---|---|
connected |
サーバーがx-api-tokenヘッダーを持つリクエストを受け入れた |
キーを確認するために1つのツールコールを行います |
failed: … unset environment variable "SCRAPELESS_API_KEY" |
${SCRAPELESS_API_KEY}が参照されていますが、エクスポートされていません |
Droidを実行するシェルで変数をエクスポートします |
needs authentication |
OAuthが有効な状態で401が返される、通常はAuthorization: Bearerヘッダーから |
x-api-tokenを使用して--no-oauthを追加します |
failed: Failed to connect to MCP server |
OAuthが無効な状態で401、再び通常はBearerヘッダーから | x-api-tokenを使用します |
Bearer行はほとんどのMCPの例がその方法で認証するため、最も頻繁に表示されます。Scrapelessは、x-api-tokenなしでリクエストに応じて 401 Unauthorized responseを返し、OAuthがオンのままだと、Droidはそれをサインインリクエストとして読み取ります:
text
scrapeless http needs authentication [user]
Some servers need authentication. Start droid and run /mcp to authenticate.
/mcpを実行しても解決しません。なぜなら、Scrapelessエンドポイントには完了するOAuthフローがないからです。代わりにヘッダーを変更してください。
誤解を招く可能性があるステータスはconnectedです。Scrapelessのハンドシェイクは、非空のx-api-token値を受け入れるため、誤ってタイプしたまたは取り消されたキーは、正常なキーと全く同じようにリストされます。
ステップ5: ScrapelessツールのみでDroidを実行する
droid execは1つのプロンプトをヘッドレスで実行し、読み取り専用モードで開始されます。MCPツールへのコールはそのモードを超えます:Droid 0.220.0では、実行が「進むための十分な権限がありません」と停止し、--auto mediumは依然として「--auto highで再実行してください」と答えます。--only-toolsフラグはMCPセレクタを受け入れるため、高い自律性レベルを、1つのツールを許可するセレクタと組み合わせます:
bash
droid exec --auto high --only-tools 'MCP:scrapeless/scrape_markdown' "Use the scrapeless MCP server's scrape_markdown tool on https://example.com and reply with the first heading of the page, quoted exactly."
Droidの応答:
text
The first heading of the page is:
"Example Domain"
--list-toolsを同じセレクタに追加すると、その実行が到達できる範囲が示されます。DroidはMCPツールを<server>___<tool>と名付け、scrapeless___scrape_markdownのみが許可マークされており、他の24のScrapelessツールとDroidのビルトインファイルおよびシェルツールはブロックされたとマークされています。'MCP:scrapeless'はすべての25のScrapelessツールを許可し、--add-toolsと--remove-toolsは同じセレクタを受け入れます。
結果に含まれるページコンテンツは確認です。悪いキーの場合、同じコールでもHTTP 200が返され、結果テキストはFailed to fetch dataで始まります;ScrapelessはそれをMCPエラーとしてマークしないため、ステータスよりもテキストを読むようにしてください。
サーバー自体についての詳細は、Scrapeless MCPサーバーのお知らせが公開されている内容をカバーし、MCP統合ガイドがエージェントがブラウザに到達する方法を比較しています。ブラウザMCPドキュメントには構成リファレンスがあり、スクレイピングAPIページにはツールの背後にいるアクターが説明され、価格設定にはコールのコストが記載されています。
結論
DroidにScrapelessを追加するのは1つのコマンドです。セットアップを信頼できるものに保つことは、droid mcp listが何を見られ、何を見られないかにかかっています:ブレースされた${SCRAPELESS_API_KEY}参照によりDroidは不足している変数を名付け、--no-oauthはヘッダーの誤りをサインインプロンプトではなく失敗に変え、ツールコールだけがキーが機能することを証明します。
プロジェクト.factory/mcp.jsonにブレースされた参照を置くと、チーム全体がサーバーにアクセスでき、誰もキーをコミットすることがありません。
Droidにウェブのライブビューを提供する準備はできましたか? Scrapelessの無料プランから始めましょう そしてサーバーを追加します。
FAQ
Q: APIキーを持つリモートMCPサーバーをFactory Droidに追加するにはどうすればよいですか?
droid mcp add scrapeless https://api.scrapeless.com/mcp --type http --header "x-api-token: YOUR_SCRAPELESS_API_KEY" --no-oauthを実行します。エントリーは~/.factory/mcp.jsonに入り、リテラルキーを${SCRAPELESS_API_KEY}に置き換えることができます。
Q: DroidはMCPヘッダー内の環境変数を展開しますか?
はい、ブレースされた形式で。${SCRAPELESS_API_KEY}は変数の値に置き換えられ、未設定の変数はそれを示す失敗ステータスを生成します。裸の$SCRAPELESS_API_KEYはリテラルテキストとして送信されます。
Q: なぜdroid mcpリストは認証が必要だと言うのですか?
サーバーはOAuthが有効な状態で401を返したため、Droidはサインインを提供します。Scrapelessの場合、ほぼ常にAuthorization: Bearerヘッダーを意味します。x-api-tokenを使用し、--no-oauthを追加してください。/mcpを実行してもヘッダーの不一致を修正することはできません。
Q: ~/.factory/mcp.jsonと.factory/mcp.jsonの違いは何ですか?
~/.factory/mcp.jsonはユーザー設定であり、すべてのプロジェクトに適用されます。.factory/mcp.jsonはリポジトリ内のプロジェクトに適用され、[project]としてdroid mcp listに表示され、キーが${SCRAPELESS_API_KEY}参照である限りコミットすることができます。
Q: 接続されているとは私のScrapelessキーが有効であることを意味しますか?
いいえ。Scrapelessハンドシェイクは空ではないx-api-token値を受け入れるため、誤ったキーもconnectedとしてリストされます。ページコンテンツを返すツールコールが証拠です;悪いキーはFailed to fetch dataで始まるテキストを返します。
Q: Droid execの実行をScrapelessツールに制限するにはどうすればよいですか?
すべてのScrapelessツールに--only-tools 'MCP:scrapeless'を渡すか、1つのツールには'MCP:scrapeless/scrape_markdown'を渡し、--auto highを一緒に渡します。これはMCPツールコールに必要です。--add-toolsと--remove-toolsは同じセレクターを取ります。
Q: DroidからScrapelessサーバーを削除するにはどうすればよいですか?
droid mcp remove scrapelessを実行してください。このコマンドは、それを定義する設定ファイルからエントリを削除します。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



