Skip to main content
Glama
knowall-ai

Neo4j Agent Memory MCP Server

by knowall-ai
test-get-guidance.js4.81 kB
#!/usr/bin/env node // Test script for get_guidance function // This script tests the guidance system for memory tools import { spawn } from 'child_process'; import dotenv from 'dotenv'; // Load environment variables dotenv.config({ path: '../.env' }); const testGetGuidance = () => { console.log('📚 Testing get_guidance function...'); const mcp = spawn('node', ['../build/index.js'], { env: { ...process.env, NEO4J_PASSWORD: process.env.NEO4J_PASSWORD, NEO4J_DATABASE: process.env.NEO4J_DATABASE, NEO4J_URI: process.env.NEO4J_URI, NEO4J_USERNAME: process.env.NEO4J_USERNAME }, stdio: ['pipe', 'pipe', 'pipe'] }); let output = ''; let testsPassed = 0; const totalTests = 5; mcp.stdout.on('data', (data) => { output += data.toString(); const lines = output.split('\n'); for (const line of lines) { if (line.trim()) { try { const response = JSON.parse(line); if (response.id && response.result) { const content = response.result?.content?.[0]?.text; switch(response.id) { case 1: // All guidance if (content && content.includes('Common Memory Labels') && content.includes('Common Relationship Types') && content.includes('Best Practices')) { console.log('✅ All guidance test passed'); testsPassed++; } else { console.error('❌ All guidance test failed'); } break; case 2: // Labels only if (content && content.includes('person, place, organization')) { console.log('✅ Labels guidance test passed'); testsPassed++; } else { console.error('❌ Labels guidance test failed'); } break; case 3: // Relationships only if (content && content.includes('KNOWS, FRIENDS_WITH')) { console.log('✅ Relationships guidance test passed'); testsPassed++; } else { console.error('❌ Relationships guidance test failed'); } break; case 4: // Best practices if (content && content.includes('Use lowercase for labels')) { console.log('✅ Best practices guidance test passed'); testsPassed++; } else { console.error('❌ Best practices guidance test failed'); } break; case 5: // Invalid topic if (content && content.includes('Unknown topic')) { console.log('✅ Invalid topic test passed'); testsPassed++; } else { console.error('❌ Invalid topic test failed'); } break; } if (testsPassed === totalTests) { console.log(`\n✨ All ${totalTests} tests completed successfully!`); mcp.kill(); process.exit(0); } } } catch (e) { // Ignore non-JSON lines } } } }); mcp.stderr.on('data', (data) => { console.error('❌ Error:', data.toString()); }); const sendMessage = (topic) => { const message = { jsonrpc: '2.0', id: testsPassed + 1, method: 'tools/call', params: { name: 'get_guidance', arguments: topic ? { topic } : {} } }; mcp.stdin.write(JSON.stringify(message) + '\n'); }; // Test 1: Get all guidance (no topic) console.log('\nTest 1: Getting all guidance...'); sendMessage(); // Test 2: Get labels guidance setTimeout(() => { console.log('\nTest 2: Getting labels guidance...'); sendMessage('labels'); }, 500); // Test 3: Get relationships guidance setTimeout(() => { console.log('\nTest 3: Getting relationships guidance...'); sendMessage('relationships'); }, 1000); // Test 4: Get best practices setTimeout(() => { console.log('\nTest 4: Getting best practices...'); sendMessage('best-practices'); }, 1500); // Test 5: Invalid topic setTimeout(() => { console.log('\nTest 5: Testing invalid topic...'); sendMessage('invalid-topic'); }, 2000); // Set a timeout but mark test as failed if we reach it const timeout = setTimeout(() => { console.error(`\n❌ Test failed: Timeout reached. Passed ${testsPassed}/${totalTests} tests`); mcp.kill(); process.exit(1); }, 10000); }; testGetGuidance();

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/knowall-ai/mcp-neo4j-agent-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server