> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # MastraServer `MastraServer` 抽象クラスは、すべてのサーバーアダプターの基底クラスです。Hono または Express 以外のフレームワーク用アダプターを作成するには、このクラスを拡張します。 ## インポート ```typescript import { MastraServer } from '@mastra/server/server-adapter' ``` ## 型パラメーター ```typescript MastraServer ``` | パラメーター | 説明 | | ----------- | ------------------------------------ | | `TApp` | フレームワークのアプリ型(例:`Hono`、`Application`) | | `TRequest` | フレームワークのリクエスト型 | | `TResponse` | フレームワークのレスポンス/コンテキスト型 | ## コンストラクター ```typescript constructor(options: MastraServerOptions) ``` ### オプション **app** (`TApp`): フレームワークのアプリインスタンス **mastra** (`Mastra`): Mastra のインスタンス **prefix** (`string`): ルートパスのプレフィックス(例:/api/v2) (Default: `''`) **openapiPath** (`string`): OpenAPI 仕様を配信するパス (Default: `''`) **bodyLimitOptions** (`BodyLimitOptions`): リクエストボディのサイズ制限 **streamOptions** (`StreamOptions`): ストリームの秘匿化設定 (Default: `{ redact: true }`) **customRouteAuthConfig** (`Map`): ルートごとの認証オーバーライド **tools** (`Record`): サーバーで利用可能な Tool **taskStore** (`InMemoryTaskStore`): A2A(Agent-to-Agent)操作用のタスクストア **mcpOptions** (`MCPOptions`): サーバーレス環境向けの MCP トランスポートオプション ## 抽象メソッド アダプターでは、次のメソッドを実装する必要があります。 ### `registerContextMiddleware()` すべてのリクエストに Mastra コンテキストを付加します。 ```typescript abstract registerContextMiddleware(): void ``` **付加するコンテキスト:** - `mastra` - Mastra のインスタンス - `requestContext` - リクエストスコープのコンテキスト - `tools` - 利用可能な Tool - `abortSignal` - リクエストのキャンセルシグナル ### `registerAuthMiddleware()` 初期化時にアダプターの認証フックを実行します。公式アダプターでは、ルートごとに認証を適用する場合、このメソッドを何もしない実装にできます。 ```typescript abstract registerAuthMiddleware(): void ``` ### `registerRoute()` フレームワークに単一のルートを登録します。 ```typescript abstract registerRoute( app: TApp, route: ServerRoute, options: { prefix?: string } ): Promise ``` ### `getParams()` リクエストからパラメーターを抽出します。 ```typescript abstract getParams( route: ServerRoute, request: TRequest ): Promise<{ urlParams: Record; queryParams: Record; body: unknown; }> ``` ### `sendResponse()` ルートの種類に応じてレスポンスを送信します。 ```typescript abstract sendResponse( route: ServerRoute, response: TResponse, result: unknown ): Promise ``` ### `stream()` ストリーミングレスポンスを処理します。 ```typescript abstract stream( route: ServerRoute, response: TResponse, result: unknown ): Promise ``` ## インスタンスメソッド ### `init()` すべてのミドルウェアとルートを登録してサーバーを初期化します。 ```typescript async init(): Promise ``` 次の順序で呼び出します。 1. `registerContextMiddleware()` 2. `registerAuthMiddleware()` 3. `registerRoutes()` ### `registerRoutes()` すべての Mastra ルートを登録します。 ```typescript async registerRoutes(): Promise ``` ### `getApp()` フレームワークのアプリインスタンスを取得します。 ```typescript getApp(): T ``` ### `parsePathParams()` ルートの Zod スキーマを使用してパスパラメーターを検証します。 ```typescript async parsePathParams( route: ServerRoute, params: Record ): Promise> ``` ### `parseQueryParams()` ルートの Zod スキーマを使用してクエリパラメーターを検証します。 ```typescript async parseQueryParams( route: ServerRoute, params: Record ): Promise> ``` ### `parseBody()` ルートの Zod スキーマを使用してリクエストボディを検証します。 ```typescript async parseBody( route: ServerRoute, body: unknown ): Promise ``` ### `registerOpenAPIRoute()` OpenAPI 仕様を配信するエンドポイントを登録します。 ```typescript async registerOpenAPIRoute( app: TApp, config: OpenAPIConfig, options: { prefix?: string } ): Promise ``` ## protected メソッド ### `mergeRequestContext()` 複数のソース(クエリパラメーターとボディ)からのリクエストコンテキストをマージします。 ```typescript protected mergeRequestContext(options: { paramsRequestContext?: Record; bodyRequestContext?: Record; }): RequestContext ``` ## 型 ### `BodyLimitOptions` ```typescript interface BodyLimitOptions { maxSize: number onError: (error: unknown) => unknown } ``` ### `StreamOptions` ```typescript interface StreamOptions { redact?: boolean } ``` ### MCPOptions ```typescript interface MCPOptions { serverless?: boolean sessionIdGenerator?: () => string } ``` | プロパティ | 説明 | | -------------------- | ------------------------------------------------------------------------------------------------ | | `serverless` | `true` の場合、MCP はセッション管理を行わないステートレスモードで実行されます。Cloudflare Workers や Vercel Edge などのサーバーレス環境で使用します。 | | `sessionIdGenerator` | セッション ID を生成するカスタム関数。 | ## 例 ```typescript import { MastraServer, ServerRoute } from '@mastra/server/server-adapter' import type { Mastra } from '@mastra/core' export class MyServer extends MastraServer { 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 } } ``` ## 関連項目 - [サーバーアダプター](https://mastra.zisheng.pro/ja/docs/server/server-adapters):アダプターの使用方法 - [カスタムアダプター](https://mastra.zisheng.pro/ja/docs/server/custom-adapters):カスタムアダプターの作成 - [createRoute()](https://mastra.zisheng.pro/ja/reference/server/create-route):カスタムルートの作成