ideamans
MCP Serverideamanspublic

mastra ai agent batch example

Mastra × PlayWright MCP × GoogleスプレッドシートによるAIエージェントのバッチ処理実装例

Repository Info

0
Stars
1
Forks
0
Watchers
0
Issues
TypeScript
Language
MIT License
License

About This Server

Mastra × PlayWright MCP × GoogleスプレッドシートによるAIエージェントのバッチ処理実装例

Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.

Documentation

Mastraを用いたAIエージェントのバッチ処理の実装例

多数のWebサイトに対し、AIエージェントによる定型作業を実施するMastraを用いた実装例を示す。

  • 調査対象のサイトの管理や調査結果の記録はGoogleスプレッドシートで行う
  • Playwright MCPを用いてAIエージェントがブラウザ操作を行う
  • BRAVE Search MCPを用いて必要に応じてWeb検索を行う
  • Mastraにより、AIエージェントとワークフローの実装、上記ツール群との統合を行う

動作の様子

以下の動画で動作の様子を示す。時間がかかるため8倍速としている。

この例ではAIエージェントがGoogleスプレッドシートに示した3つのニュースサイトに順次アクセスし、「アクセスランキング」のセクションがあるか確認する。もしサイト名とURLに違いがあればWeb検索を用いて訂正し、確認した結果をGoogleスプレッドシートに記入する。

調査の内容はAIへのプロンプトと、Googleスプレッドシートで管理するデータスキーマでカスタマイズできる。

プログラムを動作させるまで

プロジェクトをgit cloneした後、以下の手順で動作を確認できる。

モジュールのインストール

pnpm install
# yarn install

環境変数ファイルの複製

  1. .env.example.env.development として複製する

Googleスプレッドシートとサービスアカウントの用意

タスクおよび結果管理用のスプレッドシートと、プログラムから編集するためのサービスアカウントを用意する。

  1. 次のスプレッドシートを自身のドライブに複製する https://docs.google.com/spreadsheets/d/18zsKxNYNU7uzq2YD2_YaHB3eVT53hch-MFR2tl-rtiw/edit?usp=sharing
  2. GCPでサービスアカウントを作成し(権限設定は不要)、JSON形式の鍵を任意のディレクトリに保存する(例 /Users/xxxx/service-account.json)
  3. スプレッドシートをサービスアカウントのメールアドレス(例 spreadsheet-access@ideamans.iam.gserviceaccount.com)に、編集者として共有する
  4. .env.development に次の変数を設定する
    • GOOGLE_APPLICATION_CREDENTIALS= にJSON鍵のパス(例 /Users/xxxx/service-account.json)
    • GOOGLE_SPREADSHEET_ID= に複製したスプレッドシートのID(例 18zsKxNYNU7uzq2YD2_YaHB3eVT53hch-MFR2tl-rtiw)

Gemini APIキーの設定

  1. AI Studio でGeminiのAPIキーを取得する
  2. .env.developmentGOOGLE_GENERATIVE_AI_API_KEY= としてAPIキーを設定する

Brave Web Search APIキーの設定

  1. Brave Web Search API)のAPIキーを取得する
  2. .env.developmentBRAVE_API_KEY= としてAPIキーを設定する。

Mastraサーバーの起動

MastraのPlayground UIを起動する。

pnpm dev
# yarn dev

ワークフローを開く。

http://localhost:4111/workflows/batchWorkflow/graph

Triggerボタンを押すと次の処理が始まる。

  1. Googleスプレッドシートから未処理のドキュメントを取得する
  2. PlayWright MCP経由のブラウザで対象URLを開く
  3. 開いたページが名前と一致するか確認し、一致しない場合はWeb検索を用いて訂正する
  4. 開いたページにアクセスランキングがあるか判定する
  5. アクセスランキングの有無とアクセスランキングの名称をGoogleスプレッドシートに書き込む
  6. 上記の処理を未処理のドキュメントがなくなるまで繰り返す

リトライするには

状態の列が空だと未処理だと判定している。

Googleスプレッドシートで、状態アクセスランキングの有無アクセスランキングの名称の列の値を削除してTriggerボタンを押すと、一連の処理を再実行できる。

調査内容をカスタマイズするには

コメントにキーワード「改造ポイント」を記した。以下のファイルを変更することで、異なる調査にも転用できる。

AIエージェントの動作 src/mastra/agents/survey.ts

このファイルにAIエージェントの挙動を示したシステムプロンプトがある。

これをカスタマイズすることで調査内容を変更できる。

ドキュメントのフォーマット src/mastra/tools/documents.ts

dataSchemaがGoogleスプレッドシートのフィールド構造と、プログラム上におけるデータ構造とを揃えている。

AIエージェントのシステムプロンプトの変更はGoogleスプレッドシートのフォーマットにも関係する。

シートの1行目とこのスキーマを揃えて変更することで、記録するドキュメントのスキーマを変更できる。

なお、headersスクリプトでdataSchemaのフィールドをタブ区切りテキストで出力できる。

pnpm headers
# yarn headers

プロンプトと更新データ src/mastra/workflows/batch.ts

それぞれのサイトごとの処理に必要なプロンプトと、調査結果をGoogleスプレッドシートに書き込む際のデータ構造はこのファイルで変更する。

プロンプトの変更は少ないと思われるが、ドキュメントのフォーマット変更は更新データの変更を伴う。

他のモデルを使うには

このプログラムでは安価なgemini-2.0-flash-001を指定しているが、Function Callingと構造化出力に対応したLLMであれば代替できる。

他のモデルを利用するには以下のファイルを更新する。

  • .env.development モデル向けのAPIキーを設定
  • src/mastra/agents/models.ts 候補となるモデルの一覧
  • src/mastra/agents/survey.ts 調査エージェントのモデルを指定
  • src/mastra/agents/structure.ts 調査結果の構造化エージェントのモデルを指定

Quick Start

1

Clone the repository

git clone https://github.com/ideamans/mastra-ai-agent-batch-example
2

Install dependencies

cd mastra-ai-agent-batch-example
npm install
3

Follow the documentation

Check the repository's README.md file for specific installation and usage instructions.

Repository Details

Ownerideamans
Repomastra-ai-agent-batch-example
LanguageTypeScript
LicenseMIT License
Last fetched8/10/2025

Recommended MCP Servers

💬

Discord MCP

Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.

integrationsdiscordchat
🔗

Knit MCP

Connect AI agents to 200+ SaaS applications and automate workflows.

integrationsautomationsaas
🕷️

Apify MCP Server

Deploy and interact with Apify actors for web scraping and data extraction.

apifycrawlerdata
🌐

BrowserStack MCP

BrowserStack MCP Server for automated testing across multiple browsers.

testingqabrowsers

Zapier MCP

A Zapier server that provides automation capabilities for various apps.

zapierautomation