Claude Desktop Commander MCP

  • src
#!/usr/bin/env node import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { server } from './server.js'; import { commandManager } from './command-manager.js'; import { join, dirname } from 'path'; import { fileURLToPath } from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); async function runSetup() { const setupScript = join(__dirname, 'setup-claude-server.js'); const { default: setupModule } = await import(setupScript); if (typeof setupModule === 'function') { await setupModule(); } } async function runServer() { try { // Check if first argument is "setup" if (process.argv[2] === 'setup') { await runSetup(); return; } // Handle uncaught exceptions process.on('uncaughtException', async (error) => { const errorMessage = error instanceof Error ? error.message : String(error); process.exit(1); }); // Handle unhandled rejections process.on('unhandledRejection', async (reason) => { const errorMessage = reason instanceof Error ? reason.message : String(reason); process.exit(1); }); const transport = new StdioServerTransport(); // Load blocked commands from config file await commandManager.loadBlockedCommands(); await server.connect(transport); } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); process.stderr.write(JSON.stringify({ type: 'error', timestamp: new Date().toISOString(), message: `Failed to start server: ${errorMessage}` }) + '\n'); process.exit(1); } } runServer().catch(async (error) => { const errorMessage = error instanceof Error ? error.message : String(error); process.stderr.write(JSON.stringify({ type: 'error', timestamp: new Date().toISOString(), message: `Fatal error running server: ${errorMessage}` }) + '\n'); process.exit(1); });