TypeScriptネイティブなAIエージェントフレームワーク「Mastra」とは?環境構築から実装まで詳しく解説

普段のお仕事に役立つ普遍的なプログラミングTIPSや、業界で注目度が高い最新情報をお届けする「編集部ピックアップ」。
今回はJavaScript/TypeScript環境で、AIエージェントを開発するためのオープンソースフレームワーク「Mastra」をご紹介します。

はじめに

ChatGPT、Claude、Geminiなど、生成AIの登場によって、開発現場は大きく変化してきました。そして、現在はAIを自律的に動かし、複雑なタスクをこなす「AIエージェント」の構築が注目されています。AIエージェントを構築するためのフレームワークは数多く登場していますが、どれを使えば良いのかわからないという方も多いのではないでしょうか。そこで本記事では、TypeScriptネイティブなAI開発フレームワーク「Mastra」をご紹介します。

これまでAIエージェント開発ではLangGraphやCrewAIなどのPythonベースのフレームワークが広く利用されてきました。しかしMastraの登場により、JavaScript/TypeScriptを中心に開発しているエンジニアも、慣れ親しんだ技術スタックでAIエージェントを構築しやすくなったのです。

2026年1月にv1.0がリリースされたMastraは、Replit、PayPal、Adobe、SoftBankなど大手企業で採用されていることが公式サイトで紹介されており、今後さらに注目度が高まると予想されるフレームワークです。

Mastraとは?

Mastraとは、JavaScript/TypeScript環境で、AIエージェントを開発するためのオープンソースフレームワークです。静的サイトジェネレーター「Gatsby」の開発チームによって開発され、2026年1月にv1.0がリリースされました。

Mastraオフィシャルサイトトップページ
出典:TypeScript AI Framework for Agents and Apps | Mastra(2026年7月29日閲覧)

Mastraは、ChatGPTやClaudeなどモデルごとの違いを吸収する共通インターフェースを提供するだけでなく、RAG(Retrieval-Augmented Generation/検索拡張生成)にも対応しています。RAGとは、外部のドキュメントやデータベースから関連情報を検索し、その結果をLLMへ渡して回答を生成する仕組みです。これにより、社内文書や最新情報を活用した精度の高い回答が可能になります。他にも、エージェントオーケストレーションと呼ばれる複数のエージェント間の連携や、複雑なタスクの自動化、ワークフローの構築など、様々な機能が提供されています。
では、Mastraの特長と基本要素を見ていきましょう。

Mastraの特長

MastraはTypeScriptネイティブであるため、その型安全性を活かし、AIアプリケーションの実装ミスや保守性の課題を軽減できます。また、Next.jsなど既存のフロントエンド技術との親和性も高く、ローカル開発UI(Mastra Studio)による開発のしやすさ(開発者体験:DX)も特長のひとつです。
Mastraを構成する基本要素は以下の通りです。

Mastraを構成する基本要素

Agents(エージェント)

指示を受け取り、ツールを使って自律的にタスクをこなす中核要素です。LLMとツールを使用して、必要に応じて複雑なタスクを分解し、実行計画を立て、必要なアクションを自律的に実行していきます。エージェントを直接使うことも、ワークフローに組み込むこともできます。

Tools(ツール)

エージェントはツールを使用して、外部APIの呼び出しやデータベースへのクエリ実行などを行います。明確に定義された操作を実行する機能です。リモートのMCPサーバーが提供するツールを利用して機能を拡張できます

Workflows(ワークフロー)

複雑なタスクをステップごとに定義し、安定して実行するための仕組みです。ひとつのエージェントの推論に頼るのではなく、構造化された手順を使用して、複雑なタスクシーケンスを構築できます。

Memory(メモリ)

エージェントは、メモリ機能により、ユーザーとの過去のやり取りやツールの使用状況を記憶することで、文脈を維持したり、継続的な対話を行ったりすることができます。この仕組みによってより良い回答を生成するためのコンテキストを維持することができます。なお、メモリ機能を使用するには履歴を保存するためのストレージ(Libsql、PostgreSQLなど)が必要になります。

有効な利用シーン

AIの推論と外部ツールを組み合わせることで、複雑な業務の自動化に力を発揮します。具体的には、カスタマーサポートの半自動化、社内ナレッジ検索、複雑なデータ分析やレポート自動生成などに活用できます。これらはRAGやワークフローと組み合わせることで、さらに高度化することが可能です。

Mastraを使ってみよう – 環境構築から最初のエージェント作成まで

事前準備

まずはMastraを動かすために必要なものを準備します。

  • Node.js
    Mastra v1.0ではNode.jsのバージョンは22.13.0以上が必要です。
    必要に応じて、公式サイトからダウンロードしてインストールしてください。
  • AIモデルのAPIキーの取得
    OpenAI、Anthropic、Google等で利用可能なモデルがありますが、ここでは無料で利用できるGemini APIを使用します。公式サイトからAPIキーを取得してください。
    AI Studioのサイト
    APIキー発行画面

  • エディタ
    本記事ではVS Code(Visual Studio Code)を使用します。

プロジェクトの作成

では実際にMastraをインストールし、プロジェクトを作成してみましょう。
検証用のディレクトリを作成し、Mastraのセットアップコマンドを実行します。

ディレクトリ作成

任意の名前で作業用のディレクトリを作成し、移動します。この例ではmastra-testという名前のディレクトリを作成し、移動します。

mkdir mastra-test
cd mastra-test

Mastraのセットアップ

Mastraのセットアップコマンドを実行します。

npx create-mastra@latest

コマンドを実行するといくつか質問(ウィザード)が表示されます。以下のように進めてください。

  1. What do you want to name your project?
    プロジェクト名を入力します。ここではそのままmy-mastra-appと入力してEnterを押します。
    プロジェクト名入力画面
  2. Select a default model provider:
    矢印キーで● Geminiを選択してEnterを押します。
    モデル選択画面
  3. Enable Mastra platform observability?
    ○ Noを選択します。ここでは利用しないため、手順の簡略化としてNoを選択します。
    Mastra platform observability選択画面

以下のようなメッセージが表示されればセットアップは完了です。

実行完了画面

では、実際に簡単なAIエージェントを構築してみましょう。

実践:簡単な商品検索AIエージェントを構築してみよう

ここからは、商品リストから情報を検索して回答するAIエージェントを構築します。AIエージェントを利用することで、ユーザーが自然言語で入力した質問を解釈し、その内容に応じて適切なツールを選択して処理を実行できます。
例えば「在庫のあるノートパソコンを探して」「価格が3万円以下の商品を教えて」といった曖昧な問い合わせに対しても、エージェントが意図を理解し、適切な検索処理を実行して回答できます。

それでは、商品検索ツールを利用するAIエージェントを定義してみましょう。

※ 注意

インストール時にAPIキーの入力をスキップした場合は、プロジェクト直下の「 .env.example」というファイルを「 .env」にリネームしてAPIキーを追記してください。
また、APIキーを記載した「 .env」ファイルは、Gitなどのバージョン管理システムにコミットして公開しないよう、取り扱いには十分ご注意ください。

ツールの作成

まずは、実際に情報を取得するツールをTypeScriptで作成します。ここでは例として、JSONファイルを検索するツールを作成します。

ダミーデータの作成

検索対象となるダミーの社内データ(商品リスト)をJSONファイルとして作成します。
※ 「data」フォルダを新規作成

  [
    { "id": 1, "name": "ワイヤレスマウス", "price": 3500, "category": "PC周辺機器", "stock": 45 },
    { "id": 2, "name": "メカニカルキーボード", "price": 12000, "category": "PC周辺機器", "stock": 20 },
    { "id": 3, "name": "27インチ 4Kモニター", "price": 45000, "category": "ディスプレイ", "stock": 15 },
    { "id": 4, "name": "USB-C ハブ 7in1", "price": 3200, "category": "PC周辺機器", "stock": 100 },
    { "id": 5, "name": "ノイズキャンセリングヘッドホン", "price": 28000, "category": "オーディオ", "stock": 8 }
  ]
JSONファイル作成画面

作成したJSONファイルを読み込み、キーワード検索を行うツールを作成します。
mastra/tools配下に以下のツールファイルを作成します。tools配下にはサンプルコードがあるので、そちらを参考にツールを作成するとよいでしょう。

import { createTool } from "@mastra/core/tools";
import { z } from "zod";

// 外部ファイル(JSON)を直接インポートする
import dummyProducts from "../../data/products.json";

export const productSearchTool = createTool({
  id: "product-search",
  description: "ダミーの社内商品データベース(JSON)から商品を検索します",
  inputSchema: z.object({
    keyword: z.string().describe("検索キーワード(例: マウス, PC周辺機器など)"),
  }),
  // Mastraのバージョン差異を吸収するため、ここではany型を使用しています。
  execute: async (args: any) => {
    // 引数から検索キーワードを取得する
    const searchKeyword = args?.context?.keyword || args?.keyword;

    // インポートしたダミーデータからキーワード検索を行う
    if (!searchKeyword) return dummyProducts;

    const lowerKeyword = searchKeyword.toLowerCase();
    const results = dummyProducts.filter(
      (p: any) => p.name.toLowerCase().includes(lowerKeyword) || p.category.toLowerCase().includes(lowerKeyword)
    );
    return results;
  },
});
ツール作成画面

エージェントの定義

次に、エージェントを作成します。エージェントは、役割(インストラクション)を与えられ、ツールを組み込んで動作します。ここでは、先ほど作成したツールを組み込んだエージェントを作成します。
インストール時にデフォルトで生成されたagent.tsはそのまま残しておき、ここではシンプルな仕組みのエージェントを新規ファイルとして作成します。

import { Agent } from "@mastra/core/agent";
import { productSearchTool } from "../tools/product-search";

export const productAgent = new Agent({
  id: "product-agent",
  name: "Product Assistant",
  instructions: "あなたは社内製品に詳しいアシスタントです。ユーザーの質問に対し、必ずツールを使ってデータベースを検索し、適切な回答をしてください。",
  // 使用するAIモデルを指定します(プロバイダ/モデル名の形式)
  model: "google/gemini-3.5-flash",
  tools: { productSearchTool },
});
エージェント作成画面

実行スクリプトの作成

エージェントを呼び出して質問を投げる簡単なテストスクリプトを作成します。
初期生成されたindex.tsは残しておき、新しくsrc/test.tsを作成して検証します。

import { productAgent } from "./mastra/agents/product-agent";

async function main() {
  console.log("エージェントに質問を送信します...");

  // エージェントにプロンプトを送信
  const response = await productAgent.generate("PC周辺機器カテゴリの製品には何がありますか?");

  console.log("=== 回答 ===");
  console.log(response.text);
}

main().catch(console.error);
スクリプト作成画面

実行と結果の確認

実際にエージェントを動作させてみます。

ターミナルで以下のコマンドを実行し、作成したテストスクリプトを動かします。

npx tsx --env-file=.env src/test.ts

ターミナルにJSONのデータから「PC周辺機器」を検索した結果が返ってきます。質問の意図(PC周辺機器)に合った商品だけを抽出し、さらに「価格」や「在庫数」といった人にとって読みやすい情報にして、自然言語で返してくれていることが確認できます。

Mastra StudioのUI画面でテストもできる

Mastraには、開発中のエージェントをブラウザ上でテストできる「Mastra Studio」というローカルサーバーが標準で用意されています。

エージェントの登録

Mastra Studio上で自作のエージェントを認識させるため、src/mastra/index.tsに追記を行います。
ファイルの先頭にインポート文を追加し、new Mastra({ … })agents:に自作エージェントを追加します。

// ↓ テスト用に自作エージェントを追加
import { productAgent } from "./agents/product-agent"; 

// (中略)

export const mastra = new Mastra({
  // ↓ agentsの項目に自作エージェントをカンマ区切りで追加します
  agents: { agent, productAgent },
  …(省略)…
});
src/mastra/index.tsの編集画面
Studioの起動

ターミナルで以下のコマンドを実行します。

npx mastra dev
ターミナル画面

表示されるURL(http://localhost:4111など)にブラウザでアクセスすると、Mastra Studioの画面が開きます。
追加したエージェントが認識されています。

Mastra Studioの画面

左メニューの「Agents」から作成したproductAgentを選ぶと、ChatGPTのようなチャット画面で直接テストを行うことができます。
試しに「在庫が一番多い商品はどれ?」と質問を投げてみました。

Mastra Studioのチャットテスト画面

※ ターミナルはサーバーを起動したまま待機状態になります。終了して元の入力画面に戻りたい場合は、ターミナル上でCtrl+C を押してください。

注記:

本記事の手順やコードは執筆時点(2026年7月)のMastraおよびGemini APIの仕様に基づいています。今後のアップデートにより、APIのインターフェースや利用可能なモデル名が変更される可能性があります。ご了承ください。

さいごに

Mastraを使えば、TypeScriptエンジニアがこれまでの知見を活かしてスムーズにAIエージェント開発に取り組めます。今回は基本的なツールの作成とエージェントの連携までを紹介しましたが、より実践的なRAGの構築やワークフローの活用など、実際の業務に役立つ機能が豊富に用意されています。AIエージェント開発にご興味をお持ちいただけましたら、Mastraを試してみてはいかがでしょうか。

メシウスでは業務アプリ開発に適したさまざまなJavaScriptライブラリを提供しています。

メシウスのJavaScriptライブラリ

今回ご紹介したMastraと、帳票ライブラリ「ActiveReportsJS(アクティブレポートJS)」を連携させた解説記事も公開していますので、ぜひ参考にしてみてください。

無償のトライアル版や、ブラウザ上で手軽に試せるデモアプリケーションも公開しているので、こちらも是非ご覧ください。

\  この記事をシェアする  /