import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; // Not currently using this transport directly, but kept for reference // import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { getLogger } from '../utils/logging.js'; import { getTransportManager } from '../server/transport.js'; const logger = getLogger(); /** * Initialize the appropriate transport based on how the package is invoked * @param server The MCP server instance * @returns The configured transport and a boolean indicating if it's stdio mode */ export async function initializeTransport(server: McpServer): Promise<{ isStdioMode: boolean }> { // Check if being run directly as a CLI application or if forced via environment variable const isStdioMode = process.argv.includes('--stdio') || process.env.MCP_TRANSPORT === 'stdio'; if (isStdioMode) { logger.info('Starting in CLI mode with stdio transport'); const stdioTransport = new StdioServerTransport(); await server.connect(stdioTransport); return { isStdioMode: true }; } else { logger.info('Starting in server mode with HTTP transport'); const transportManager = getTransportManager(); const httpTransport = transportManager.createTransport(); await server.connect(httpTransport); return { isStdioMode: false }; } }