/** * MCP Server Entry Point * Personal MCP server with programming, DevOps, family, and hobby tools */ import { mcpServer } from "./server.js"; import { logger } from "./utils/logger.js"; import { database } from "./storage/database.js"; // Register all tools import { registerCodeSnippetTools } from "./tools/programming/codeSnippet.js"; import { registerProjectTemplateTools } from "./tools/programming/projectTemplate.js"; import { registerDocsTools } from "./tools/programming/docs.js"; import { registerCodeReviewTools } from "./tools/programming/codeReview.js"; import { registerGitTools } from "./tools/programming/git.js"; import { registerNASTools } from "./tools/devops/nas.js"; import { registerServerTools } from "./tools/devops/server.js"; import { registerRouterTools } from "./tools/devops/router.js"; import { registerDeployTools } from "./tools/devops/deploy.js"; import { registerMathTools } from "./tools/family/math.js"; import { registerBabyTools } from "./tools/family/baby.js"; import { registerFootballTools } from "./tools/hobbies/football.js"; import { registerGameTools } from "./tools/hobbies/games.js"; import { registerNoteTools } from "./tools/common/notes.js"; import { registerTaskTools } from "./tools/common/tasks.js"; import { registerEmailTools } from "./tools/common/email.js"; // Register all tool modules logger.info("Registering tools..."); // Programming tools registerCodeSnippetTools(); registerProjectTemplateTools(); registerDocsTools(); registerCodeReviewTools(); registerGitTools(); // DevOps tools registerNASTools(); registerServerTools(); registerRouterTools(); registerDeployTools(); // Family tools registerMathTools(); registerBabyTools(); // Hobby tools registerFootballTools(); registerGameTools(); // Common tools registerNoteTools(); registerTaskTools(); registerEmailTools(); logger.info("All tools registered. Initializing database..."); // Initialize database connection database .initialize() .then(() => { logger.info("Database connected successfully. Starting MCP server..."); // Start the server return mcpServer.start(); }) .catch((error) => { logger.error("Failed to initialize database or start MCP server:", error); process.exit(1); }); // Graceful shutdown process.on("SIGINT", async () => { logger.info("Shutting down..."); await database.close(); process.exit(0); }); process.on("SIGTERM", async () => { logger.info("Shutting down..."); await database.close(); process.exit(0); });