Composio + Scrapeless: カスタム MCP ツールキットを追加する
Specialist in Anti-Bot Strategies
TL;DR:
- ScrapelessはComposioのツールキットカタログには含まれていないため、カスタムMCPツールキットとして参加します。 Composioのダッシュボードには、リモートMCPサーバーから作成するカスタムMCP追加ダイアログがあり、これはベータ版としてマークされています。
- ダイアログは4つの値を取ります。 表示名、サーバーURL
https://api.scrapeless.com/mcp、APIキーを認証タイプとして、そして高度な設定の下でx-api-tokenをヘッダー名として。 - ヘッダーのプレフィックスは空のままにしてください。 Scrapelessは
x-api-tokenの中にベアキーを期待します。tokenのようなプレフィックスを使用すると、ハンドシェイクと25ツールのリストは成功しますが、すべてのツール呼び出しは失敗します。 - Composioはキーが入力されたかどうかを確認し、Scrapelessがそれを受け入れるかどうかは確認しません。 ツールキットを追加する前にキーとヘッダー値を確認し、その後に1回のツール呼び出しで確認してください。
- ツールキットは1つのComposioプロジェクトに属します。 その
CUSTOM_スラグをセッションに追加し、session.mcp.urlを任意のMCPクライアントに渡します。 - Scrapelessの無料プランでキーを取得し、数分でツールキットを追加してください。
Composioのセッションは、多くのアプリで認証されたツールをエージェントに提供し、資格情報はComposioの側で保持されます。セッションに含まれていないものは、今日のようにページがレンダリングされたり、Google検索の結果のようなライブウェブです。Scrapeless MCPサーバーはそれらをツールとして提供し、ComposioのカスタムMCP機能により、セッションは組み込みツールキットの横でそれらを呼び出すことができます。
このガイドでは、ダッシュボードダイアログを介してScrapelessを追加し、次にセッションでツールキットを使用します。ほとんどの作業は1つのフォームです。注意が必要な部分はヘッダーです。なぜなら、誤ったヘッダーフォーマットはツールが実行されるまで接続されているように見えるからです。
ScrapelessがカスタムMCPツールキットとしてComposioに参加する理由
ComposioのカタログにはComposioが公開するツールキットが含まれており、Scrapelessはその中には含まれていません。カタログ外のサービスについては、ComposioのカスタムMCPガイドがルートを説明しています。公共のHTTPS URLと認証スキームにより、リモートMCPサーバーを登録し、ComposioはCUSTOM_スラグ付きのツールキットを作成し、サーバーのツールを同期し、接続されたアカウントの資格情報を使用して各ツール呼び出しをサーバーにプロキシします。
これには3つの制限があります。カスタムMCPは実験的であり、Composioはそのセットアップフローと契約が変更される可能性があると言います。ツールキットはそれを登録するComposioプロジェクトにスコープされます。そして、Composioはサーバーをホストしないため、サーバーはHTTPS経由で到達可能でなければなりません。Scrapelessはホストされたエンドポイントであり、あなたのマシン上で何も実行されていません。
同じガイドでは、登録がAPI専用であり、ダッシュボード管理が近日公開予定であると説明しています。2026年9月のComposioダッシュボードには、カスタムMCP追加ダイアログがすでに表示されており、ベータおよびMCP専用とラベル付けされています。このダイアログは、このガイドが従うルートです。APIルートはFAQでカバーされています。
ScrapelessがComposioセッションに追加するもの
サーバーは25のツールを公開しており、仕事ごとにグループ化されています。
scrape_markdown、scrape_html、およびscrape_screenshotは、1回の呼び出しでレンダリングされたページをMarkdown、生のHTML、または画像として返します。- 16の
browser_*ツールは、browser_create、browser_gotoからbrowser_click、browser_type、browser_snapshotに至るまで、段階的にクラウドブラウザセッションを推進します。 crawl_start、crawl_result、およびcrawl_cancelはバックグラウンドでクロールを実行し、後でそれを収集します。google_searchおよびgoogle_trendsは検索結果とトレンドデータを返し、ai_scraperはChatGPT、Gemini、PerplexityなどのAIアシスタントからの回答をキャプチャします。
すべての25のツールは1つのツールキットとして提供されます。デフォルトのセッションでは、Composioのガイドは、エージェントがツール検索を通じてカスタムツールを発見し、ツールルーターを介してそれらを実行すると述べています。これは、組み込みツールキットに到達する方法と同じです。
前提条件
- プロジェクトを持つComposioアカウント。カスタムMCPツールキットは1つのプロジェクトに属します。
- ScrapelessダッシュボードからのScrapeless APIキー。Composio専用のキーは、他の統合に触れることなくローテーション可能です。
- 標準ライブラリのみを使用するStep 1の確認のためのPython 3。
- Step 4のために、Composio Python SDK(このガイドでは
composio0.21.1を使用)と、あなたのComposioプロジェクトのAPIキー。Step 4のセッションコードは、このガイドのためにまだComposioプロジェクトに対して実行されていません。
ステップ1:キーとヘッダー値を確認する
Composioのガイドでは、計画を立てる価値のある既知のギャップがリストされています:APIキーサーバーを接続する際に、セットアップはキーが提供されたかどうかを確認し、リモートサーバーがそれを受け入れるかどうかは確認しません。Scrapelessは第2の盲点を追加します。なぜなら、MCPハンドシェイクに応答し、任意のキー値のためにツールをリストするからです。誤ったキーや誤ったヘッダーフォーマットは、ツールが実行されるまで表示されません。
このスクリプトは、x-api-token ヘッダーのキーを使用して MCP クライアントが送信するリクエストを送信し、ツールをリストし、次に scrape_markdown を一度呼び出します。これは、MCP ストリーミング HTTP トランスポート、POST 経由の JSON-RPC 単一エンドポイントを遵守し、Python 標準ライブラリ以外は必要ありません:
python
import json
import os
import urllib.request
URL = "https://api.scrapeless.com/mcp"
PREFIX = os.environ.get("HEADER_PREFIX", "")
HEADERS = {
"Content-Type": "application/json",
"Accept": "application/json, text/event-stream",
"x-api-token": f"{PREFIX} {os.environ['SCRAPELESS_API_KEY']}".strip(),
}
def post(payload, session_id=None):
headers = dict(HEADERS)
if session_id:
headers["Mcp-Session-Id"] = session_id
request = urllib.request.Request(URL, data=json.dumps(payload).encode(), headers=headers)
with urllib.request.urlopen(request, timeout=120) as response:
body = response.read().decode()
session_id = response.headers.get("Mcp-Session-Id") or session_id
events = [line[5:].strip() for line in body.splitlines() if line.startswith("data:")]
return session_id, json.loads(events[-1]) if events else None
session, init = post({
"jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": {"protocolVersion": "2025-06-18", "capabilities": {},
"clientInfo": {"name": "header-check", "version": "1.0"}},
})
post({"jsonrpc": "2.0", "method": "notifications/initialized"}, session)
_, listing = post({"jsonrpc": "2.0", "id": 2, "method": "tools/list"}, session)
_, result = post({
"jsonrpc": "2.0", "id": 3, "method": "tools/call",
"params": {"name": "scrape_markdown", "arguments": {"url": "https://example.com"}},
}, session)
server = init["result"]["serverInfo"]
text = "".join(part.get("text", "") for part in result["result"]["content"])
print(server["name"], server["version"])
print("tools listed:", len(listing["result"]["tools"]))
if text.startswith("Failed to fetch data"):
print("key rejected:", text[:20])
else:
print(f"key accepted: {len(text)} characters of Markdown")
SCRAPELESS_API_KEY としてエクスポートしたキーを使い、出力します:
text
scrapeless-mcp-server 0.2.0
tools listed: 25
key accepted: 184 characters of Markdown
次に HEADER_PREFIX=token をエクスポートして再実行します。このスクリプトは、キーの前に token とスペースを置き、プレフィックス付きヘッダー値の形を取ります:
text
scrapeless-mcp-server 0.2.0
tools listed: 25
key rejected: Failed to fetch data
ハンドシェイクとツールのカウントは、両方の実行で同一です。ツール呼び出しだけがそれらを区別し、Bearer としてのプレフィックスは同じ方法で失敗します。
ステップ 2: Scrapeless を追加するカスタム MCP を追加
Composio ダッシュボードで、Add Custom MCP を開き、「リモート MCP サーバーからツールキットを作成」というタイトルのダイアログを表示し、必要事項を入力します:
| フィールド | 値 |
|---|---|
| 表示名 | Scrapeless |
| MCP サーバー URL | https://api.scrapeless.com/mcp |
| 認証 | API キー |
| ヘッダー名 (詳細設定の下) | x-api-token |
| ヘッダー プレフィックス (詳細設定の下) | 空のままにする |
次に、Add を選択します。
ヘッダープレフィックスは注意が必要なフィールドです。これは、Bearer のように認証情報の前にスキームワードを必要とする API 用に存在します。Scrapeless は x-api-token 値全体をキーとして読み取るため、いかなるプレフィックスも有効なキーを拒否されるキーに変えてしまいます。これはステップ 1 の二回目の実行で示されました。
これらの設定を正しくしてから保存してください。Composio の API では、ヘッダー形式はツールキットの認証スキームの一部であり、カスタム MCP ガイドによれば、サーバー URL および認証スキームは登録後に変更できません。試みは 409 Conflict を返します。プレフィックス付きで保存されたツールキットを修正するには、そのページで Delete を使用し、再度追加します。カスタムツールキットを削除すると、その認証設定や接続アカウントも削除されるため、後でアカウントを再度接続する必要があります。
今すぐこれを設定していますか? Scrapeless の無料プラン は接続と最初のツール呼び出しをカバーしています。
ステップ 3: アカウントを接続し、ツールを同期させる
API キーのツールキットは、アカウントが接続されるまで呼び出すものはなく、ここにキーが入ります。ステップ 2 の空のヘッダープレフィックスは、キーの前に何も置かれないことを意味します。接続すると、「Composio があなたの」およびツールキット名というタイトルのページが開き、単一の必須 API Key フィールドが表示されます。そこで Scrapeless API キーを貼り付けて、Connect Account を選択します。Composio は接続されたアカウントにキーを保存し、Scrapeless に送信する全リクエストの x-api-token ヘッダーに配置します。
そのアカウントがアクティブになると、最初の同期がバックグラウンドで開始します。Scrapeless ページに戻ると、Connected Accounts にアカウントが Active としてリストされ、Available actions には「Ai scraper」や「Browser click」など、各 Scrapeless ツールのための 25 の項目が表示されます。後の接続ではツールキットを再度同期しないため、Scrapeless がツールを追加した際には、そのページで Sync を使用します。カスタムツールキットは最大 500 ツールを保持します。
同期されたツールリストは、Composio がサーバーに到達したことを証明します。ただし、これはステップ 1 で示された理由からキーを証明するものではなく、これが最後のステップでツール呼び出しで終わる理由です。
今、キーは第三者とともに存在します。OWASP のシークレット管理ガイダンス は、回転をルーチンと見なし、Composio 専用のキーは他のものに影響を与えずに回転できるものです。
ステップ 4: セッションでツールキットを使用する
ツールキットのスラッグをセッションに追加します。mcp=True を使用すると、セッションは任意の MCP クライアントが使用できるホストされた MCP サーバーをも公開します。
注: このコードは Composio Python SDK 0.21.1 と Composio のセッションガイドに従っており、まだこのガイドのために Composio プロジェクトで実行されていません。
COMPOSIO_API_KEYをプロジェクトの API キーに設定する必要があります。
python
from composio import Composio
composio = Composio() # reads COMPOSIO_API_KEY from the environment
session = composio.sessions.create(
user_id="user_123",
toolkits=["CUSTOM_SCRAPELESS"],
connected_accounts={"CUSTOM_SCRAPELESS": ["ca_your_connected_account_id"]},
mcp=True,
)
print(session.mcp.url)
CUSTOM_SCRAPELESS と異なる場合は、ツールキットページに表示されているスラッグを使用してください。Composio はツールキットを登録する際に CUSTOM_ プレフィックスを追加します。connected_accounts エントリは、呼び出しが実行されるアカウントをピン留めします。ツールキットの認証設定にツールルーターの一致が有効になっていない限り、セッションは独自に user_id によってアカウントを一致させることはなく、そうでない場合は呼び出しが NoActiveConnection で失敗します。アカウントのピン留めはどちらでも機能します。
ComposioのMCPを介したセッションに関するガイドでは、OpenAI Agents SDKやClaude Agent SDKなどのフレームワークに対して、クライアントのMCP設定にsession.mcp.urlおよびsession.mcp.headersを渡します。ヘッダーにはそのURLの資格情報が含まれているため、ログを取らずにクライアントに渡してください。
次に、エージェントに1つのチェック可能なジョブを与えます:
text
Use the Scrapeless scrape_markdown tool to fetch https://example.com
and reply with the first heading of the returned page, quoted exactly.
動作するセットアップは"# Example Domain"で応答します。Failed to fetch dataを引用した返信は、キーまたはヘッダーのプレフィックスに戻ります。
一般的な問題の修正
| あなたが見るもの | 原因 | 修正 |
|---|---|---|
ツールが同期され、すべての呼び出しがFailed to fetch dataを返します |
ヘッダープレフィックスが記入されているか、無効なキー | ツールキットを削除し、空のプレフィックスで追加するか、有効なキーでアカウントを接続します |
| ツールキットにツールが表示されない | アクティブな接続アカウントがまだない | アカウントを接続します。最初の同期が失敗した場合は同期を使用してください |
セッションからのNoActiveConnection |
認証設定がuser_idによってアカウントと一致しない |
connected_accountsを介してアカウントを渡します |
URLまたは認証を変更する際の409 Conflict |
両方とも登録後に固定されます | ツールキットを削除し、再登録します |
GET /api/v3/tools?toolkit_slug=CUSTOM_…からの空のツールリスト |
v3 APIがピン留めされたツールキットバージョンを読み取ります | toolkit_versions=latestを追加するか、v3.1 APIを使用します |
401 Unauthorized: Missing x-api-token header |
ヘッダー名がx-api-tokenではありません |
ヘッダー名をx-api-tokenとしてツールキットを登録します |
サーバーが公開する内容については、Scrapeless MCPサーバーの発表をお読みください。Browser MCPのドキュメントには設定リファレンスが含まれ、Scraping APIページにはツールの背後にいるアクターが紹介され、料金では呼び出しのコストが示されています。
結論
ScrapelessをComposioに追加するには1つのダイアログが必要です:表示名、https://api.scrapeless.com/mcp、APIキー認証、x-api-tokenをヘッダー名として、空のヘッダープレフィックスを設定します。あなたのキーでアカウントを接続し、ツールを同期させ、CUSTOM_ツールキットをセッションに追加します。
注意が必要なのは、同期と動作の間のギャップです。Composioはキーが入力されたことを確認し、Scrapelessは任意のキーに対してツールをリストアップするため、プレフィックスのミスは両方のチェックを通過します。ツールキットを追加する前にキーのチェックを実行し、その後1件の実際のツール呼び出しを実行すれば、セットアップがエンドツーエンドで証明されます。
あなたのComposioエージェントにウェブのライブビューを提供する準備はできていますか?Scrapelessの無料プランを始めるをクリックしてツールキットを追加してください。
よくある質問
Q: ComposioにカスタムMCPサーバーを追加できますか?
はい。カスタムMCPはリモートサーバーをそのHTTPS URLと認証スキームによって登録し、CUSTOM_スラッグを持つプロジェクトスコープのツールキットに変えます。ダッシュボードにはそのためのカスタムMCPの追加ダイアログがあります。また、ComposioのAPIはカスタムツールキットエンドポイントを通じて同じ登録を提供します。
Q: Scrapelessのヘッダープレフィックスには何を入れますか?
何も入れません。ヘッダー名をx-api-tokenに設定し、プレフィックスを空のままにします。なぜなら、Scrapelessはヘッダー全体の値をキーとして読み取るからです。tokenやBearerのプレフィックスは、ツールがまだ同期していても、すべてのツール呼び出しを失敗させます。
Q: ComposioにおけるScrapeless APIキーの入力はどこで行いますか?
ツールキットのアカウントを接続する際の接続ページで行います。カスタムMCPの追加ダイアログではヘッダー名とプレフィックスのみが定義され、接続ページではAPIキーを求められ、Composioはその値をx-api-tokenヘッダーとして送信します。
Q: シンクされているのにScrapelessツールのすべての呼び出しが失敗するのはなぜですか?
ツールのリストは任意のキー値で機能するため、同期されたツールキットは資格情報を証明しません。Failed to fetch dataを返す呼び出しは、ヘッダー値が間違っていることを意味します:ヘッダープレフィックスが入力されているか、無効なキーです。ステップ1からチェックを実行し、どちらなのかを確認してください。
Q: ツールキットを追加した後にヘッダー設定を変更できますか?
その場ではできません。Composioは、登録後にサーバーURLと認証スキームを固定されたものとして扱います。ツールキットを削除し、正しい設定で再追加し、アカウントを再接続してください。削除は接続を取り除きます。
Q: ダッシュボードの代わりにComposioのAPIを通じてScrapelessを登録できますか?
はい。POST /api/v3.1/custom/toolkits/upsert はサーバーのURLと API_KEY 認証スキームを headers オブジェクトで受け取ります。Composioは、ヘッダー名が Authorization 以外でも許可されており、1つのヘッダー値が {{generic_api_key}} を含む限り、Scrapelessのエントリーは "x-api-token": "{{generic_api_key}}" です。APIキーサーバーの場合、ガイドはアカウントが接続できる前に別の認証構成ステップを追加します。
Q: Scrapelessツールキットは私のすべてのComposioプロジェクトで利用可能ですか?
いいえ。カスタムMCPツールキットは、それを登録したプロジェクトにスコープされています。必要な各プロジェクトにScrapelessを追加してください。
Q: Claude、Cursor、または他のMCPクライアントはComposioを通じてScrapelessを使用できますか?
はい。mcp=True でセッションを作成し、クライアントに session.mcp.url と session.mcp.headers を与えます。クライアントはその後、Composioセッションを通じてScrapelessツールに到達します。
Q: ScrapelessはComposioにいくつのツールを追加しますか?
25:3つの scrape_* ツール、16の browser_* ツール、3つの crawl_* ツール、さらに google_search、google_trends および ai_scraper。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



