マストラAIエージェントをリアルタイムウェブアクセス機能で有効にする方法
Lead Scraping Automation Engineer
主なポイント:
- Mastraエージェントは、ツールを接続するまでライブウェブを認識しません — MCPは最もクリーンな方法です。 Mastra
Agentはそのモデルと与えられたツールで推論します。Scrapeless MCPサーバーを指し示すことで、エージェントはライブのGoogle検索、JavaScriptのレンダリング、そして手動でスクレイパーを書くことなく完全なアンチ検出クラウドブラウザーを得ることができます。 - 1つの
MCPClientとawait mcp.listTools()ですべてが繋がります。scrapelessサーバーエントリーでMCPClientを構築し、await mcp.listTools()をnew Agent({ tools })に渡すと、エージェントはGoogle SERPのスクレイパー、トレンドのスクレイパー、HTML/Markdown/スクリーンショットのヘルパー、そして16のブラウザー自動化ツールを得ます — すべて型付けされたTypeScriptツールとして。 - エージェントは、単純なプロンプトから検索、レンダリング、ブラウザーを操作します。 自然言語のタスクで
agent.generate(...)またはagent.stream(...)を呼び出すと、Mastraはトレーニングカットオフの知識に制限されることなく、適切なScrapelessツールコールを段階的に組み合わせます。 - 居住用プロキシとアンチ検出はクラウド側で処理されます。 すべてのリクエストは195以上の国にある居住用プロキシを介してScrapelessのアンチ検出クラウドブラウザーを通過するため、エージェントは商業サイト上でレンダリングされた使える応答を得られ、あなたのマシンでプロキシまたはフィンガープリンティングの設定を必要としません。
- SERP、ステートレススクレイピング、ブラウザー自動化の21のツール。 Scrapeless MCPサーバーは、
google_search、google_trends、scrape_html/scrape_markdown/scrape_screenshot、さらに16のbrowser_*ツールを公開します — Mastraがそれらをロードすると、scrapeless_<tool>という名前空間で、エージェントのプランナーが各ターンから引き出す形です。 - stdioまたはHTTPストリーミング転送。
npxでローカルにサーバーを起動するか、同じMCPClientをストリーミング可能なHTTPエンドポイントに向けてサーバーレス関数、リモートワーカー、CIランナーに接続します。 - 無料で始められます。 新しいScrapelessアカウントには無料のスクレイピングブラウザーランタイムが含まれています — app.scrapeless.comでサインアップしてください。
はじめに:ライブウェブをついに読み取れるTypeScriptエージェント
MastraはAIエージェントを構築するためのオープンソースのTypeScriptフレームワークです。モデル、指示セット、呼び出せるツールを定義し、その後agent.generate(...)またはagent.stream(...)で独自のコードから操作します。これは、Nodeやサーバーレスアプリ内でエージェントを出荷するためのクリーンで型安全な方法です。Mastraエージェントが独自にできないのはライブウェブを視認することです。その知識はモデルのトレーニングカットオフと、明示的に与えられたツールで止まります。
Mastraはその境界に対して慎重です:エージェントの世界に対する到達は、あなたが付加するツールのセットと正確に一致します。それにより、ツール層がリアルタイムウェブアクセスを追加する場所となります — そしてモデルコンテキストプロトコル(MCP)はそれを実現するための標準で、フレームワークに依存しない方法です。Mastraは@mastra/mcpパッケージを通じて一級のMCPサポートを提供しているため、任意のMCPサーバーはネイティブで型付けされたMastraツールのセットとなります。一度接続するまで、エージェントは現在のSERPを取得したり、競合の価格ページを読み取ったり、最新の変更ログを確認したり、JavaScript専用のアプリをレンダリングしたりすることはできません。
この投稿は、Scrapeless MCPサーバーをMastraに接続することでそのギャップを埋めます。一つのMCPClientがエージェントにGoogle検索、JavaScriptレンダリング、フルアンチ検出クラウドブラウザーを提供し、すべては既にagent.generate(...)に渡す自然言語のプロンプトを通じてアクセス可能です。同じScrapelessの表面を別のMCPクライアントから利用するには、Piエージェント統合を参照してください。
これでできること
- TypeScriptエージェントからのライブSERPリサーチ。 エージェントにクエリを用いて
google_searchを実行させ、トップ結果をJSONで返させることで、調査が別のブラウザタブではなくあなたのアプリ内部で行えます。 - 競合および価格のスナップショット。 プロンプトにURLを渡し、エージェントにページをレンダリングさせ、プラン名、価格、機能を構造化されたレコードに抽出させることができます。
- コードにフィードバックするドキュメントや変更ログの参照。 エージェントにライブラリの現在のドキュメントやリリースノートをきれいなマークダウンとして取得させ、レンダリングされたテキストに基づいて推論させます。
- マーケットやトレンドチェック。
google_trendsを使用して、ターゲット地域のトピックに関する関心信号を引き出し、現在の証拠を使って機能コピー、コンテンツプラン、実験アイデアを種まきできます。 - 型付けされたレコードへのJavaScriptページ抽出。 エージェントをシングルページアプリに向けると、クラウドブラウザーがそれを水分補給し、エージェントは結果をワークフローで使用する型オブジェクトに解析します。
- マルチステップブラウザフロー。
browser_goto、browser_click、browser_type、browser_scrollを連結することで、エージェントがページネーションを歩いたり、パネルを展開したり、ウィザードにステップする前に抽出することができます。 - レビューのためのスクリーンショットキャプチャ。
scrape_screenshotまたはbrowser_screenshotを使用して、エージェントがあなたのアプリに戻すことができる画像としてレンダリングされたページをキャプチャします。 - 検索-その後読み取りパイプライン。
google_searchとscrape_markdownを組み合わせて、エージェントがトップ結果を見つけ出し、それぞれを読み取り、1回のエージェントのターンで要約します。
Scrapeless MCP サーバの利点
Scrapeless MCP サーバは、AI エージェントとライブ Web の間のカスタマイズ可能で検出回避型のブリッジです。特に Mastra にとって、以下の利点があります:
- JavaScript レンダリングを備えた検出回避クラウドブラウザ。 ページは抽出の前に完全な Scrapeless Scraping Browser で水和されるため、SPA、無限スクロールフィード、レイジーロードされたパネルが
browser_goto+browser_get_htmlの一級のターゲットになります。 - 195以上の国の住宅プロキシ。 地理的なクエリは、ローカルユーザーが見るであろうリストを返し、プロキシの出口はすべて Scrapeless 側で処理されます。
- 1つの stdio コマンドで
npxを使用、スクレイパーコードは不要。 サーバーはnpx -y scrapeless-mcp-serverから子プロセスとして起動されます。プロジェクトにビルド、ホスト、またはインポートする必要があるものはMCPClientだけです。 - SERP、ステートレススクレイピング、完全なブラウザ自動化を網羅する21のツール。
google_searchとgoogle_trendsは SERP データをカバーし、scrape_html/scrape_markdown/scrape_screenshotはワンショットページフェッチをカバーし、16のbrowser_*ツールがステートフルなナビゲーション、クリック、入力、スクロール、スクリーンショットをカバーします。 - ツールはネイティブの Mastra ツールとして提供されます。
@mastra/mcpは MCP ツールを Mastra 自身のツールタイプに適応させるため、Scrapeless の表面は手書きのツールとまったく同じように表示されます — 型、ネームスペース、エージェントのプランナー用に準備されます。
無料プランはこれを設定し、実際のプロンプトを実行するのに十分です。成長した際には 料金ページ でクォータを比較してください。無料プランで app.scrapeless.com から API キーを取得してください。
前提条件
- Node.js 18 以上 ワークステーション上 — Mastra は最新の Node をターゲットにしており、stdio MCP サーバーは
npxで生成されます。 - モデルプロバイダーが設定された Mastra プロジェクト。 Mastra の
Agentはmodelを必要とし、エージェントループはツールコールを実行する前に接続したプロバイダーから動作するモデルを必要とします。 - Scrapeless アカウントと API キー — 無料プランでサインアップし、設定 → API キー管理 からキーをコピーします。
- TypeScript の基本的な知識 — 全体の設定は 2 つのパッケージと小さな
MCPClient定義で構成されています。
Scrapeless を Mastra に接続する
設定は5つのステップで、各ステップは独立して検証可能です。
1. Mastra MCP とコアパッケージをインストール
MCP クライアントパッケージとエージェントコアをプロジェクトに追加します:
bash
npm install @mastra/mcp @mastra/core
@mastra/mcp は MCP サーバに接続する MCPClient クラスを提供し、@mastra/core はツールを取り付けるための Agent クラスを提供します。
2. MCPClient(stdio)を設定
単一の scrapeless サーバエントリを持つ MCPClient を作成します。 command が存在する場合、Mastra は stdio トランスポートを自動的に検出し、サーバーを子プロセスとして起動します:
ts
// npm install @mastra/mcp @mastra/core
import { MCPClient } from "@mastra/mcp";
const mcp = new MCPClient({
id: "scrapeless-client",
servers: {
scrapeless: {
command: "npx",
args: ["-y", "scrapeless-mcp-server"],
env: { SCRAPELESS_KEY: process.env.SCRAPELESS_KEY! },
},
},
});
ここでの重要な詳細は、Scrapeless MCP サーバは SCRAPELESS_KEY からキーを読み取ることであり、SCRAPELESS_API_KEY ではありません。Scrapeless CLI と SDK は SCRAPELESS_API_KEY を使用しますが、MCP サーバは文書化された例外です。キーは環境変数に保持し(export SCRAPELESS_KEY=...)、ハードコーディングするのではなく、env オブジェクトを通して渡してください。サーバのソースは github.com/scrapeless-ai/scrapeless-mcp-server にあります。
3. または HTTP ストリーミングトランスポートを使用
ホストが npx を確実に起動できない場合 — サーバレス関数、リモートワーカー、または CI サンドボックス — 同じ MCPClient を Scrapeless HTTP エンドポイントに向け、ローカルプロセスの代わりにします。 url を渡し、requestInit 経由でヘッダーとしてキーを設定します:
ts
const mcp = new MCPClient({
servers: {
scrapeless: {
url: new URL("https://api.scrapeless.com/mcp"),
requestInit: { headers: { "x-api-token": process.env.SCRAPELESS_KEY! } },
},
},
});
マストラでは、urlを指定すると、まずストリーミング可能なHTTPを試み、自動的にレガシーSSEトランスポートにフォールバックします。同じキーの値は両方のモードで機能します; HTTPストリーミングでは、SCRAPELESS_KEY環境変数の代わりに、x-api-tokenヘッダーとして渡されます。開発者ワークステーションでは、Stdioが適切なデフォルトであり、長寿命の子プロセスを維持することが難しい場所では、HTTPストリーミングが適切なデフォルトです。
4. エージェントにツールをアタッチする
await mcp.listTools()を使ってツールを読み込み、それを新しいAgentに直接渡します。この静的アプローチでは、ツールは構築時に1回解決され、名前空間がserverName_toolNameになります:
ts
import { Agent } from "@mastra/core/agent";
const agent = new Agent({
id: "web-agent",
name: "Web-Aware Agent",
instructions: "Scrapelessツールを使ってライブウェブを検索および読む。",
model: "<your-provider-model>",
tools: await mcp.listTools(), // -> scrapeless_google_search, scrapeless_scrape_markdown, scrapeless_browser_* ...
});
プロバイダーが公開するモデルを使用してください — マストラのAgentは任意のプロバイダーモデルIDを受け入れ、ツールが機能するために特定のモデルまたはバージョンは必要ありません。
動的な代替手段として、マストラはawait mcp.listToolsets()も提供しており、これにより呼び出しごとにツールが解決され、名前空間がserverName.toolNameになります。構築時ではなく呼び出し時にツールセットを渡してください:
ts
const result = await agent.stream(prompt, {
toolsets: await mcp.listToolsets(),
});
listTools()は1つのクライアントがアプリ全体を提供するときの最も簡単な方法です。listToolsets()は、各リクエストが異なる資格情報またはサーバーの選択肢を持つ場合に適しています。クライアントが終了したら、await mcp.disconnect()を使用してクリーンアップします。
5. 21のツールを列挙して確認する
ツールを解決し、そのキーを検査することで、ハンドシェイクが完了し、サーバーがその完全な表面を報告していることが確認できます:
ts
const tools = await mcp.listTools();
console.log(Object.keys(tools));
出力はサーバーの21のツールをリストします。それぞれはscrapeless_<tool>という名前空間になります — Googleデータツール(scrapeless_google_search, scrapeless_google_trends)、ワンショットページヘルパー(scrapeless_scrape_html, scrapeless_scrape_markdown, scrapeless_scrape_screenshot)、およびクラウドブラウザのプリミティブ(scrapeless_browser_create, scrapeless_browser_goto, scrapeless_browser_get_html, scrapeless_browser_get_text, scrapeless_browser_click, scrapeless_browser_type, scrapeless_browser_press_key, scrapeless_browser_scroll, scrapeless_browser_scroll_to, scrapeless_browser_screenshot, scrapeless_browser_snapshot, scrapeless_browser_wait, scrapeless_browser_wait_for, scrapeless_browser_go_back, scrapeless_browser_go_forward, scrapeless_browser_close)。
実際にこれを使用する方法:マストラエージェントにプロンプトを与える
MCPサーバーを接続すると、エージェントをコード内で呼び出してライブウェブデータを取得できます — ツールコールを手動で書く必要はありません。エージェントは、Scrapeless MCPサーバーが公開するツールリストを読み取り、必要に応じてscrapeless_google_search、scrapeless_scrape_markdown、またはscrapeless_browser_*ツールを選択し、自然言語タスクから順にそれらを組み合わせます。あなたの側でツールのJSONを作成する必要はありません。一度のターンをagent.generate(prompt)で実行し、トークンごとにストリームする場合はagent.stream(prompt)を使用します。
コピペできるプロンプト
| プロンプト | エージェントが行うこと |
|---|---|
"vector database benchmarks 2026の上位Google結果を見つけてJSONとして返してください。" |
scrapeless_google_searchでq、hl、gl → タイプされた結果行。 |
"現在、米国でdeveloper toolsについての検索トピックはどれが上昇していますか?" |
scrapeless_google_trends。 |
"https://example.com/docsのページをクリーンなマークダウンとして取得してください。" |
scrapeless_scrape_markdown。 |
"https://pricing.example.comを開いてみてください。それはJavaScriptアプリです — レンダリングしてプラン名、価格、機能をJSONとして抽出してください。" |
scrapeless_browser_create → scrapeless_browser_goto → scrapeless_browser_get_html → タイプされた抽出。 |
"https://a.example.com/pricingとhttps://b.example.com/pricingの価格ページを比較して、どこが異なるか教えてください。" |
scrapeless_browser_create → scrapeless_browser_goto (A) → scrapeless_browser_get_html → scrapeless_browser_goto (B) → scrapeless_browser_get_html → 差分。 |
"https://example.com/landingの全ページスクリーンショットを撮ってください。" |
scrapeless_scrape_screenshot。 |
"https://example.comのレンダリングされたHTMLを取得して、エージェントがマークアップを読むことができるようにします。" |
scrapeless_scrape_html。 |
"https://example.com/jobsを開き、リスティングが読み込まれるのを待ち、ページをスナップショットし、次にすべての仕事のタイトルと場所をJSONとして抽出してください。" |
scrapeless_browser_create → scrapeless_browser_goto → scrapeless_browser_wait_for → scrapeless_browser_snapshot → タイプされた抽出 → scrapeless_browser_close。 |
作業例
あなたが書く(TypeScriptアプリでの単一呼び出し):
ts
const result = await agent.generate(
「Scrapeless google_searchツールを使って「mastra ai github」のトップ結果を探し、最初の3つを{title, link}のJSON配列として返します。」
- ツールの引数はキャメルケースです:`sessionId`、`proxyCountry`、および同様のフィールドは、その名前の通り正確に渡してください。
- `proxyCountry` はリクエストであり、保証ではありません — それはあなたのアカウントに設定された地域に従う場合がありますので、地理的ターゲティングが重要な場合は出力地域を確認してください。
- ツール出力の値はコンテンツに依存します:結果の数、順序、およびスニペットのテキストは、ライブクエリによって異なります。
---
## 結論:TypeScript から検索、レンダリング、ブラウズ
全体の統合は、1つの `MCPClient` と自然言語プロンプトに還元されます。`scrapeless` サーバーエントリを使い、`await mcp.listTools()` を `new Agent({ tools })` に渡し、あなたのキーを `SCRAPELESS_KEY` に設定することで、Mastra エージェントはライブGoogle検索、JavaScriptレンダリング、そして完全なアンチデtectionクラウドブラウザーを獲得します — エージェントが自力で提供しないウェブレイヤーそのものです。あなたがタスクを説明し、エージェントがツールを選択します。
他のエージェントを接続している場合、同じScrapeless MCPサーバーも利用できます:完全なツールリファレンスについては、[Pi Agent 統合](https://www.scrapeless.com/ja/blog/pi-agent-scrapeless-mcp?utm_source=website&utm_medium=blog&utm_campaign=aiagent&utm_term=mastra-scrapeless-mcp) と [Scrapeless MCPサーバーの概要](https://www.scrapeless.com/ja/blog/scrapeless-mcp-server?utm_source=website&utm_medium=blog&utm_campaign=aiagent&utm_term=mastra-scrapeless-mcp) をご覧ください。APIキーは `SCRAPELESS_KEY` に保管し、ローカル開発には stdio トランスポートを優先し、ホスティングされたランタイムにはHTTPストリーミングを選択し、単一静的クライアントには `listTools()` を、呼び出しごとの動的セットには `listToolsets()` を選択して、エージェントにツールを選ばせます。完全なリファレンスは [docs.scrapeless.com](https://docs.scrapeless.com?utm_source=website&utm_medium=blog&utm_campaign=aiagent&utm_term=mastra-scrapeless-mcp) にあります。
---
## AIを活用したデータパイプラインを構築する準備はできましたか?
私たちのコミュニティに参加して無料プランを請求し、Mastra + Scrapeless MCP エージェントを構築している開発者とつながりましょう:[Discord](https://discord.gg/VU2vtbq7Q2) · [Telegram](https://t.me/scrapeless)。
[app.scrapeless.com](https://app.scrapeless.com/passport/login/?utm_source=website&utm_medium=blog&utm_campaign=aiagent&utm_term=mastra-scrapeless-mcp) にサインアップして無料のスクレイピングブラウザランタイムを入手し、上記の統合をチームが必要とするSERP、ページ、および地域に適応させてください。完全なリファレンスは [docs.scrapeless.com](https://docs.scrapeless.com?utm_source=website&utm_medium=blog&utm_campaign=aiagent&utm_term=mastra-scrapeless-mcp) にあります。
---
## FAQ
### Q: なぜMastraエージェントはウェブアクセスにMCPサーバーを必要とするのですか?
Mastraの`Agent`は、それに接続するツールしか呼び出すことができず、組み込みのウェブ検索やブラウザーがないからです。MCPはその機能を追加するための標準的でフレームワークに依存しない方法であり、`@mastra/mcp`は任意のMCPサーバーをネイティブなMastraツールに適応させます。Scrapelessを接続することで、エージェントは一度の操作でライブGoogle検索、レンダリングされたページアクセス、完全なアンチデテクションクラウドブラウザーを手に入れます。
### Q: `listTools()` と `listToolsets()` の違いは何ですか?
`await mcp.listTools()`はツールを一度解決し、名前空間付きで`serverName_toolName`を返します(例えば`scrapeless_google_search`)。その結果を構造体の時に`new Agent({ tools })`に渡します。`await mcp.listToolsets()`は呼び出しごとにツールを解決し、それに名前空間`serverName.toolName`を付けます;その結果は呼び出し時に`agent.stream(prompt, { toolsets })`または`agent.generate(prompt, { toolsets })`を介して渡します。単一静的クライアントには`listTools()`、各リクエストが異なる認証情報やサーバーの選択を持つ可能性がある場合には`listToolsets()`を使用します。
### Q: Scrapelessキーはどの環境変数に保存されますか?
`SCRAPELESS_KEY`です。これは文書化された例外です — Scrapeless CLIとSDKは`SCRAPELESS_API_KEY`を読み取りますが、MCPサーバーは`SCRAPELESS_KEY`を読み取ります。stdio設定では、`env`オブジェクトを介して`process.env.SCRAPELESS_KEY`として渡します;HTTPストリーミングモードでは、同じ値を`x-api-token`ヘッダーとして送信します。
### Q: stdioとHTTPストリーミング — それぞれをいつ使用すべきですか?
サーバーがアプリと一緒にローカルで動作している場合はstdioを使用します:Mastraは`scrapeless-mcp-server`を子プロセスとして起動し、標準入力/出力を介して通信します。ランタイムがサーバーレスまたはリモートであり、ローカルの子プロセスを生かせない場合はHTTPストリーミング(`https://api.scrapeless.com/mcp`の`url`と、`requestInit`を介した`x-api-token`ヘッダー)を使用します。`url`を提供すると、Mastraは最初にストリーミングHTTPを試み、レガシーSSEに自動的にフォールバックします。
### Q: これは特定のモデルを必要としますか?
いいえ。Mastraの`Agent`は任意のプロバイダーモデルIDを受け入れられるので、提供するモデルを使用できます。Scrapelessツールはモデルに依存しないため、ツール呼び出しをうまく処理するモデルを選択すれば、エージェントはプロバイダーに関係なく同じ方法でScrapelessツールを構成します。
### Q: ツールはプロジェクト内でどのように型付けされますか?
`@mastra/mcp`は、各MCPツールをMastra独自のツールタイプに適応させるため、Scrapelessツールは手書きで記述したツールのように名前空間が設定され、エージェントのプランナーに準備された状態で表示されます。`tools: await mcp.listTools()`を通じてそれらをアタッチし、ツールのJSONを自分で作成する必要はありません。
### Q: エージェントを通じたウェブスクレイピングは合法ですか?
一般的に、公開されているデータのスクレイピングは許可されていますが、使用方法には責任があります。各サイトの利用規約を確認し、robots.txtを尊重し、個人データやアクセスに関するルールが管轄によって異なることを忘れないでください。疑問がある場合は、特定の使用ケースについて法的アドバイスを受けてください。
### Q: Mastraなしでこれを使えますか?
はい。Scrapeless MCPサーバーは標準的なMCPサーバーであり、MCP互換のクライアントはそれを呼び出すことができます。または、JSON-RPC(`initialize`、次に`tools/list`および`tools/call`)を介して直接操作することもできます。MastraはTypeScriptアプリのための便利機能であり、必須ではありません。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



