마스트라서버
그만큼MastraServer추상 클래스는 모든 서버 어댑터의 기본입니다. Hono 또는 Express 이외의 프레임워크용 어댑터를 만들려면 이 클래스를 확장하세요.
수입수입에 대한 직접 링크
import { MastraServer } from '@mastra/server/server-adapter'
유형 매개변수유형 매개변수에 대한 직접 링크
MastraServer<TApp, TRequest, TResponse>
| 매개변수 | 설명 |
|---|---|
TApp | Framework app type (e.g., Hono, Application) |
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- 마스트라 인스턴스requestContext- 요청 범위 컨텍스트tools- 사용 가능한 ToolabortSignal- 취소 신호 요청
registerAuthMiddleware()registerauthmiddleware에 대한 직접 링크
초기화 중에 어댑터 인증 후크를 실행합니다. 공식 어댑터는 인증이 경로별로 시행될 때 이를 무작동(no-op)으로 구현할 수 있습니다.
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>
순서대로 호출:
registerContextMiddleware()registerAuthMiddleware()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>
보호된 방법보호된 방법에 대한 직접 링크
mergeRequestContext()mergerequestcontext에 대한 직접 링크
여러 소스(쿼리 매개변수 및 본문)의 요청 컨텍스트를 병합합니다.
protected mergeRequestContext(options: {
paramsRequestContext?: Record<string, any>;
bodyRequestContext?: Record<string, any>;
}): RequestContext
유형유형에 대한 직접 링크
BodyLimitOptionsbodylimitoptions에 대한 직접 링크
interface BodyLimitOptions {
maxSize: number
onError: (error: unknown) => unknown
}
StreamOptionsstreamoptions에 대한 직접 링크
interface StreamOptions {
redact?: boolean
}
MCP옵션MCP옵션에 대한 직접 링크
interface MCPOptions {
serverless?: boolean
sessionIdGenerator?: () => string
}
| 속성 | 설명 |
|---|---|
serverless | true이면 세션 관리 없이 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
}
}