Skip to main content
Glama

n8n-MCP

by 88-888
test-multi-tenant-simple.ts5.03 kB
#!/usr/bin/env ts-node /** * Simple test for multi-tenant functionality * Tests that tools are registered correctly based on configuration */ import { isN8nApiConfigured } from '../src/config/n8n-api'; import { InstanceContext } from '../src/types/instance-context'; import dotenv from 'dotenv'; dotenv.config(); async function testMultiTenant() { console.log('🧪 Testing Multi-Tenant Tool Registration\n'); console.log('=' .repeat(60)); // Save original environment const originalEnv = { ENABLE_MULTI_TENANT: process.env.ENABLE_MULTI_TENANT, N8N_API_URL: process.env.N8N_API_URL, N8N_API_KEY: process.env.N8N_API_KEY }; try { // Test 1: Default - no API config console.log('\n✅ Test 1: No API configuration'); delete process.env.N8N_API_URL; delete process.env.N8N_API_KEY; delete process.env.ENABLE_MULTI_TENANT; const hasConfig1 = isN8nApiConfigured(); console.log(` Environment API configured: ${hasConfig1}`); console.log(` Multi-tenant enabled: ${process.env.ENABLE_MULTI_TENANT === 'true'}`); console.log(` Should show tools: ${hasConfig1 || process.env.ENABLE_MULTI_TENANT === 'true'}`); // Test 2: Multi-tenant enabled console.log('\n✅ Test 2: Multi-tenant enabled (no env API)'); process.env.ENABLE_MULTI_TENANT = 'true'; const hasConfig2 = isN8nApiConfigured(); console.log(` Environment API configured: ${hasConfig2}`); console.log(` Multi-tenant enabled: ${process.env.ENABLE_MULTI_TENANT === 'true'}`); console.log(` Should show tools: ${hasConfig2 || process.env.ENABLE_MULTI_TENANT === 'true'}`); // Test 3: Environment variables set console.log('\n✅ Test 3: Environment variables set'); process.env.ENABLE_MULTI_TENANT = 'false'; process.env.N8N_API_URL = 'https://test.n8n.cloud'; process.env.N8N_API_KEY = 'test-key'; const hasConfig3 = isN8nApiConfigured(); console.log(` Environment API configured: ${hasConfig3}`); console.log(` Multi-tenant enabled: ${process.env.ENABLE_MULTI_TENANT === 'true'}`); console.log(` Should show tools: ${hasConfig3 || process.env.ENABLE_MULTI_TENANT === 'true'}`); // Test 4: Instance context simulation console.log('\n✅ Test 4: Instance context (simulated)'); const instanceContext: InstanceContext = { n8nApiUrl: 'https://instance.n8n.cloud', n8nApiKey: 'instance-key', instanceId: 'test-instance' }; const hasInstanceConfig = !!(instanceContext.n8nApiUrl && instanceContext.n8nApiKey); console.log(` Instance has API config: ${hasInstanceConfig}`); console.log(` Environment API configured: ${hasConfig3}`); console.log(` Multi-tenant enabled: ${process.env.ENABLE_MULTI_TENANT === 'true'}`); console.log(` Should show tools: ${hasConfig3 || hasInstanceConfig || process.env.ENABLE_MULTI_TENANT === 'true'}`); // Test 5: Multi-tenant with instance strategy console.log('\n✅ Test 5: Multi-tenant with instance strategy'); process.env.ENABLE_MULTI_TENANT = 'true'; process.env.MULTI_TENANT_SESSION_STRATEGY = 'instance'; delete process.env.N8N_API_URL; delete process.env.N8N_API_KEY; const hasConfig5 = isN8nApiConfigured(); const sessionStrategy = process.env.MULTI_TENANT_SESSION_STRATEGY || 'instance'; console.log(` Environment API configured: ${hasConfig5}`); console.log(` Multi-tenant enabled: ${process.env.ENABLE_MULTI_TENANT === 'true'}`); console.log(` Session strategy: ${sessionStrategy}`); console.log(` Should show tools: ${hasConfig5 || process.env.ENABLE_MULTI_TENANT === 'true'}`); if (instanceContext.instanceId) { const sessionId = `instance-${instanceContext.instanceId}-uuid`; console.log(` Session ID format: ${sessionId}`); } console.log('\n' + '=' .repeat(60)); console.log('✅ All configuration tests passed!'); console.log('\n📝 Summary:'); console.log(' - Tools are shown when: env API configured OR multi-tenant enabled OR instance context provided'); console.log(' - Session isolation works with instance-based session IDs in multi-tenant mode'); console.log(' - Backward compatibility maintained for env-based configuration'); } catch (error) { console.error('\n❌ Test failed:', error); process.exit(1); } finally { // Restore original environment if (originalEnv.ENABLE_MULTI_TENANT !== undefined) { process.env.ENABLE_MULTI_TENANT = originalEnv.ENABLE_MULTI_TENANT; } else { delete process.env.ENABLE_MULTI_TENANT; } if (originalEnv.N8N_API_URL !== undefined) { process.env.N8N_API_URL = originalEnv.N8N_API_URL; } else { delete process.env.N8N_API_URL; } if (originalEnv.N8N_API_KEY !== undefined) { process.env.N8N_API_KEY = originalEnv.N8N_API_KEY; } else { delete process.env.N8N_API_KEY; } } } // Run tests testMultiTenant().catch(error => { console.error('Test execution failed:', error); process.exit(1); });

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/88-888/n8n-mcp'

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