オートジェン + スクラップレス: MCPを介してエージェントにライブウェブツールを提供する
Lead Scraping Automation Engineer
TL;DR:
- AutoGenはScrapeless MCP Serverのツールを
mcp_server_toolsで読み込み、scrape_markdownからフルブラウザセットまでの21のツールをエージェントに渡します。 - 接続は一つのオブジェクト、
StreamableHttpServerParamsで、エンドポイントとx-api-tokenヘッダーを持ちます。ツールを読み込みまたは呼び出すためにモデルクライアントは必要ありません。 - 各ツールは
StreamableHttpMcpToolAdapterとして到着するため、エージェントに接続する前にrun_json({...}, CancellationToken())で直接呼び出すことができます。 AssistantAgent.runのみがモデルプロバイダーキーを必要とし、ツールの読み込みやscrape_markdownの呼び出しには必要ありません。- 1回の
scrape_markdownの呼び出しは、ターゲットページをMarkdown形式で返し、エージェントが推論する準備が整います。 - Scrapelessの無料プランを始めて、AutoGenエージェントに本物のウェブツールを提供しましょう。
AutoGenはMicrosoftのマルチエージェントアプリケーションのためのフレームワークであり、そのエージェントは持っているツールの能力に依存します。デフォルトでは、これらのツールはライブウェブにアクセスできません。モデルコンテキストプロトコルがそのギャップを埋めます:AutoGenをMCPサーバーにポイントすると、公開されるすべてのツールがエージェントが呼び出すことができるAutoGenツールになり、どの関数ツールとも同じインターフェースを持ちます。
このガイドはAutoGenをScrapeless MCP Serverに接続し、21のツールを読み込み、そのうちの一つを実際に呼び出し、セットをAssistantAgentに接続します — すべてライブサーバーに対して検証済みです。モデルプロバイダーキーが必要なのはエージェントの生成呼び出しだけであり、この投稿ではそのラインがどこにあるかを明示しています。
なぜScrapeless MCPか
Scrapeless MCP Serverは、エージェントが直接呼び出せるウェブスクレイピングおよびブラウザツールを公開しているため、スクレイピングレイヤーを自分で構築したりホストしたりする必要がありません。1つの接続で21のツールを提供します:コンテンツ用のscrape_markdownとscrape_html、検索データ用のgoogle_searchとgoogle_trends、キャプチャ用のscrape_screenshot、そしてクラウドブラウザを駆動するフルbrowser_*セットです。AutoGenはそれぞれをmcp_server_toolsを通じてネイティブツールに変換し、アダプターコードを書く必要はありません。
browser_*ツールはSrapelessクラウドブラウザを駆動し、エージェントはインタラクティブなページをナビゲートし、レンダリングされる内容を読むことができます。異なるフレームワークに接続された同じサーバーについては、LangChain + Scrapeless MCP投稿がLangChainの側をカバーしています。
前提条件
- Python 3.10以降。
- ダッシュボードからのScrapeless APIキーを
SCRAPELESS_API_KEYとしてエクスポート。 - エージェント実行時専用のモデルプロバイダーキー(例えば
OPENAI_API_KEY)。ツールの読み込みや呼び出しには必要ありません。
インストール
MCPの拡張とエージェントパッケージを持つAutoGenをインストールします。
bash
pip install "autogen-ext[mcp]" autogen-agentchat
シェルでScrapelessキーを設定します。実際のキーを実行時に使用し、ソースコードからはプレースホルダーを外しておきます。
bash
export SCRAPELESS_API_KEY="sk_your_key_here"
ツールを読み込む
StreamableHttpServerParamsはエンドポイントを指定し、APIキーをx-api-tokenヘッダーに持ちます。mcp_server_toolsがハンドシェイクを実行し、サーバーのツールをAutoGenツールとして返します。
python
import asyncio
import os
from autogen_ext.tools.mcp import StreamableHttpServerParams, mcp_server_tools
async def main() -> None:
params = StreamableHttpServerParams(
url="https://api.scrapeless.com/mcp",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
)
tools = await mcp_server_tools(params)
names = sorted(tool.name for tool in tools)
print("tool count:", len(names))
print("tools:", ", ".join(names))
asyncio.run(main())
ライブサーバーは21のツールを返し、設定されたのはScrapelessキーのみです。
text
tool count: 21
tools: browser_click, browser_close, browser_create, browser_get_html, browser_get_text, browser_go_back, browser_go_forward, browser_goto, browser_press_key, browser_screenshot, browser_scroll, browser_scroll_to, browser_snapshot, browser_type, browser_wait, browser_wait_for, google_search, google_trends, scrape_html, scrape_markdown, scrape_screenshot
トランスポートとメッセージレイヤーはモデルコンテキストプロトコルの仕様に従い、JSON-RPC 2.0の仕様に基づいています。ローカルサーバー用にAutoGenはStdioServerParamsも提供します;ScrapelessサーバーはホストされたHTTPエンドポイントであるため、このガイドではストリーミングHTTPパラメータを使用しています。
ツールを呼び出す
読み込まれた各ツールはStreamableHttpMcpToolAdapterであり、エージェントに渡す前に直接呼び出すことができます。run_jsonは引数とキャンセルトークンを受け取り、ツールの結果を返します。
python
import asyncio
import os
from autogen_core import CancellationToken
from autogen_ext.tools.mcp import StreamableHttpServerParams, mcp_server_tools
async def main() -> None:
params = StreamableHttpServerParams(
url="https://api.scrapeless.com/mcp",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
)
tools = await mcp_server_tools(params)
scrape_markdown = next(tool for tool in tools if tool.name == "scrape_markdown")
result = await scrape_markdown.run_json({"url": "https://quotes.toscrape.com/"}, CancellationToken())
text = result if isinstance(result, str) else str(result)
print("markdown chars:", len(text))
print("contains a quote:", "The world as we have created it" in text)
asyncio.run(main())
呼び出しはページをMarkdownとして返し、コンテンツのチェックで実際の引用が存在することを確認します。
text
markdown chars: 4424
contains a quote: True
これはエージェントが受け取る形です:推論が可能なページコンテンツです。AutoGen MCPツールリファレンスがパラメータとアダプタを全て文書化しています。
ツールをエージェントに接続する
ツールをAssistantAgentにモデルクライアントと共に渡し、エージェントはタスクが必要なときにそれらを呼び出します。これはモデルプロバイダキーが必要なステップです。
注:
AssistantAgent.runにはOPENAI_API_KEYのようなモデルプロバイダキーが必要ですが、ここでは設定されていません。21のツールを読み込み、上記の直接のscrape_markdown呼び出しをキーなしで実行できます。このブロックはその正確な形を示しています;モデルラウンドトリップのみが前提のギャップです。
python
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
async def run_agent(tools) -> None:
model_client = OpenAIChatCompletionClient(model="gpt-4o")
agent = AssistantAgent("web_agent", model_client=model_client, tools=tools)
result = await agent.run(
task="Use scrape_markdown to fetch https://quotes.toscrape.com/ and list the first three quotes with authors."
)
print(result.messages[-1].content)
実行時にモデルはタスクを読み取り、URLと共にscrape_markdownを呼び出し、すでに示されたMarkdownを受け取り、回答を書き込みます。ツールはモデルが呼ぶか、あなたが呼ぶかに関わらず同じオブジェクトです。
結論
AutoGenとScrapeless MCPサーバーは、素のエージェントからライブウェブを読み取るものへと至る短い道です。mcp_server_toolsは21のツールを読み込み、run_jsonは1つが機能することを証明し、AssistantAgentの1つのtools引数がそれら全てを接続します。エージェントの生成ステップのみがモデルキーを必要とし、そのため最初にツール全体の面を読み込み、テストできます。上記のスクリプトから始めて、エージェントに必要なツールにスコープを狭め、モデルに運転させましょう。
無料のScrapelessアカウントを作成するとAPIキーを取得し、定期的なエージェントを計画する際にはScrapelessの価格を確認してください。
FAQ
Q: AutoGenはMCPツールを読み込むのにモデルクライアントを必要としますか?
いいえ。mcp_server_toolsはハンドシェイクを実行し、Scrapeless APIキーのみを設定してツールを返し、各ツールはrun_jsonで直接呼び出すことができます。モデルクライアントはツールをAssistantAgentに接続してrunを呼び出すときのみ必要です。なぜなら、その時モデルがどのツールを呼び出すかを決定するからです。
Q: エージェントなしでMCPツールを呼び出すにはどうすればよいですか?
mcp_server_toolsから各ツールはStreamableHttpMcpToolAdapterで、run_jsonメソッドを持っています。引数の辞書とCancellationTokenを渡すと、ツールの結果が返されます。これは接続を確認し、エージェントに配線する前にツールの出力を検査する最速の方法です。
Q: HTTPの代わりにstdio MCPサーバーに接続するにはどうすればよいですか?
パラメータを入れ替えてください。サーバーコマンドを使ってStreamableHttpServerParamsの代わりにStdioServerParamsを使用し、同じmcp_server_tools呼び出しに渡します。Scrapeless MCPサーバーはホスティングされたHTTPエンドポイントであるため、このガイドではストリーム可能なHTTPパラメータを使用しています。
Q: エージェントに特定のツールだけを与えるにはどうすればよいですか?
mcp_server_toolsはリストを返すため、渡す前にフィルター処理を行ってください。エージェントにscrape_markdownとgoogle_searchだけを渡すのは、タスクがコンテンツと検索のみを必要とする場合はフル21ツールセットよりも安全です。
Q: Scrapelessサーバーはどのツールを提供していますか?
21のツールがあります:scrape_markdown、scrape_html、scrape_screenshot、google_search、google_trends、およびナビゲーション、クリック、タイピング、スクロール、クラウドブラウザでの待機のための16のツールからなるbrowser_*セットです。これらは一緒にコンテンツ抽出、検索、およびブラウザの完全なインタラクションをカバーします。
Q: ターゲットのルールによってツールを使用したスクレイピングは制約されますか?
はい。ツールは公開ページを取得しますが、それぞれのターゲットの条件とそのロボット排除プロトコルの指示を遵守する責任があります。ボリュームを制限し、データを公開に保ち、エージェントを実際に必要なツールにスコープしてください。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



