メインコンテンツへ移動

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 install @mastra/deployer-vercel@latest

VercelDeployer をインポートし、Mastra 設定の Deployer として指定します。

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { VercelDeployer } from '@mastra/deployer-vercel'

export const mastra = new Mastra({
deployer: new VercelDeployer(),
})

デプロイする
デプロイするへの直接リンク

  1. プロジェクトをリモート Git Provider(GitHub など)にプッシュし、リポジトリを Vercel に接続します。

    Vercel はデフォルトで npm run build を実行し、これによって mastra build が開始されます。ビルドスクリプトがない場合は、package.json"build": "mastra build" を追加してください。

    注記

    アプリケーションの実行に必要な環境変数(モデル Provider の API キーなど)を設定してください。

  2. 準備ができたら Deploy をクリックし、最初のデプロイが完了するまで待ちます。

  3. https://<your-project>.vercel.app/api/agents でデプロイを確認します。Agent の一覧が JSON で返されます。

    Mastra サーバーはすべてのエンドポイントに /api を付けるため、リクエスト時の URL に追加する必要があります。

  4. これで、Mastra エンドポイントを HTTP 経由で呼び出せます。

    警告

    エンドポイントを公開する前に、認証を設定してください。

Studio
Studioへの直接リンク

studio オプションを有効にすると、API とともに Studio をデプロイできます。Studio は Vercel の Edge CDN から配信される静的アセットとしてデプロイされるため、Function の呼び出し回数を消費しません。

src/mastra/index.ts
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 設定に書き込まれる設定オプションをサポートします。maxDurationmemoryregions などの利用可能なオプションについては、VercelDeployer リファレンスを参照してください。

Observability
Observabilityへの直接リンク

Serverless Function はレスポンスを返した直後に終了することがあります。テレメトリの送信など、保留中の非同期処理は完了前に強制終了される可能性があります。flush() を待機すると、Function が終了する前にすべての Trace が送信されます。

api/chat.ts
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 呼び出しが含まれません。必要な場合は、ハンドラーを自分でラップし、レスポンスを返す前にこのロジックを追加してください。または、この問題が発生しない仮想マシンなどの長時間稼働サーバーにデプロイしてください。