import { McpOptions } from '../interfaces'; import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { buildMcpCapabilities } from './capabilities-builder'; import { McpRegistryDiscoveryService } from '../services/mcp-registry-discovery.service'; import { Logger } from '@nestjs/common'; export function createMcpServer( mcpModuleId: string, registry: McpRegistryDiscoveryService, options: McpOptions, logger: Logger, ): McpServer { const capabilities = buildMcpCapabilities(mcpModuleId, registry, options); logger.debug('Built MCP capabilities:', capabilities); const mcpServer = new McpServer( { name: options.name, version: options.version, ...(options.title && { title: options.title }), ...(options.description && { description: options.description }), ...(options.websiteUrl && { websiteUrl: options.websiteUrl }), ...(options.icons && { icons: options.icons }), }, { capabilities, instructions: options.instructions || '', }, ); return options.serverMutator ? options.serverMutator(mcpServer) : mcpServer; }