@mseep/mcp-codex-keeper
Version:
An intelligent MCP server that serves as a guardian of development knowledge, providing AI assistants with curated access to latest documentation and best practices
70 lines (59 loc) • 1.9 kB
text/typescript
/**
* Aindreyway MCP Codex Keeper
* An intelligent MCP server for managing development documentation and best practices
*
* @author aindreyway
* @license MIT
*/
import { DocumentationServer } from './server.js';
import { execSync } from 'child_process';
/**
* Check if required dependencies are installed
*/
function checkDependencies() {
try {
// Check Node.js version
const nodeVersion = process.versions.node;
const [major] = nodeVersion.split('.').map(Number);
if (major < 18) {
throw new Error(`Node.js version 18 or higher is required. Current version: ${nodeVersion}`);
}
// Check npm
try {
execSync('npm --version', { stdio: 'ignore' });
} catch {
throw new Error(
'npm is not installed. Please install npm: https://docs.npmjs.com/downloading-and-installing-node-js-and-npm'
);
}
// Check npx
try {
execSync('npx --version', { stdio: 'ignore' });
} catch {
throw new Error('npx is not installed. Please install npx: npm install -g npx');
}
} catch (error: unknown) {
console.error('\n[Dependency Check Failed]');
console.error(error instanceof Error ? error.message : String(error));
console.error('\nPlease check the installation requirements in README.md\n');
process.exit(1);
}
}
// Handle uncaught errors
process.on('uncaughtException', error => {
console.error('[Fatal Error] Uncaught Exception:', error);
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
console.error('[Fatal Error] Unhandled Rejection at:', promise, 'reason:', reason);
process.exit(1);
});
// Check dependencies before starting
checkDependencies();
// Start server
const server = new DocumentationServer();
server.run().catch(error => {
console.error('[Fatal Error] Failed to start server:', error);
process.exit(1);
});