mongodb-memory-bank-mcp-v2
Version:
MongoDB-powered Memory Bank MCP server with hybrid search capabilities for AI assistants
64 lines • 2 kB
JavaScript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { config } from 'dotenv';
import { setupTools } from './tools/index.js';
import { connectToMongoDB, closeMongoDBConnection } from './db/connection.js';
import { logger } from './utils/logger.js';
// Load environment variables
config({ path: '.env.local' });
const SERVER_NAME = 'memory-bank-mcp';
const SERVER_VERSION = '0.1.0';
async function main() {
// Create server instance
const server = new Server({
name: SERVER_NAME,
version: SERVER_VERSION,
}, {
capabilities: {
tools: {},
resources: {},
},
});
// Connect to MongoDB
try {
await connectToMongoDB();
logger.info('Connected to MongoDB');
}
catch (error) {
logger.error('Failed to connect to MongoDB:', error);
process.exit(1);
}
// Set up tools
setupTools(server);
// Handle graceful shutdown
process.on('SIGINT', async () => {
logger.info('Shutting down server...');
await closeMongoDBConnection();
process.exit(0);
});
process.on('SIGTERM', async () => {
logger.info('Shutting down server...');
await closeMongoDBConnection();
process.exit(0);
});
// Create transport and start server
const transport = new StdioServerTransport();
await server.connect(transport);
logger.info(`${SERVER_NAME} v${SERVER_VERSION} started`);
}
// Handle uncaught errors
process.on('uncaughtException', (error) => {
logger.error('Uncaught exception:', error);
process.exit(1);
});
process.on('unhandledRejection', (error) => {
logger.error('Unhandled rejection:', error);
process.exit(1);
});
// Start the server
main().catch((error) => {
logger.error('Server failed to start:', error);
process.exit(1);
});
//# sourceMappingURL=index.js.map