さとまたwiki

Mastra - TypeScript AIエージェントフレームワーク

Gatsbyチームが開発した、本番環境対応のAIエージェント構築フレームワーク

M

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の主要機能

1

エージェント(Agents)

LLMとツールを組み合わせた自律的なAI

目標に向かって推論し、必要なツールを選択・実行し、完了まで自動でループするエージェントを構築。 OpenAI、Anthropic、Gemini等40以上のプロバイダーに統一インターフェースでアクセス。

基本的なエージェント定義

typescript
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);
2

ツール(Tools)

外部API・データベースとの連携

Zodスキーマで型安全にツールを定義。エージェントは状況に応じて最適なツールを自動選択。 Web検索、データベースクエリ、外部API呼び出しなど何でも実装可能。

ツール付きエージェント

typescript
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検索して"
);
3

ワークフロー(Workflows)

複雑なマルチステップ処理の制御

グラフベースのワークフローエンジン。.then().branch().parallel()で 直列・分岐・並列処理を直感的に記述。状態の永続化とヒューマンインザループにも対応。

マルチエージェントワークフロー

typescript
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エージェント動向" },
});
4

RAG(検索拡張生成)

外部知識ベースの活用

ドキュメントのチャンキング、ベクトル埋め込み、類似検索を組み込みでサポート。 PostgreSQL、Couchbase、Pinecone等のベクトルストアに対応。

RAGパイプライン

typescript
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の開発元は?`
);
5

メモリ(Memory)

会話履歴・長期記憶の管理

ワーキングメモリ(短期記憶)とセマンティックメモリ(長期記憶)の2層構造。 セッション間で文脈を保持し、人間のような記憶を実現。

メモリ付きエージェント

typescript
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 }
);
// → "はい、田中さんですね"
6

MCP(Model Context Protocol)

外部ツールとの標準プロトコル

Anthropicが策定したMCPに対応。Mastraで作成したエージェントやツールを Claude Desktop、Cursor等のMCP対応アプリから呼び出し可能。

MCPサーバー

typescript
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等)

インストール

bash
# 新規プロジェクト作成(推奨)
npm create mastra@latest

# または、既存プロジェクトに追加
npm install @mastra/core
npx mastra init

Mastra Studio: npm run dev で起動後、http://localhost:4111 で エージェント・ワークフローをビジュアルにテスト・デバッグできるローカル開発環境が利用可能。

競合フレームワークとの比較

項目MastraLangGraphVercel AI SDK
言語TypeScriptPython / TSTypeScript
抽象化レベル高い(構造化プリミティブ)中〜高い低い(ツールキット)
ワークフロー組み込み組み込みなし
RAG組み込みLangChain経由なし
メモリワーキング+セマンティックチェックポイントなし
ローカルトレーシングMastra Studioなし(LangSmith必要)なし
サーバーレス対応Docker必要対応
UI機能なしなし業界最高のUI
ベンダーロックイン低い中程度(LangSmith)低い

Mastraを選ぶべき場合

  • - TypeScript/Node.js開発者
  • - オールインワンで素早く構築したい
  • - ローカル開発環境を重視
  • - サーバーレスデプロイしたい

LangGraphを選ぶべき場合

  • - 複雑なマルチエージェント
  • - LangChainエコシステム利用中
  • - グラフの高度なカスタマイズ
  • - Python開発者

AI SDKを選ぶべき場合

  • - UIが最重要
  • - シンプルなチャットbot
  • - Vercelエコシステム利用中
  • - 低レベル制御が必要

企業活用事例(海外)

F

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

Created with Claude Opus 4.6