본문으로 건너뛰기

코아 어댑터

그만큼@mastra/koa패키지는 Mastra를 실행하기 위한 서버 어댑터를 제공합니다.코아. 일반적인 어댑터 개념(생성자 옵션, 초기화 흐름 등)은 다음을 참조하세요.서버 어댑터.

설치
설치에 대한 직접 링크

Koa 어댑터와 Koa 프레임워크를 설치합니다.

npm install @mastra/koa@latest koa koa-bodyparser

사용예
사용예에 대한 직접 링크

server.ts
import Koa from 'koa'
import bodyParser from 'koa-bodyparser'
import { MastraServer } from '@mastra/koa'
import { mastra } from './mastra'

const app = new Koa()
app.use(bodyParser())

const server = new MastraServer({ app, mastra })

await server.init()

app.listen(3000, () => {
console.log('Server running on http://localhost:3000')
})

생성자 매개변수
생성자 매개변수에 대한 직접 링크

app:

Koa
Koa 앱 인스턴스

mastra:

Mastra
Mastra 인스턴스

prefix?:

string
= ''
경로 경로 접두사(예: /api/v2)

openapiPath?:

string
= ''
OpenAPI 명세를 제공할 경로(예: /openapi.json)

bodyLimitOptions?:

BodyLimitOptions
요청 본문 크기 제한

streamOptions?:

StreamOptions
= { redact: true }
스트림 마스킹 구성입니다. true(기본값)이면 클라이언트로 보내기 전에 스트림 청크에서 민감한 데이터(시스템 Prompt, Tool 정의, API 키)를 마스킹합니다.

customRouteAuthConfig?:

Map<string, boolean>
경로별 인증 재정의입니다. 키는 METHOD:PATH 형식입니다(예: GET:/api/health). 값이 false이면 경로가 공개되고, true이면 인증이 필요합니다.

tools?:

ToolsInput
서버에서 사용할 수 있는 Tool

taskStore?:

InMemoryTaskStore
A2A(Agent-to-Agent) 작업을 위한 작업 저장소

mcpOptions?:

MCPOptions
MCP 전송 옵션입니다. Cloudflare Workers 또는 Vercel Edge 같은 상태 비저장 환경에서는 serverless: true로 설정하세요.

오류 처리
오류 처리에 대한 직접 링크

Koa 어댑터는 Koa의 표준 오류 처리 패턴에 따라 경로 핸들러의 오류를 Koa의 미들웨어 체인을 통해 전파합니다. 이는 일반 Koa 오류 처리 미들웨어를 사용할 수 있음을 의미합니다.

server.ts
const app = new Koa()
app.use(bodyParser())

// Your error middleware catches errors from Mastra route handlers
app.use(async (ctx, next) => {
try {
await next()
} catch (err) {
ctx.status = err.status || 500
ctx.body = { error: err.message }
// Log, report to Sentry, etc.
}
})

const server = new MastraServer({ app, mastra })
await server.init()

server.onError 훅도 지원됩니다. 구성하면 오류가 미들웨어로 전파되기 전에 호출되며, 훅의 응답이 직접 사용됩니다.

src/mastra/index.ts
const mastra = new Mastra({
server: {
onError: (err, c) => {
console.error('Unhandled error:', err)
return c.json({ error: err.message }, 500)
},
},
})

init()을 사용하면 전역 오류 처리 미들웨어도 안전망으로 등록됩니다. 이 미들웨어에 도달한 오류는 표준 Koa 규칙에 따라 ctx.app.emit('error', err, ctx)를 통해 방출됩니다.

원시 경로 보호
원시 경로 보호에 대한 직접 링크

requiresAuth 같은 Mastra 관리 인증 및 경로 메타데이터가 필요하다면 registerApiRoute()를 사용하는 것이 좋습니다. 앱에 직접 마운트된 원시 Koa 경로에는 createAuthMiddleware()를 사용하세요.

server.ts
import Koa from 'koa'
import { createAuthMiddleware, MastraServer } from '@mastra/koa'
import { mastra } from './mastra'

const app = new Koa()
const server = new MastraServer({ app, mastra })

await server.init()

app.use(createAuthMiddleware({ mastra }))
app.use(async ctx => {
if (ctx.path !== '/custom/protected') return

const user = ctx.state.requestContext.get('user')
ctx.body = { user }
})

수동 초기화
수동 초기화에 대한 직접 링크

사용자 정의 미들웨어 순서가 필요하다면 init() 대신 각 메서드를 개별적으로 호출하세요. 자세한 내용은 수동 초기화를 참조하세요.

예에 대한 직접 링크