import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { McpModule, McpTransportType } from '@rekog/mcp-nest';
import { AuthModule } from '@/auth/auth.module';
import { SharedModule } from '@/shared/shared.module';
import { TimesheetConfigModule } from '@/config/config.module';
import { ProjectsModule } from '@/projects/projects.module';
import { TimesheetsModule } from '@/timesheets/timesheets.module';
import { ActivitiesModule } from '@/activities/activities.module';
import { DailyUpdatesModule } from '@/daily-updates/daily-updates.module';
@Module({
imports: [
// Global configuration
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ['.env.local', '.env'],
}),
// MCP Module - enables Model Context Protocol server
McpModule.forRoot({
name: 'timesheet-mcp-server',
version: '2.0.0',
instructions:
'Timesheet MCP server with NestJS. Start with whoami to get user info, projects, and modules. Available tools: whoami (user/projects/modules), create_new_timesheet_entry (log work), list_user_timesheet_entries (view entries), list_all_available_work_activities (work types), create_daily_scrum_standup_update (daily standup).',
transport: McpTransportType.STDIO, // For Claude and MCP clients
capabilities: {
tools: {},
resources: { subscribe: true },
},
}),
// Domain modules
TimesheetConfigModule,
SharedModule,
AuthModule,
ProjectsModule,
TimesheetsModule,
ActivitiesModule,
DailyUpdatesModule,
],
})
export class AppModule {}