> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # Koa 适配器 `@mastra/koa` 包提供了一个 Server 适配器,用于通过 [Koa](https://koajs.com) 运行 Mastra。有关通用适配器概念(构造函数选项、初始化流程等),请参阅 [Server Adapters](https://mastra.zisheng.pro/docs/server/server-adapters)。 ## 安装 安装 Koa 适配器和 Koa 框架: **npm**: ```bash npm install @mastra/koa@latest koa koa-bodyparser ``` **pnpm**: ```bash pnpm add @mastra/koa@latest koa koa-bodyparser ``` **Yarn**: ```bash yarn add @mastra/koa@latest koa koa-bodyparser ``` **Bun**: ```bash bun add @mastra/koa@latest koa koa-bodyparser ``` ## 使用示例 ```typescript 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 app 实例 **mastra** (`Mastra`): Mastra 实例 **prefix** (`string`): 路由路径前缀(例如,/api/v2) (Default: `''`) **openapiPath** (`string`): 提供 OpenAPI 规范的路径(例如,/openapi.json) (Default: `''`) **bodyLimitOptions** (`BodyLimitOptions`): 请求正文大小限制 **streamOptions** (`StreamOptions`): 流脱敏配置。为 true(默认值)时,会在将流块发送给客户端之前,从中删除敏感数据(系统提示词、Tool 定义、API 密钥)。 (Default: `{ redact: true }`) **customRouteAuthConfig** (`Map`): 按路由覆盖身份验证。键为 METHOD:PATH(例如,GET:/api/health)。值为 false 时路由公开,值为 true 时需要身份验证。 **tools** (`ToolsInput`): Server 可用的 Tool **taskStore** (`InMemoryTaskStore`): 用于 A2A(Agent-to-Agent)操作的任务存储 **mcpOptions** (`MCPOptions`): MCP 传输选项。对于 Cloudflare Workers 或 Vercel Edge 等无状态环境,请设置 serverless: true。 ## 错误处理 Koa 适配器会沿 Koa 的中间件链向上传播路由处理程序中的错误,并遵循 Koa 的标准错误处理模式。这意味着可以使用常规 Koa 错误处理中间件: ```typescript 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`](https://mastra.zisheng.pro/reference/configuration) 钩子。配置后,它会在错误传播至中间件之前调用,并且会直接使用其响应: ```typescript 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)` 发出。 ## 保护原始路由 若要使用 Mastra 管理的身份验证和 `requiresAuth` 等路由元数据,请优先使用 [`registerApiRoute()`](https://mastra.zisheng.pro/reference/server/register-api-route)。对于直接挂载在 app 上的原始 Koa 路由,请使用 `createAuthMiddleware()`: ```typescript 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()`。详见[手动初始化](https://mastra.zisheng.pro/docs/server/server-adapters)。 ## 示例 - [Koa Adapter](https://github.com/mastra-ai/mastra/tree/main/examples/server-koa-adapter):基本 Koa Server 设置 ## 相关内容 - [Server Adapters](https://mastra.zisheng.pro/docs/server/server-adapters):共享的适配器概念 - [MastraServer Reference](https://mastra.zisheng.pro/reference/server/mastra-server):完整 API 参考 - [createRoute() Reference](https://mastra.zisheng.pro/reference/server/create-route):创建类型安全的自定义路由