UNPKG

@dw8k/mcp-fallback-server

Version:

MCP fallback server that extracts keywords from prompts and triggers tool recommendations.

53 lines 2.8 kB
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { FallbackService } from './core/services/fallback.service.js'; import { CrawlerAdapter } from './infrastructure/adapters/crawler.adapter.js'; import { GuiAdapter } from './infrastructure/adapters/gui.adapter.js'; import { McpAdapter } from './infrastructure/adapters/mcp.adapter.js'; import { config } from './infrastructure/config/index.js'; async function bootstrap() { // console.log('[Main] Initializing application for Stdio transport...'); // Instantiate Adapters const crawlerAdapter = new CrawlerAdapter(); const guiAdapter = new GuiAdapter(); // console.log('[Main] Adapters initialized.'); // Instantiate Core Service const fallbackService = new FallbackService(crawlerAdapter, guiAdapter); // console.log('[Main] Core service initialized.'); // Instantiate MCP Adapter const mcpAdapter = new McpAdapter(fallbackService); // console.log('[Main] MCP adapter initialized.'); // Create MCP Server // console.log(`[Main] Creating MCP Server: ${config.serverName || 'FallbackMCPDevServer'} v${config.serverVersion || '0.0.1'}`); const mcpServer = new McpServer({ name: config.serverName || 'FallbackMCPDevServer', version: config.serverVersion || '0.0.1', }); // console.log('[Main] MCP Server instance created.'); // Register Tools with MCP Server // console.log(`[Main] Registering tool: ${mcpAdapter.toolName}...`); mcpServer.tool(mcpAdapter.toolName, mcpAdapter.description, mcpAdapter.inputSchema.shape, // Pass the .shape of the Zod schema mcpAdapter.handleCallTool); // console.log(`[Main] Tool '${mcpAdapter.toolName}' registered successfully.`); // Create Stdio Transport and Connect // console.log('[Main] Creating StdioServerTransport...'); const transport = new StdioServerTransport(); // Uses default stdin/stdout // console.log('[Main] StdioServerTransport created.'); // console.log('[Main] Connecting MCP Server to Stdio transport...'); try { // McpServer.connect() internally calls transport.start(). await mcpServer.connect(transport); // console.log('[Main] MCP Server successfully connected and listening via Stdio.'); // Stdio server waits for input from the parent process, so no separate 'keep alive' logic is needed. } catch (error) { console.error('[Main] Failed to connect MCP Server to Stdio transport:', error); process.exit(1); } } // --- Application Entry Point --- bootstrap().catch((error) => { console.error('[Main] Unhandled error during bootstrap:', error); process.exit(1); }); //# sourceMappingURL=main.js.map