UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

59 lines (58 loc) 2.04 kB
#!/usr/bin/env node /** * AutoSnippet V2 MCP Server 入口 * 供 Cursor / VSCode Copilot MCP 配置使用 * * VSCode 配置示例 (.vscode/mcp.json): * { * "servers": { * "autosnippet": { * "type": "stdio", * "command": "node", * "args": ["/path/to/v2/bin/mcp-server.js"] * } * } * } * * Cursor 配置示例 (.cursor/mcp.json): * { * "mcpServers": { * "autosnippet": { * "command": "node", * "args": ["/path/to/v2/bin/mcp-server.js"] * } * } * } */ // 标记 MCP 模式 — 必须在任何模块加载前设置 // 使用动态 import() 避免 ESM static import hoisting 导致 env 未就绪 process.env.ASD_MCP_MODE = '1'; // ─── 进程级错误兜底 ──────────────────────────────────── process.on('uncaughtException', (error) => { process.stderr.write(`[MCP] Uncaught Exception: ${error.message}\n`); if (error.stack) { process.stderr.write(`${error.stack}\n`); } process.exit(1); }); process.on('unhandledRejection', (reason) => { const msg = reason instanceof Error ? reason.message : String(reason); process.stderr.write(`[MCP] Unhandled Rejection: ${msg}\n`); process.exit(1); }); // ─── Graceful Shutdown ───────────────────────────────── // 使用统一的 shutdown 协调器替代直接 process.exit(0) // 确保 DB WAL 刷盘、进行中请求排空、Socket.io 关闭 const { shutdown } = await import('../lib/shared/shutdown.js'); shutdown.install(); const { startMcpServer } = await import('../lib/external/mcp/McpServer.js'); startMcpServer() .then((server) => { // 注册 McpServer 清理 hook(内含 MCP transport close + bootstrap.shutdown + db.close) shutdown.register(() => server.shutdown(), 'mcp-server'); }) .catch((err) => { process.stderr.write(`MCP Server failed to start: ${err.message}\n`); process.exit(1); }); export {};