Mastra を Vercel にデプロイする
@mastra/deployer-vercel を使用して、Mastra サーバーを Vercel の Serverless Function としてデプロイします。Deployer はコードをバンドルし、Vercel の Build Output API に準拠した .vercel/output ディレクトリを生成するため、追加設定なしでデプロイできます。
このガイドでは、Mastra サーバーのデプロイについて説明します。Server Adapter または Web フレームワークを使用している場合は、そのフレームワークの通常の方法でデプロイしてください。
始める前に始める前にへの直接リンク
Mastra アプリケーションと Vercel アカウントが必要です。
Vercel Functions のファイルシステムは一時的なため、設定するすべてのストレージ(Observability ストレージを含む)は外部でホストする必要があります。LibSQLStore でファイル URL を使用している場合は、リモートでホストされるデータベースに切り替えてください。
インストールインストールへの直接リンク
@mastra/deployer-vercel パッケージをプロジェクトに追加します。
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/deployer-vercel@latest
pnpm add @mastra/deployer-vercel@latest
yarn add @mastra/deployer-vercel@latest
bun add @mastra/deployer-vercel@latest
VercelDeployer をインポートし、Mastra 設定の Deployer として指定します。
import { Mastra } from '@mastra/core'
import { VercelDeployer } from '@mastra/deployer-vercel'
export const mastra = new Mastra({
deployer: new VercelDeployer(),
})
デプロイするデプロイするへの直接リンク
プロジェクトをリモート Git Provider(GitHub など)にプッシュし、リポジトリを Vercel に接続します。
Vercel はデフォルトで
npm run buildを実行し、これによってmastra buildが開始されます。ビルドスクリプトがない場合は、package.jsonに"build": "mastra build"を追加してください。注記アプリケーションの実行に必要な環境変数(モデル Provider の API キーなど)を設定してください。
準備ができたら Deploy をクリックし、最初のデプロイが完了するまで待ちます。
https://<your-project>.vercel.app/api/agentsでデプロイを確認します。Agent の一覧が JSON で返されます。Mastra サーバーはすべてのエンドポイントに
/apiを付けるため、リクエスト時の URL に追加する必要があります。これで、Mastra エンドポイントを HTTP 経由で呼び出せます。
警告エンドポイントを公開する前に、認証を設定してください。
StudioStudioへの直接リンク
studio オプションを有効にすると、API とともに Studio をデプロイできます。Studio は Vercel の Edge CDN から配信される静的アセットとしてデプロイされるため、Function の呼び出し回数を消費しません。
import { Mastra } from '@mastra/core'
import { VercelDeployer } from '@mastra/deployer-vercel'
export const mastra = new Mastra({
deployer: new VercelDeployer({
studio: true,
}),
})
デプロイ後、Studio はルート URL(https://<your-project>.vercel.app/)で利用でき、API は引き続き /api/* に配置されます。Studio は同じオリジンの API に自動接続するため、追加の環境変数は必要ありません。
Studio 自体のページは CDN から配信され、それ以外のパスはすべてサーバーに渡されるため、registerApiRoute() で追加したルートにはそれぞれのパスでアクセスできます。Studio が先に使用するため、Studio と同じパス(/agents や /workflows など)をカスタムルートに指定しないでください。
Studio を Mastra サーバーに接続すると、Agent、Workflow、Tool への完全なアクセス権を持ちます。不正アクセスを防ぐため、本番環境では認証や VPN などで適切に保護してください。
任意のオーバーライド任意のオーバーライドへの直接リンク
Vercel Deployer は、Vercel Output API の Function 設定に書き込まれる設定オプションをサポートします。maxDuration、memory、regions などの利用可能なオプションについては、VercelDeployer リファレンスを参照してください。
ObservabilityObservabilityへの直接リンク
Serverless Function はレスポンスを返した直後に終了することがあります。テレメトリの送信など、保留中の非同期処理は完了前に強制終了される可能性があります。flush() を待機すると、Function が終了する前にすべての Trace が送信されます。
import type { VercelRequest, VercelResponse } from '@vercel/node'
import { mastra } from '../src/mastra'
export default async function handler(req: VercelRequest, res: VercelResponse) {
const { message } = req.body
const agent = mastra.getAgent('myAgent')
const result = await agent.generate([{ role: 'user', content: message }])
await mastra.observability.flush()
return res.json(result)
}
Vercel Deployer には flush 呼び出しが含まれません。必要な場合は、ハンドラーを自分でラップし、レスポンスを返す前にこのロジックを追加してください。または、この問題が発生しない仮想マシンなどの長時間稼働サーバーにデプロイしてください。