Mastra - TypeScript AIエージェントフレームワーク
Gatsbyチームが開発した、本番環境対応のAIエージェント構築フレームワーク
Mastra
The TypeScript AI Framework
19.3k+
GitHub Stars
150k+
週間ダウンロード
$13M
シード資金調達
40+
対応LLMプロバイダー
Mastraとは:Gatsbyの開発チームが2024年に創業し、Y Combinator W24に採用されたTypeScript製AIエージェントフレームワーク。 NPMデータによると、JavaScript史上3番目に速く成長しているフレームワーク。
なぜMastraが注目されているのか?
Gatsbyチームの実績
React静的サイトジェネレータ「Gatsby」を成功に導いたチームが開発。 大規模OSSプロジェクトの経験を活かした堅牢な設計。
- - Sam Bhagwat(CEO)- Gatsby共同創業者
- - Abhi Aiyer(CTO)- Gatsby元エンジニア
- - Shane Thomas(CPO)- Gatsby元プロダクト
TypeScriptファースト
Python中心のAI開発界で、TypeScript/JavaScript開発者向けに最適化。 フロントエンド・フルスタック開発者が即座に使える。
- - 型安全なAPI設計
- - React/Next.js/Node.jsとシームレス統合
- - Zodによる入出力スキーマ定義
オールインワン設計
エージェント構築に必要な全機能を1つのフレームワークに統合。 複数ライブラリの組み合わせが不要。
- - エージェント + ワークフロー + RAG + メモリ
- - 40+のLLMプロバイダー統一インターフェース
- - 組み込みのObservability・評価機能
本番環境対応
プロトタイプから本番デプロイまで一貫したワークフロー。 エンタープライズ企業での採用実績。
- - SoftBank、Adobe、PayPalが本番利用
- - Vercel、Cloudflare、AWS Lambdaデプロイ対応
- - Mastra Cloud(マネージドプラットフォーム)
Mastraの主要機能
エージェント(Agents)
LLMとツールを組み合わせた自律的なAI
目標に向かって推論し、必要なツールを選択・実行し、完了まで自動でループするエージェントを構築。 OpenAI、Anthropic、Gemini等40以上のプロバイダーに統一インターフェースでアクセス。
基本的なエージェント定義
import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";
// 基本的なエージェント定義
export const weatherAgent = new Agent({
name: "weather-agent",
instructions: `
あなたは天気情報を提供するアシスタントです。
ユーザーの質問に親切に答えてください。
データがない場合は「わかりません」と正直に答えてください。
`,
model: openai("gpt-4o-mini"),
});
// エージェントの実行
const response = await weatherAgent.generate("東京の天気は?");
console.log(response.text);ツール(Tools)
外部API・データベースとの連携
Zodスキーマで型安全にツールを定義。エージェントは状況に応じて最適なツールを自動選択。 Web検索、データベースクエリ、外部API呼び出しなど何でも実装可能。
ツール付きエージェント
import { Agent } from "@mastra/core/agent";
import { createTool } from "@mastra/core/tools";
import { z } from "zod";
// ツール定義
const searchTool = createTool({
id: "search",
description: "Web検索を実行します",
inputSchema: z.object({
query: z.string().describe("検索クエリ"),
}),
execute: async ({ query }) => {
// 検索ロジック
return `「${query}」の検索結果: ...`;
},
});
const calculatorTool = createTool({
id: "calculator",
description: "数式を計算します",
inputSchema: z.object({
expression: z.string().describe("計算式"),
}),
execute: async ({ expression }) => {
return String(eval(expression));
},
});
// ツール付きエージェント
export const assistantAgent = new Agent({
name: "assistant",
instructions: "あなたは多機能アシスタントです。",
model: openai("gpt-4o"),
tools: [searchTool, calculatorTool],
});
// 実行(エージェントが自動でツールを選択)
const result = await assistantAgent.generate(
"100 * 25 を計算して、その結果についてWeb検索して"
);ワークフロー(Workflows)
複雑なマルチステップ処理の制御
グラフベースのワークフローエンジン。.then()、.branch()、.parallel()で
直列・分岐・並列処理を直感的に記述。状態の永続化とヒューマンインザループにも対応。
マルチエージェントワークフロー
import { Workflow, Step } from "@mastra/core/workflows";
import { z } from "zod";
// ワークフロー定義
const blogWritingWorkflow = new Workflow({
name: "blog-writing",
triggerSchema: z.object({
topic: z.string(),
}),
});
// ステップ1: リサーチ
const researchStep = new Step({
id: "research",
execute: async ({ context }) => {
const { topic } = context.triggerData;
// リサーチエージェントを呼び出し
const research = await researchAgent.generate(
`「${topic}」について詳しく調査してください`
);
return { research: research.text };
},
});
// ステップ2: 執筆
const writeStep = new Step({
id: "write",
execute: async ({ context }) => {
const { research } = context.getStepResult("research");
const article = await writerAgent.generate(
`以下の調査結果を元にブログ記事を書いてください:\n${research}`
);
return { article: article.text };
},
});
// ステップ3: 編集
const editStep = new Step({
id: "edit",
execute: async ({ context }) => {
const { article } = context.getStepResult("write");
const edited = await editorAgent.generate(
`以下の記事を校正してください:\n${article}`
);
return { finalArticle: edited.text };
},
});
// ワークフロー構築
blogWritingWorkflow
.step(researchStep)
.then(writeStep)
.then(editStep)
.commit();
// 実行
const result = await blogWritingWorkflow.execute({
triggerData: { topic: "2026年のAIエージェント動向" },
});RAG(検索拡張生成)
外部知識ベースの活用
ドキュメントのチャンキング、ベクトル埋め込み、類似検索を組み込みでサポート。 PostgreSQL、Couchbase、Pinecone等のベクトルストアに対応。
RAGパイプライン
import { RAG } from "@mastra/rag";
import { PgVector } from "@mastra/pg";
// ベクトルストア設定
const vectorStore = new PgVector({
connectionString: process.env.DATABASE_URL,
});
// RAGパイプライン
const rag = new RAG({
vectorStore,
embedModel: openai.embedding("text-embedding-3-small"),
});
// ドキュメントの埋め込み
await rag.embed({
documents: [
{ id: "doc1", content: "Mastraは TypeScript製のAIエージェントフレームワークです..." },
{ id: "doc2", content: "Gatsbyチームによって開発されました..." },
],
chunkSize: 500,
chunkOverlap: 50,
});
// RAG付きエージェント
const ragAgent = new Agent({
name: "rag-assistant",
instructions: "提供されたコンテキストを元に回答してください。",
model: openai("gpt-4o"),
});
// クエリ実行
const context = await rag.retrieve({
query: "Mastraの開発元は?",
topK: 3,
});
const response = await ragAgent.generate(
`コンテキスト: ${context.map(c => c.content).join("\n")}\n\n質問: Mastraの開発元は?`
);メモリ(Memory)
会話履歴・長期記憶の管理
ワーキングメモリ(短期記憶)とセマンティックメモリ(長期記憶)の2層構造。 セッション間で文脈を保持し、人間のような記憶を実現。
メモリ付きエージェント
import { Agent } from "@mastra/core/agent";
import { Memory } from "@mastra/memory";
import { PostgresStore } from "@mastra/pg";
// メモリストア設定
const memoryStore = new PostgresStore({
connectionString: process.env.DATABASE_URL,
});
// メモリ付きエージェント
const conversationalAgent = new Agent({
name: "conversational",
instructions: "あなたは親切なアシスタントです。会話履歴を覚えています。",
model: openai("gpt-4o"),
memory: new Memory({
store: memoryStore,
// ワーキングメモリ(短期記憶)
workingMemory: {
enabled: true,
maxMessages: 10,
},
// セマンティックメモリ(長期記憶)
semanticMemory: {
enabled: true,
embedModel: openai.embedding("text-embedding-3-small"),
},
}),
});
// セッション管理
const sessionId = "user-123";
// 会話1
await conversationalAgent.generate("私の名前は田中です", { sessionId });
// 会話2(前の会話を覚えている)
const response = await conversationalAgent.generate(
"私の名前を覚えていますか?",
{ sessionId }
);
// → "はい、田中さんですね"MCP(Model Context Protocol)
外部ツールとの標準プロトコル
Anthropicが策定したMCPに対応。Mastraで作成したエージェントやツールを Claude Desktop、Cursor等のMCP対応アプリから呼び出し可能。
MCPサーバー
import { MCPServer } from "@mastra/mcp";
import { myAgent } from "./agents";
// MCPサーバーの作成
const server = new MCPServer({
name: "my-agent-server",
version: "1.0.0",
});
// エージェントをMCPリソースとして公開
server.addAgent(myAgent);
// ツールをMCPツールとして公開
server.addTool({
name: "search",
description: "Web検索",
inputSchema: {
type: "object",
properties: {
query: { type: "string" },
},
},
handler: async (input) => {
return await searchTool.execute(input);
},
});
// サーバー起動
server.listen({ port: 3000 });
// Claude Desktop、Cursor等からMCP経由でアクセス可能にインストールとセットアップ
前提条件
- - Node.js 20以上
- - LLMプロバイダーのAPIキー(OpenAI、Anthropic等)
インストール
# 新規プロジェクト作成(推奨)
npm create mastra@latest
# または、既存プロジェクトに追加
npm install @mastra/core
npx mastra initMastra Studio: npm run dev で起動後、http://localhost:4111 で
エージェント・ワークフローをビジュアルにテスト・デバッグできるローカル開発環境が利用可能。
競合フレームワークとの比較
| 項目 | Mastra | LangGraph | Vercel AI SDK |
|---|---|---|---|
| 言語 | TypeScript | Python / TS | TypeScript |
| 抽象化レベル | 高い(構造化プリミティブ) | 中〜高い | 低い(ツールキット) |
| ワークフロー | 組み込み | 組み込み | なし |
| RAG | 組み込み | LangChain経由 | なし |
| メモリ | ワーキング+セマンティック | チェックポイント | なし |
| ローカルトレーシング | Mastra Studio | なし(LangSmith必要) | なし |
| サーバーレス | 対応 | Docker必要 | 対応 |
| UI機能 | なし | なし | 業界最高のUI |
| ベンダーロックイン | 低い | 中程度(LangSmith) | 低い |
Mastraを選ぶべき場合
- - TypeScript/Node.js開発者
- - オールインワンで素早く構築したい
- - ローカル開発環境を重視
- - サーバーレスデプロイしたい
LangGraphを選ぶべき場合
- - 複雑なマルチエージェント
- - LangChainエコシステム利用中
- - グラフの高度なカスタマイズ
- - Python開発者
AI SDKを選ぶべき場合
- - UIが最重要
- - シンプルなチャットbot
- - Vercelエコシステム利用中
- - 低レベル制御が必要
企業活用事例(海外)
Factorial(HR SaaS)
バルセロナ / 評価額$1B+ / 14,000社100万人利用
課題: 顧客が機密データをChatGPT/Claudeにアップロードしていた。 外部AIは企業コンテキスト(権限、組織構造)を理解できない。
解決: Mastraで社内AIエージェント「One」を構築。 GraphQL API経由でアクセスし、既存の権限管理をそのまま適用。
Mastra採用理由(CTO):
「TypeScript対応で、APIレイヤー、ワークフロー抽象化、LLMプロバイダ統合を備えており、 インフラではなくビジネス課題に集中できる」
TSV形式採用
30-40%トークン削減
確定的ツール
ハルシネーション削減
生成UI統合
CopilotKitでリアルタイムフォーム
エンタープライズ採用実績
SoftBank
本番環境でエージェント運用
Marsh McLennan
75,000人向け検索ツール
Adobe
AIワークフロー活用
PayPal
エージェント開発に採用
Docker
公式ブログで実装紹介
Elastic
検索AI連携
Replit
Agent 3でMastraエージェント構築
Fireworks AI
ワークフロー自動化
Y Combinator企業の活用事例
カスタマーサポート自動化
問い合わせの分類、回答生成、エスカレーション判断をエージェントが自動処理
CAD図面生成
自然言語の指示からCADダイアグラムを自動生成
医療記録自動処理
診察内容の文字起こし、要約、カルテ入力の自動化
財務書類生成
データから請求書、レポート、分析書類を自動生成
Webスクレイピング
連絡先情報の収集と整理をエージェントが自動実行
コード生成
仕様書からコード生成、テスト作成、ドキュメント生成
まとめ:Mastraの位置づけ
Mastraが最適な場面
- + TypeScript/Node.jsでエージェントを構築したい
- + エージェント + ワークフロー + RAG + メモリを統合したい
- + ローカル開発環境(Studio)を重視したい
- + サーバーレス環境にデプロイしたい
- + React/Next.jsアプリに統合したい
他を検討すべき場面
- - Python環境で開発したい → LangGraph/CrewAI
- - 複雑なマルチエージェント協調 → LangGraph
- - UIコンポーネントが最重要 → Vercel AI SDK
- - 既にLangChainを使っている → LangGraph