UNPKG

graph-memory-mcp-server

Version:

Graphiti Memory Graph MCP Server - Search and explore knowledge graphs using Graphiti

115 lines (94 loc) 3.78 kB
#!/usr/bin/env node import path from 'path'; import { fileURLToPath } from 'url'; import { spawn } from 'child_process'; import fs from 'fs'; import os from 'os'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const packageRoot = path.resolve(__dirname, '..'); // Check for configuration from env or args const args = process.argv.slice(2); let zepApiKey = process.env.ZEP_API_KEY || ''; let zepBaseUrl = process.env.ZEP_API_BASE_URL || 'https://api.getzep.com'; let mongoUri = process.env.MONGO_URI || process.env.MONGODB_URI || ''; let dbName = process.env.MONGO_DB_NAME || process.env.DB_NAME || ''; for (let i = 0; i < args.length; i++) { const arg = args[i]; if ((arg === '--zep-api-key' || arg === '--api-key' || arg === '-k') && i + 1 < args.length) { zepApiKey = args[++i]; } else if ((arg === '--zep-base-url' || arg === '--base-url' || arg === '-u') && i + 1 < args.length) { zepBaseUrl = args[++i]; } else if ((arg === '--mongo-uri' || arg === '--mongodb-uri') && i + 1 < args.length) { mongoUri = args[++i]; } else if ((arg === '--db-name' || arg === '--database-name') && i + 1 < args.length) { dbName = args[++i]; } else if (arg === '--help' || arg === '-h') { console.log(` Graphiti Memory Graph MCP Server Usage: graph-memory-mcp-server [options] Options: --zep-api-key, -k <key> Your Zep API key (or set ZEP_API_KEY env var) --zep-base-url, -u <url> Zep API base URL (or set ZEP_API_BASE_URL env var, default: https://api.getzep.com) --mongo-uri <uri> MongoDB connection URI (or set MONGO_URI/MONGODB_URI env var) --db-name <name> Database name (or set MONGO_DB_NAME/DB_NAME env var, default: graphiti-memory) --help, -h Show this help message Environment Variables: ZEP_API_KEY Your Zep API key ZEP_API_BASE_URL Zep API base URL MONGO_URI / MONGODB_URI MongoDB connection string MONGO_DB_NAME / DB_NAME Database name Example: graph-memory-mcp-server --zep-api-key your-key --mongo-uri mongodb://localhost:27017 `); process.exit(0); } } if (!zepApiKey) { console.error('Error: Zep API key is required. Use --zep-api-key argument or set ZEP_API_KEY environment variable.'); process.exit(1); } if (!mongoUri) { console.error('Error: MongoDB URI is required. Use --mongo-uri argument or set MONGO_URI environment variable.'); process.exit(1); } function startServer(zepApiKey, zepBaseUrl, mongoUri, dbName) { const logFile = path.join(os.tmpdir(), 'graphiti-memory-mcp.log'); console.error(`Log file: ${logFile}`); const indexPath = path.join(packageRoot, 'dist', 'index.js'); if (!fs.existsSync(indexPath)) { console.error(`Error: Server file not found at ${indexPath}`); console.error('Please run "npm run build" first.'); process.exit(1); } // Set environment variables for the server process const serverEnv = { ...process.env, ZEP_API_KEY: zepApiKey, ZEP_API_BASE_URL: zepBaseUrl, MONGO_URI: mongoUri }; if (dbName) { serverEnv.MONGO_DB_NAME = dbName; } const serverProcess = spawn(process.execPath, [indexPath], { stdio: 'inherit', env: serverEnv }); serverProcess.on('error', (err) => { console.error('Failed to start server:', err); process.exit(1); }); serverProcess.on('exit', (code) => { if (code !== 0) { console.error(`Server exited with code ${code}`); process.exit(code); } }); process.on('SIGINT', () => { console.log('\nShutting down server...'); serverProcess.kill('SIGINT'); process.exit(0); }); } startServer(zepApiKey, zepBaseUrl, mongoUri, dbName);