
Mastra でAgentを作ってみた 【Mastra超入門】
はじめに
こんにちは、AI事業本部の内田です。
- AIエージェントなどの開発・実行基盤を何にしようか迷っている方
- Mastraを聞いたことあるけどよくわからない方
- 初めてMastraを使ってみようかなと考えている方
- どんな機能があるのかざっくりと知りたい方
向けの記事になります。
書くこと:Mastraのローカルでのデプロイ方法、どんな機能があるかの概観、一つAgentを作って動かしてみた
書かないこと:ローカル以外へのデプロイ方法、ネットワーク・セキュリティ周りの設定、全部の機能を網羅した解説など
Mastra とは
ざっくりとしすぎですが、簡単なAIエージェントを構築するのにもってこいのツールだと思います。(AIエージェントの定義をめぐる論争には触れないでおきます...。)
一応公式の文言も。
Mastra is a TypeScript framework for building AI agents and applications
ということでTypeScriptで構築できるんです。これ嬉しいですね。CDKなどに慣れてる方にとっても馴染みがあると思います。
なぜ使ってみたのか
きっかけは、とあるお客様のエージェント構築でした。
弊社で開発したエージェントをお客様にも触って試していただくことが必要で、後述しますが、MastraにはMastra StudioというGUI(Chat GPTのトップ画面のような)画面が元からついてきます。チャットっぽくなってるのもとっかかりやすいですよね!
この機能がありがたかったんです。Bedrock AgentCore RuntimeのStrands Agentのように自前でフロントを用意する必要がなく、AIエージェントに欲しい機能もある程度用意してくれていました。

こんなイメージです。
この記事で分かること
超入門ということで
- 個人でも誰でもMastraを自分のローカル環境でデプロイする方法
- Agentの作り方
- Amazon BedrockのClaudeをLLMモデルとして設定する方法
どうやったのか
Studio画面(GUI)を開いてみる
公式Docsより、
最速でのデプロイはターミナルなどから
npm create mastra@latest <project-name>
を実行します。
project-name には任意の名前をつけましょう。例:my-first-mastra-app
すると、
モデルプロバイダを聞かれるので、一旦OpenAIのままでEnterを押します。あとでAmazon Bedrockに変更します。

すると今度はAPIキーを設定しますかと聞かれます。今回はAmazon BedrockのAPIキーを使うので、ここはSkip for nowを選択します。

オブザーバビリティ(認証・認可、監視などの基盤)を作るかどうか聞かれますが、今回はとりあえずStudio画面を見てAgentを開くことを目的とするので細かい設定はせずに一旦スキップします。

ここまできたらあと一歩です。いよいよローカルでのデプロイを行います。
cd my-first-mastra-app
npm run dev
を実行します

はい、これでStudio画面がhttp://localhost:4111として立ち上がるはずです。
完了です。
びっくりするくらいお手軽にできましたね。

このような画面が開ければOKです。この画面がコンソール画面(Studioの画面)です。このままAPIキーを設定しないままだと何も動作しません。
新しくAgentを構築してみる
ディレクトリの構造を確認する

初期のディレクトリ構造はこのようになっています
注目したいのはsrc/mastraです。ここにエージェントなどのAIアプリケーションの本体が入っています。
src/mastra/
├── agents/
│ └──agent.ts
├── public/
│ └── mastra.dbなど
├── tool/
│ └── schedule.ts
└── index.ts
API key を設定する
.envファイルを作成し、AWS_BEARER_TOKEN_BEDROCKの変数にAWSのマネコンから任意のモデルを選択し、Amazon Bedrock > APIキー > キー発行を行い、キーをコピーして貼り付ける。(私はClaudeのHaiku4.5にしました。)
注意:ここでは簡易的にローカルの.envにAPIキーを置いていますが、取り扱いには十分留意してください。APIキーは短期のほうで発行すると期限が早く切れて今回は良いと思います。

短期APIキーを生成をクリックして、表示されたAPIキーを保存しておく。
また、Bedrockを使うために
cd my-first-mastra-app
npm install @ai-sdk/amazon-bedrock
の事前準備が必要です。
Agent を定義する
今回はユーザーの入力を自然な敬語になるよう校正してくれるエージェントを作成してみました。
// src/mastra/agents/keigo-agent.ts
import { Agent } from '@mastra/core/agent'
import { createAmazonBedrock } from '@ai-sdk/amazon-bedrock';
const bedrock = createAmazonBedrock({ region: 'ap-northeast-1' }); // 認証情報を読み取る
export const keigoAgent = new Agent({ // エージェントの作成
id: 'keigo-agent',
name: 'Keigo Agent',
instructions: 'あなたはビジネス敬語に直すエージェントです。ユーザーの入力に対して、自然な敬語になるよう回答を出力してください。',
model: bedrock('jp.anthropic.claude-haiku-4-5-20251001-v1:0'), // モデルはClaudeのHaiku4.5を選択。
})
エージェントはid, name, instructions, modelの4つから構成されています。
instructionsはエージェントの定義のようなものだと理解しておけばOKです。
次に、/index.tsに作成したエージェントを登録します。

npm run dev で Studio を起動する
ここまで変更が完了したら、再度デプロイします。
npm run dev
どうなったのか


エージェントが登録されました!!
Studio で Agent とチャットする

チャットできました!!
Traces を見てみる


Tracesから履歴を閲覧できます。
DBについては深くは触れませんでしたが、初期設定のままだとローカルのDBに保存されます。
エージェント定義でinstructionsで定義した文面がシステムプロンプトとしてInputに入ってることが確認できます。
何がわかったのか(まとめ・所感)
触ってみた感想
パッケージ化されているため、とにかくデプロイなどが簡単にできます。
次回以降で触れようと思いますが、toolなどを駆使することでエージェントもカスタマイズが可能な点がいいなと思いました。
次にやってみたいこと
次回はシステムプロンプトをStudioの画面から編集して、その後のチャットに反映させてみようと思います。読んでいただきありがとうございました!!







