UNPKG

@mseep/atlas-mcp-server

Version:

A Model Context Protocol (MCP) server for ATLAS, a Neo4j-powered task management system for LLM Agents - implementing a three-tier architecture (Projects, Tasks, Knowledge) to manage complex workflows.

50 lines (49 loc) 1.76 kB
#!/usr/bin/env node import { createMcpServer } from "./mcp/server.js"; import { closeNeo4jConnection } from "./services/neo4j/index.js"; import { logger } from "./utils/logger.js"; let server; const shutdown = async (signal) => { logger.info(`Received ${signal}. Starting graceful shutdown...`); try { if (server) { logger.info("Closing MCP server..."); await server.close(); logger.info("MCP server closed successfully."); } logger.info("Closing Neo4j driver..."); await closeNeo4jConnection(); logger.info("Neo4j driver closed successfully."); logger.info("Graceful shutdown completed."); process.exit(0); } catch (error) { logger.error("Error during shutdown:", { error }); process.exit(1); } }; const start = async () => { try { logger.info("Starting ATLAS MCP Server..."); // Create and store server instance server = await createMcpServer(); logger.info("ATLAS MCP Server is running and awaiting messages."); // Handle process signals for graceful shutdown process.on("SIGTERM", () => shutdown("SIGTERM")); process.on("SIGINT", () => shutdown("SIGINT")); // Handle uncaught errors process.on("uncaughtException", (error) => { logger.error("Uncaught exception:", { error }); shutdown("UNCAUGHT_EXCEPTION"); }); process.on("unhandledRejection", (reason) => { logger.error("Unhandled rejection:", { reason }); shutdown("UNHANDLED_REJECTION"); }); } catch (error) { logger.error("Failed to start ATLAS MCP Server:", { error }); process.exit(1); } }; start();