AI エージェント開発の主流が Python に集中する中、「TypeScript で AI エージェントを書きたい」というニーズに応える形で登場したのが Mastra です。Vercel・Next.js エコシステムで開発する企業や、フロントエンドとバックエンドを TypeScript で統一したい開発組織にとって、Mastra は LangGraph(Python)の TypeScript 版に近い位置づけを担います。
本記事では、Mastra の Agents/Workflows/RAG/Memory の 4 機能を実装例とともに整理し、Claude/OpenAI/Gemini マルチプロバイダー対応の方法、LangGraph(Python)との棲み分け、Production 移行パターンまで解説します。掲載するコード例は2026年6月初頭時点のものですが、Mastra は急速に進化しているため、最新仕様は 公式サイト でご確認ください。
Mastra とは何か:TypeScript ベースのAIエージェント基盤
Mastra は TypeScript で構築するための AI エージェントフレームワークで、Vercel チームのメンバーが立ち上げた新興プロジェクトです。OpenAI / Anthropic / Google などのマルチプロバイダー対応、Next.js / Cloudflare Workers との統合、TypeScript の型安全性を最大限活用した設計が特徴です。
4つのコア機能
| 機能 | 役割 | 類似 |
|---|---|---|
| Agents | タスクを実行するエージェント定義 | LangGraph Node |
| Workflows | 複数エージェントの連携フロー | LangGraph Graph |
| RAG | 外部データ検索+応答生成 | LangChain Retrieval |
| Memory | 会話履歴・長期記憶管理 | LangGraph Checkpointer |
Mastra のセットアップ手順
- Node.js 18以上 + pnpm のインストール:Mastra は最新の TypeScript 環境が必要
- 新規プロジェクト作成:
pnpm create mastra@latest - 環境変数設定:.env に
ANTHROPIC_API_KEYまたはOPENAI_API_KEY - 初期 Agent 定義:
src/mastra/agents/に TypeScript ファイル作成 - 開発サーバー起動:
pnpm run devで playground 起動 - API エンドポイント確認:localhost:4111 でブラウザから動作確認
- Production ビルド:
pnpm run buildで本番ビルド - Vercel/Cloudflare へデプロイ:Mastra は Edge Runtime 対応
Agent 定義の基本例(Claude 連携)
// src/mastra/agents/sales-assistant.ts
import { Agent } from '@mastra/core/agent';
import { anthropic } from '@ai-sdk/anthropic';
export const salesAssistant = new Agent({
name: 'Sales Assistant',
instructions: `
あなたは中小企業の営業担当者向けの AI アシスタントです。
顧客情報を整理し、提案書のドラフトを作成します。
日本語で丁寧に応答してください。
`,
model: anthropic('claude-opus-4-7'),
tools: {
// ツール定義は後述
},
});
これだけで Claude モデルを使った AI エージェントの基本骨格ができます。
Tool(ツール)の定義例
// src/mastra/tools/crm-lookup.ts
import { createTool } from '@mastra/core/tools';
import { z } from 'zod';
export const crmLookup = createTool({
id: 'crm-lookup',
description: 'CRM から顧客情報を取得します',
inputSchema: z.object({
customerId: z.string().describe('顧客ID'),
}),
execute: async ({ context: { customerId } }) => {
// CRM API を呼び出す(実装例)
const response = await fetch(`/api/crm/${customerId}`);
return await response.json();
},
});
Zod スキーマで型安全なツール入出力が定義できるのが Mastra の強みです。LangGraph(Python)の Pydantic と同じ思想ですが、TypeScript エコシステムでは Zod が一般的。
Workflow(複数エージェント連携)の実装例
// src/mastra/workflows/proposal-flow.ts
import { createWorkflow, createStep } from '@mastra/core/workflows';
import { z } from 'zod';
import { salesAssistant, proposalDrafter } from '../agents';
const researchStep = createStep({
id: 'research',
inputSchema: z.object({ customerId: z.string() }),
outputSchema: z.object({ customerProfile: z.string() }),
execute: async ({ inputData }) => {
const result = await salesAssistant.generate(
`顧客 ${inputData.customerId} を調査して`
);
return { customerProfile: result.text };
},
});
const draftStep = createStep({
id: 'draft',
inputSchema: z.object({ customerProfile: z.string() }),
outputSchema: z.object({ proposal: z.string() }),
execute: async ({ inputData }) => {
const result = await proposalDrafter.generate(
`この顧客向けに提案書を作って: ${inputData.customerProfile}`
);
return { proposal: result.text };
},
});
export const proposalFlow = createWorkflow({
id: 'proposal-flow',
inputSchema: z.object({ customerId: z.string() }),
outputSchema: z.object({ proposal: z.string() }),
})
.then(researchStep)
.then(draftStep)
.commit();
2つのエージェントを直列に繋いだフロー。各ステップの型は Zod で保証されるため、エラーが実行前に発見できます。
RAG(外部データ参照)の実装
// src/mastra/rag/knowledge-base.ts
import { MDocument } from '@mastra/rag';
import { embedMany } from 'ai';
import { openai } from '@ai-sdk/openai';
const doc = MDocument.fromText(socialKnowledgeText);
const chunks = await doc.chunk({
strategy: 'recursive',
size: 512,
overlap: 50,
});
const { embeddings } = await embedMany({
model: openai.embedding('text-embedding-3-small'),
values: chunks.map(c => c.text),
});
// PgVector / Pinecone / Chroma などのベクトルDBに保存
await vectorStore.upsert({ vectors: embeddings, ... });
Mastra の RAG は LangChain の Retrieval よりシンプルな API。チャンク分割・埋め込み・検索の3ステップが直感的に書けます。
Memory(会話履歴管理)の実装
// src/mastra/agents/customer-support.ts
import { Memory } from '@mastra/memory';
const memory = new Memory({
storage: new LibSQLStore({ url: 'file:./memory.db' }),
options: {
lastMessages: 10,
semanticRecall: { topK: 3, messageRange: 2 },
},
});
export const customerSupport = new Agent({
name: 'Customer Support',
instructions: 'ユーザーとの過去のやり取りを覚えています',
model: anthropic('claude-opus-4-7'),
memory,
});
会話履歴を SQLite/Postgres/Redis に保存。過去の会話を踏まえた応答が可能になります。
LangGraph(Python)との棲み分け
| 観点 | Mastra | LangGraph |
|---|---|---|
| 言語 | TypeScript | Python |
| エコシステム | Vercel/Next.js | FastAPI/Django |
| 対象開発者 | フロントエンド・Webエンジニア | データサイエンティスト・MLE |
| 学習コスト | 低(型ヒントで補完) | 中(State 設計) |
| Edge デプロイ | 標準対応 | 非対応 |
| 企業内採用 | 急速に拡大中 | 既に標準 |
使い分けの目安
Mastra を選ぶケース:
- フロントエンドが Next.js / React で、バックエンドも TypeScript で統一したい
- Vercel / Cloudflare Workers で Edge デプロイしたい
- 開発チームがフロントエンドエンジニア中心
- 型安全性を最優先したい
LangGraph を選ぶケース:
- 機械学習・データ分析パイプラインと統合する
- 開発チームが Python ベース
- 科学計算ライブラリ(pandas/numpy)との連携が必要
- 既存の LangChain 資産を活用したい
マルチプロバイダー対応の実装
// 用途別にモデルを切り替える例
import { anthropic } from '@ai-sdk/anthropic';
import { openai } from '@ai-sdk/openai';
import { google } from '@ai-sdk/google';
// コード生成は Claude
const coder = new Agent({
model: anthropic('claude-opus-4-7'),
// ...
});
// 創造的文章は GPT
const writer = new Agent({
model: openai('gpt-5-3'),
// ...
});
// コスト最優先は Gemini
const summarizer = new Agent({
model: google('gemini-3-5-flash'),
// ...
});
同じ Agent インターフェースで複数モデルを並行運用可能。本記事「OpenRouter完全ガイド」のように OpenRouter 経由で集約することもできます。
Production 移行のベストプラクティス
- 環境変数の Secret 管理:API キーは Vercel/Cloudflare の Environment Variables に保存
- レート制限の実装:API キー使用量を per-user/per-IP で制限
- エラーハンドリング:try/catch で各エージェント呼び出しを囲む
- ロギング:構造化ログで全実行を記録(jsonl 推奨)
- ヘルスチェック:定期的に Agent の応答性能を確認するエンドポイント
- コスト監視:月次の API 使用量を Slack 通知
- 段階的ロールアウト:5% → 25% → 50% → 100% でフィーチャーフラグ展開
よくある質問
Q1. Mastra は本番運用に耐えますか?
2026年6月時点で stable版がリリース済。Vercel・複数の中規模スタートアップで本番運用実績あり。エンタープライズ採用も増加中です。
Q2. LangChain の TypeScript 版(LangChain.js)との違いは?
Mastra はエージェント特化で軽量、LangChain.js は LangChain Python の機能完全移植。LangChain.js は重い・複雑な分、機能網羅性が高い。新規開発なら Mastra、既存 LangChain 資産があれば LangChain.js。
Q3. 学習コストはどれくらい?
TypeScript 経験者なら 1-2日で基本機能、1週間で本番運用レベルに到達可能。Python 経験のみの開発者は + 1週間で TypeScript 習得が必要。
Q4. 日本語対応は?
Mastra フレームワーク自体は言語非依存。日本語の AI 応答は使用する LLM(Claude/GPT/Gemini)の日本語能力に依存。Claude Opus 4.7+ なら高品質な日本語応答が可能。
Q5. データ保護はどうなっていますか?
Mastra はオープンソース、自社サーバーで完結する設計が可能。Memory・RAG のデータも自社管理。LLM プロバイダー(Claude/GPT/Gemini)のデータ保護ポリシーは各社準拠。
Q6. 中小企業の Web 開発チームでも導入できますか?
Next.js / TypeScript 経験のある開発者がいれば導入可能。社内に開発リソースが無い場合は外部 SI 経由の構築が現実的です。
Q7. コスト感は?
Mastra フレームワーク自体は無料(オープンソース)。コストは LLM API 利用料のみ(月数千〜数万円〜数十万円、利用量次第)。Vercel デプロイなら追加で月$20-200程度。
Q8. ChatGPT に組み込まれた AI エージェントを使えば良いのでは?
ChatGPT 内エージェントは ChatGPT の中だけで動作。自社プロダクトに組み込むには Mastra のようなフレームワークが必要です。社内ツール・顧客向けアプリで動かすなら別実装が前提。
まとめ:TypeScript エコシステムの AI エージェント新標準
Mastra は、これまで Python に偏っていた AI エージェント開発を TypeScript エコシステムに開いた、重要なフレームワークです。Next.js・Vercel・Cloudflare Workers で開発する企業にとって、Mastra は LangGraph と並ぶ第一選択肢になります。型安全性・Edge デプロイ・マルチプロバイダー対応の3軸で、2026年下半期の AI 開発で大きく存在感を増す見込みです。
本記事の情報は2026年6月初頭時点のものです。Mastra は急速進化中のため、最新の API 仕様・ベストプラクティスは 公式ドキュメント で必ずご確認ください。
佐藤傑(さとう・すぐる)
株式会社Uravation代表取締役。X(@SuguruKun_ai)フォロワー約10万人。100社以上の企業向けAI研修・導入支援。
