メインコンテンツへ移動

MastraServer

MastraServer 抽象クラスは、すべてのサーバーアダプターの基底クラスです。Hono または Express 以外のフレームワーク用アダプターを作成するには、このクラスを拡張します。

インポート
インポートへの直接リンク

import { MastraServer } from '@mastra/server/server-adapter'

型パラメーター
型パラメーターへの直接リンク

MastraServer<TApp, TRequest, TResponse>
パラメーター説明
TAppフレームワークのアプリ型(例:HonoApplication
TRequestフレームワークのリクエスト型
TResponseフレームワークのレスポンス/コンテキスト型

コンストラクター
コンストラクターへの直接リンク

constructor(options: MastraServerOptions<TApp>)

オプション
オプションへの直接リンク

app:

TApp
フレームワークのアプリインスタンス

mastra:

Mastra
Mastra のインスタンス

prefix?:

string
= ''
ルートパスのプレフィックス(例:/api/v2

openapiPath?:

string
= ''
OpenAPI 仕様を配信するパス

bodyLimitOptions?:

BodyLimitOptions
リクエストボディのサイズ制限

streamOptions?:

StreamOptions
= { redact: true }
ストリームの秘匿化設定

customRouteAuthConfig?:

Map<string, boolean>
ルートごとの認証オーバーライド

tools?:

Record<string, Tool>
サーバーで利用可能な Tool

taskStore?:

InMemoryTaskStore
A2A(Agent-to-Agent)操作用のタスクストア

mcpOptions?:

MCPOptions
サーバーレス環境向けの MCP トランスポートオプション

抽象メソッド
抽象メソッドへの直接リンク

アダプターでは、次のメソッドを実装する必要があります。

registerContextMiddleware()
registercontextmiddlewareへの直接リンク

すべてのリクエストに Mastra コンテキストを付加します。

abstract registerContextMiddleware(): void

付加するコンテキスト:

  • mastra - Mastra のインスタンス
  • requestContext - リクエストスコープのコンテキスト
  • tools - 利用可能な Tool
  • abortSignal - リクエストのキャンセルシグナル

registerAuthMiddleware()
registerauthmiddlewareへの直接リンク

初期化時にアダプターの認証フックを実行します。公式アダプターでは、ルートごとに認証を適用する場合、このメソッドを何もしない実装にできます。

abstract registerAuthMiddleware(): void

registerRoute()
registerrouteへの直接リンク

フレームワークに単一のルートを登録します。

abstract registerRoute(
app: TApp,
route: ServerRoute,
options: { prefix?: string }
): Promise<void>

getParams()
getparamsへの直接リンク

リクエストからパラメーターを抽出します。

abstract getParams(
route: ServerRoute,
request: TRequest
): Promise<{
urlParams: Record<string, string>;
queryParams: Record<string, string>;
body: unknown;
}>

sendResponse()
sendresponseへの直接リンク

ルートの種類に応じてレスポンスを送信します。

abstract sendResponse(
route: ServerRoute,
response: TResponse,
result: unknown
): Promise<unknown>

stream()
streamへの直接リンク

ストリーミングレスポンスを処理します。

abstract stream(
route: ServerRoute,
response: TResponse,
result: unknown
): Promise<unknown>

インスタンスメソッド
インスタンスメソッドへの直接リンク

init()
initへの直接リンク

すべてのミドルウェアとルートを登録してサーバーを初期化します。

async init(): Promise<void>

次の順序で呼び出します。

  1. registerContextMiddleware()
  2. registerAuthMiddleware()
  3. registerRoutes()

registerRoutes()
registerroutesへの直接リンク

すべての Mastra ルートを登録します。

async registerRoutes(): Promise<void>

getApp()
getappへの直接リンク

フレームワークのアプリインスタンスを取得します。

getApp<T = TApp>(): T

parsePathParams()
parsepathparamsへの直接リンク

ルートの Zod スキーマを使用してパスパラメーターを検証します。

async parsePathParams(
route: ServerRoute,
params: Record<string, string>
): Promise<Record<string, unknown>>

parseQueryParams()
parsequeryparamsへの直接リンク

ルートの Zod スキーマを使用してクエリパラメーターを検証します。

async parseQueryParams(
route: ServerRoute,
params: Record<string, string>
): Promise<Record<string, unknown>>

parseBody()
parsebodyへの直接リンク

ルートの Zod スキーマを使用してリクエストボディを検証します。

async parseBody(
route: ServerRoute,
body: unknown
): Promise<unknown>

registerOpenAPIRoute()
registeropenapirouteへの直接リンク

OpenAPI 仕様を配信するエンドポイントを登録します。

async registerOpenAPIRoute(
app: TApp,
config: OpenAPIConfig,
options: { prefix?: string }
): Promise<void>

protected メソッド
protected メソッドへの直接リンク

mergeRequestContext()
mergerequestcontextへの直接リンク

複数のソース(クエリパラメーターとボディ)からのリクエストコンテキストをマージします。

protected mergeRequestContext(options: {
paramsRequestContext?: Record<string, any>;
bodyRequestContext?: Record<string, any>;
}): RequestContext

型への直接リンク

BodyLimitOptions
bodylimitoptionsへの直接リンク

interface BodyLimitOptions {
maxSize: number
onError: (error: unknown) => unknown
}

StreamOptions
streamoptionsへの直接リンク

interface StreamOptions {
redact?: boolean
}

MCPOptions
MCPOptionsへの直接リンク

interface MCPOptions {
serverless?: boolean
sessionIdGenerator?: () => string
}
プロパティ説明
serverlesstrue の場合、MCP はセッション管理を行わないステートレスモードで実行されます。Cloudflare Workers や Vercel Edge などのサーバーレス環境で使用します。
sessionIdGeneratorセッション ID を生成するカスタム関数。

例への直接リンク

import { MastraServer, ServerRoute } from '@mastra/server/server-adapter'
import type { Mastra } from '@mastra/core'

export class MyServer extends MastraServer<MyApp, MyRequest, MyResponse> {
registerContextMiddleware(): void {
this.app.use('*', (req, res, next) => {
res.locals.mastra = this.mastra
next()
})
}

registerAuthMiddleware(): void {
const auth = this.mastra.getServer()?.auth
if (!auth) return
// Register global auth middleware, or leave this empty and
// enforce auth when routes are registered.
}

async registerRoute(app, route, { prefix }) {
// Implement route registration
}

async getParams(route, request) {
return {
urlParams: request.params,
queryParams: request.query,
body: request.body,
}
}

async sendResponse(route, response, result) {
return response.json(result)
}

async stream(route, response, result) {
// Implement streaming
}
}