🎃

Mastra で作る AIエージェント(25) Mastra Platform をまず使ってみる

に公開

Mastra で作る AI エージェント というシリーズの第25回です。


本連載の第19回目 で、Mastra AI エージェントのさまざまなデプロイ方法をご紹介しました。その中に、Mastra社が運営するクラウドサービス「Mastra Cloud」があり「Mastra Cloudについては、別途解説記事を掲載します」と予告していました。

しかし先日、Mastra社の新しいマネージド環境「Mastra Platform」がアナウンスされ、「Mastra Cloud」は非推奨になってしまいました(原稿用意していたのに・・・)。


Deprecated(非推奨)になってしまった、Mastra Cloud

そんなわけで、今回から何回かに分けて、Mastra Platformを実際に使ってみます。

Mastra Platform とは何か ーーという解説が必要な方は、まずこちらをご一読ください

https://zenn.dev/shiromizuj/articles/ba80b4694382b3

Mastra Platform にサインアップ

まずは、Mastra Platform のアカウント を作成しましょう。

私はふつうに「Googleアカウント」でサインアップしました。Mastra Cloud の頃は「Googleアカウント認証」か「GitHubアカウント認証」の選択でしたが、「GitHubアカウント認証」がなくなって「メールアドレスの認証」が追加された形です。

Googleログインすると、Studioが表示されますが、まだ何もデプロイされていない状態です。

左上のプルダウンから、Studio、Server、Memory Gatewayを切り替え可能です。

まずは手元のリポジトリをMastra Platformにデプロイしてみる

実験用に作ったいつものお天気エージェントを、まずは何も考えずにMastra Platformにデプロイしてみます。

デプロイ手順1. mastra CLI をグローバルにインストール

npm install -g mastra

pnpm を使う場合は、先に下記を実行してグローバル bin ディレクトリをセットアップしてください。

pnpm setup   # 初回のみ(シェルを再起動または source ~/.bashrc などで PATH を反映)
pnpm add -g mastra

デプロイ手順2. Server(APIサーバ)をデプロイ

mastra server deploy
  • Mastra Platform に未認証の場合はログインが促されます
  • 内部で mastra build を実行し、アーティファクトをアップロードして Docker イメージをビルド、Railway にデプロイします
  • デプロイの状態は queued → uploading → building → deploying → running と遷移します
  • ビルドが 15 分以上かかると自動的に失敗とみなされます


デプロイ成功、Mastra Platformの画面を確認

デプロイが成功したら、Mastra Platform にアクセスして、左上のプルダウンから Mastra Server を選んでみましょう。先ほど空っぽだった画面に、いまデプロイした我々のプロジェクトがカード表示されています。

カードの中のURLの部分をクリックしてみます。

Swagger UI のようなAPI仕様が表示されます。

先ほどの画面に戻り、プロジェクト名をクリックしてみます。

プロジェクトの詳細画面が表示されます。こちらは「Overview」画面です。

こちらは「Deploys」画面です。デプロイ履歴が表示されます。1行選んでクリックしてみます。

当該デプロイの詳細が表示されます。

こちらは「Settings」画面です。

特に、.env に書いていたような環境変数をここで設定することができます。初回デプロイの際には、.envの内容が自動設定されますが、2回目以降のビルドでは反映されないので手動で編集することになります(2回目以降反映されてしまうと、デグレードを引き起こしてしまいますからね)。

CI/CD での利用

初回デプロイ時に .mastra-project.json が生成されます。
このファイルにはプロジェクトの projectId / projectName / organizationId が記録されており、
CI/CD から同じプロジェクトへデプロイするために必要です。
必ずリポジトリにコミットしてください。

{
  "projectId": "xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxx",
  "projectName": "my-mastra-app",
  "projectSlug": "my-mastra-app-xxxx",
  "organizationId": "org_xxxxxxxxxxxxxxxxxxxxxxxxxx"
}

実際に API を動かしてみる

では、デプロイしたAIエージェントについて、実際にAPIを呼び出してみましょう。CLI が出力した URL の末尾に /api/agents を付けてアクセスし、エージェント一覧の JSON が返れば成功です。

/agents API を実行したら、無事にエージェントの一覧が返ってきました。正しくデプロイされています。

Studio もデプロイする

現段階では、API Server だけがデプロイされていて、Studioはまだデプロイされておらず使えない状態です。Studioもデプロイしましょう。

デプロイ手順1. Studio をDeploy

mastra studio deploy



デプロイ成功、Mastra Platformの画面を確認

「Deploy succeeded」と表示されたので、成功したようです。Mastra Platform で 左上のプルダウンから Studio を選択してみます。無事、こちらでも我々のプロジェクトが表示されています。

URLの部分をクリックすると、いつもの見覚えがある Studio が起動します。

実際に Studio を動かしてみる

Studio から お天気エージェントを動かしてみます。ちゃんと動くことを確認できました。

セキュリティ設定で関係者以外は利用不可に

ちょっと長くなりましたが、ここまではやっちゃいましょう。

現在は、世界中にAPIを公開している状態です。 認証設定をすることで、限られた人だけが利用できるようにしましょう。

最も手軽な方法: SimpleAuth(APIキー認証)

認証設定には様々な方法があるのですが、ここでは最も手軽な SimpleAuth(APIキー認証) をご紹介します。@mastra/core に同梱されており、追加パッケージ不要なのです。

手順1.index.ts に設定追加

src/mastra/index.ts に設定を追加します


import { Mastra } from '@mastra/core/mastra';
+ import { SimpleAuth } from '@mastra/core/server';
import { PinoLogger } from '@mastra/loggers';
import { LibSQLStore } from '@mastra/libsql';
import { DuckDBStore } from "@mastra/duckdb";
import { MastraCompositeStore } from '@mastra/core/storage';
import { Observability, DefaultExporter, CloudExporter, SensitiveDataFilter } from '@mastra/observability';
import { weatherWorkflow } from './workflows/weather-workflow';
import { weatherAgent } from './agents/weather-agent';
import { toolCallAppropriatenessScorer, completenessScorer, translationScorer } from './scorers/weather-scorer';

export const mastra = new Mastra({
+  server: {
+    auth: new SimpleAuth({
+      tokens: {
+        [process.env.API_TOKEN!]: { id: 'user-1', name: 'Admin', role: 'admin' },
+      },
+    }),
+  },
  workflows: { weatherWorkflow },
  agents: { weatherAgent },

手順2.環境変数にAPIキーを追加設定

API_TOKEN という名前で、環境変数を追加します。

.env は2回目以降のデプロイ時には自動反映されないため、Platform の Web ダッシュボードで設定します。

  1. projects.mastra.ai を開く
  2. my-mastra-app プロジェクト → Server → Environment Variables
  3. API_TOKEN = sk-your-secret-token-here(任意の値)を追加
  4. mastra server deploy で再デプロイ

API リクエスト時はヘッダーにトークンを付与:

curl https://your-app.up.railway.app/api/agents \
  -H "Authorization: Bearer sk-your-secret-token-here"

Mastra Platform デプロイ時の認証の全体像

Mastra Platform にデプロイした場合、アクセス経路ごとに認証レイヤーが異なります。

アクセス経路 認証 備考
直接 API 呼び出し(curl / 外部サービス) SimpleAuth(API_TOKEN 設定しないと無認証で公開される
Platform Studio → Server Mastra Platform アカウント Platform のアカウントがないと使えない

Platform 上の Studio は Mastra Platform アカウントで認証されるため、SimpleAuth のトークンを入力する画面は表示されません。Studio のアクセス制御は Platform の Organization / Project メンバー管理で行います。

SimpleAuth の制限事項

  • トークンはメモリ内に保持(期限切れ・リフレッシュなし)
  • 起動時にすべてのトークンを事前定義する必要がある
  • 本番の大規模サービスには向かない → その場合は JWT / Clerk / Auth0 を推奨

次回は、会話履歴

いかがでしたか。今回はシンプルなエージェントを最低限の形でPlatformにデプロイする手順を確認しました。次回はMastra Platform における「会話履歴」を扱います。

>> 次回 : (26) Mastra Platform のDBをNeon(PostgreSQL)に切り替える

Discussion