import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { McpModule, McpTransportType } from '@rekog/mcp-nest';
import { LogseqModule } from './logseq/logseq.module';
import { ToolsModule } from './tools/tools.module';
import { ResourcesModule } from './resources/resources.module';
import { PromptsModule } from './prompts/prompts.module';
import { HealthModule } from './health/health.module';
/**
* HTTP/SSE 트랜스포트용 애플리케이션 모듈
*
* 원격지에서 MCP 서버에 접근할 때 사용
* - SSE (Server-Sent Events) 트랜스포트
* - Streamable HTTP 트랜스포트
*/
@Module({
imports: [
// 환경변수 설정
ConfigModule.forRoot({
isGlobal: true,
envFilePath: ['.env.local', '.env'],
}),
// MCP 모듈 설정 (HTTP/SSE 트랜스포트)
McpModule.forRoot({
name: 'logseq-mcp-server',
version: '0.1.0',
// SSE와 Streamable HTTP 트랜스포트 활성화
transport: [McpTransportType.SSE, McpTransportType.STREAMABLE_HTTP],
// SSE 엔드포인트 설정
sseEndpoint: 'sse',
messagesEndpoint: 'messages',
// Streamable HTTP 엔드포인트 설정
mcpEndpoint: 'mcp',
// SSE 설정 (연결 유지용 ping)
sse: {
pingEnabled: true,
pingIntervalMs: 30000,
},
// Streamable HTTP 설정
streamableHttp: {
enableJsonResponse: true,
statelessMode: true, // 상태 비저장 모드 (확장성 향상)
},
}),
// Logseq HTTP 클라이언트 모듈
LogseqModule,
// MCP Tools 모듈
ToolsModule,
// MCP Resources 모듈
ResourcesModule,
// MCP Prompts 모듈
PromptsModule,
// Health Check 모듈 (HTTP 모드 전용)
HealthModule,
],
})
export class HttpAppModule {}