Adaptateur NestJS
Le package @mastra/nestjs fournit un module NestJS permettant d'exécuter Mastra avec la plateforme NestJS basée sur Express.
La v1 est volontairement limitée à Express. Si Nest est démarré avec un autre adaptateur HTTP, MastraModule lève une erreur au démarrage au lieu de tenter une intégration partielle. Pour en savoir plus sur les concepts généraux des adaptateurs, consultez les adaptateurs de serveur.
InstallationLien direct vers Installation
Installez l'adaptateur NestJS et assurez-vous que votre application utilise la plateforme Express :
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/nestjs@latest
pnpm add @mastra/nestjs@latest
yarn add @mastra/nestjs@latest
bun add @mastra/nestjs@latest
Exemple d'utilisationLien direct vers Exemple d'utilisation
import { Module } from '@nestjs/common'
import { MastraModule } from '@mastra/nestjs'
import { mastra } from './mastra'
@Module({
imports: [
MastraModule.register({
mastra,
}),
],
})
export class AppModule {}
MastraModule enregistre un contrôleur générique (@All('*')). S'il est importé avant les modules de votre application, il peut intercepter des routes sans rapport et renvoyer des erreurs 404. Pour éviter les conflits, importez MastraModule en dernier ou montez-le sous un préfixe dédié (par exemple, /api/v1/mastra).
import { NestFactory } from '@nestjs/core'
import { AppModule } from './app.module'
async function bootstrap() {
const app = await NestFactory.create(AppModule)
await app.listen(3000)
}
bootstrap()
Par défaut, les routes Mastra sont montées sous /api. Utilisez prefix pour modifier ce chemin.
Options du moduleLien direct vers Options du module
mastra:
prefix?:
/api/v2)rateLimitOptions?:
shutdownOptions?:
bodyLimitOptions?:
streamOptions?:
tracingOptions?:
contextOptions?:
customRouteAuthConfig?:
METHOD:PATH.tools?:
taskStore?:
mcpOptions?:
auth?:
apiKey par paramètre de requête doit être activée explicitement pour assurer la rétrocompatibilité.Enregistrement asynchroneLien direct vers Enregistrement asynchrone
import { Module } from '@nestjs/common'
import { ConfigModule, ConfigService } from '@nestjs/config'
import { MastraModule } from '@mastra/nestjs'
import { Mastra } from '@mastra/core/mastra'
@Module({
imports: [
ConfigModule.forRoot(),
MastraModule.registerAsync({
imports: [ConfigModule],
useFactory: (config: ConfigService) => ({
mastra: new Mastra({
agents: {
greeter: {
name: 'greeter',
description: 'Greets the user',
model: config.get('MASTRA_MODEL', 'openai/gpt-5-mini'),
},
},
}),
prefix: config.get('MASTRA_PREFIX', '/api'),
}),
inject: [ConfigService],
}),
],
})
export class AppModule {}
Accès à MastraLien direct vers Accès à Mastra
Utilisez le token MASTRA ou MastraService dans vos services :
import { Injectable, Inject } from '@nestjs/common'
import { MASTRA, MastraService } from '@mastra/nestjs'
import type { Mastra } from '@mastra/core/mastra'
@Injectable()
export class AgentService {
constructor(@Inject(MASTRA) private readonly mastra: Mastra) {}
}
@Injectable()
export class WorkflowService {
constructor(private readonly mastraService: MastraService) {}
}
Routes MCPLien direct vers Routes MCP
Les points de terminaison MCP sont exposés sous le préfixe de l'API :
POST /api/mcp/:serverId/mcpGET /api/mcp/:serverId/ssePOST /api/mcp/:serverId/messages
Routes d'étatLien direct vers Routes d'état
Les points de terminaison opérationnels ne comportent volontairement aucun préfixe afin d'assurer la compatibilité avec l'infrastructure :
GET /healthGET /readyGET /info