@knowall-ai/mcp-neo4j-agent-memory
Version:
Graph-based memory system for AI agents. Store people, places, organizations as nodes. Build semantic relationships (KNOWS, WORKS_AT, CREATED). Word-tokenized search finds partial matches. Filter by date, traverse relationships, maintain temporal context.
66 lines (65 loc) • 2.11 kB
JavaScript
import { Neo4jServer } from './server.js';
// Debug environment for Smithery
if (process.env.DEBUG_SMITHERY) {
console.error('Environment variables:', {
NEO4J_URI: process.env.NEO4J_URI,
NEO4J_USERNAME: process.env.NEO4J_USERNAME,
NEO4J_PASSWORD: process.env.NEO4J_PASSWORD,
NEO4J_DATABASE: process.env.NEO4J_DATABASE
});
}
// Check if we have database configuration (ignore empty strings)
const uri = process.env.NEO4J_URI?.trim();
const username = process.env.NEO4J_USERNAME?.trim();
const password = process.env.NEO4J_PASSWORD?.trim();
const hasDbConfig = uri && username && password;
// Only validate environment variables if at least one non-empty value is provided
if ((uri || username || password) && !hasDbConfig) {
// If any Neo4j env var is set, all required ones must be set
if (!password) {
console.error('Error: NEO4J_PASSWORD environment variable is required');
process.exit(1);
}
if (!uri) {
console.error('Error: NEO4J_URI environment variable is required');
process.exit(1);
}
if (!username) {
console.error('Error: NEO4J_USERNAME environment variable is required');
process.exit(1);
}
}
const config = hasDbConfig ? {
uri: uri,
username: username,
password: password,
database: process.env.NEO4J_DATABASE?.trim() || undefined, // Optional for Neo4j Community Edition
} : undefined;
// サーバーの起動
const server = new Neo4jServer(config);
server.run().catch((error) => {
console.error('Failed to start Neo4j MCP server:', error);
process.exit(1);
});
// 終了時のクリーンアップ
process.on('SIGINT', async () => {
try {
await server.close();
process.exit(0);
}
catch (error) {
console.error('Error during shutdown:', error);
process.exit(1);
}
});
process.on('SIGTERM', async () => {
try {
await server.close();
process.exit(0);
}
catch (error) {
console.error('Error during shutdown:', error);
process.exit(1);
}
});