Skip to main content
Glama
by LeGenAI
final-database-test.js•3.92 kB
// Polyfill fetch for Node.js import fetch, { Headers, Request, Response } from 'node-fetch'; global.fetch = fetch; global.Headers = Headers; global.Request = Request; global.Response = Response; import { createClient } from '@supabase/supabase-js'; import { config } from 'dotenv'; import fs from 'fs'; config(); const supabaseUrl = process.env.SUPABASE_URL; const supabaseKey = process.env.SUPABASE_KEY; console.log('šŸ” Final Database Test for MCP MAGMA Handbook'); console.log('=' .repeat(50)); const supabase = createClient(supabaseUrl, supabaseKey); async function runFinalTest() { try { console.log('\nšŸ“Š 1. Database Connection Test'); const { data: connectionTest, error: connError } = await supabase .from('magma_documents_v2') .select('count') .limit(1); if (connError) { console.log('āŒ Connection failed:', connError.message); return; } console.log('āœ… Database connection successful'); console.log('\nšŸ“‹ 2. Table Status Check'); const { count: docCount } = await supabase .from('magma_documents_v2') .select('*', { count: 'exact', head: true }); const { count: funcCount } = await supabase .from('magma_functions') .select('*', { count: 'exact', head: true }); console.log(` šŸ“„ Documents: ${docCount || 0}`); console.log(` āš™ļø Functions: ${funcCount || 0}`); console.log('\nšŸ”§ 3. Required Functions Check'); const requiredFunctions = [ 'search_magma_hybrid', 'search_magma_functions', 'search_magma_documents', 'update_content_tsvector', 'cleanup_search_cache' ]; let functionsExist = 0; for (const funcName of requiredFunctions) { try { const { error } = await supabase.rpc(funcName, {}); if (error && !error.message.includes('Could not find the function')) { console.log(` āœ… ${funcName} exists`); functionsExist++; } else { console.log(` āŒ ${funcName} missing`); } } catch (e) { console.log(` āŒ ${funcName} error: ${e.message.substring(0, 50)}...`); } } console.log('\nšŸ“ 4. Schema Status Summary'); const schemaComplete = functionsExist === requiredFunctions.length; const dataExists = (docCount || 0) > 0; console.log(` Schema Complete: ${schemaComplete ? 'āœ…' : 'āŒ'} (${functionsExist}/${requiredFunctions.length} functions)`); console.log(` Data Indexed: ${dataExists ? 'āœ…' : 'āŒ'} (${docCount || 0} documents)`); console.log('\nšŸŽÆ 5. Next Steps'); if (!schemaComplete) { console.log(' 1. Apply schema-v2.sql in Supabase Dashboard SQL Editor'); console.log(' 2. Ensure all PostgreSQL extensions are enabled (vector, pg_trgm, unaccent)'); } if (!dataExists) { console.log(' 3. Run: npm run index-advanced'); console.log(' 4. Wait for indexing to complete'); } if (schemaComplete && dataExists) { console.log(' šŸŽ‰ Ready to run benchmark: npm run benchmark'); } console.log('\nšŸ“‹ 6. File Status'); console.log(` šŸ“„ PDF exists: ${fs.existsSync('/Users/baegjaehyeon/mcp-magma-handbook/data/pdfs/Handbook.pdf') ? 'āœ…' : 'āŒ'}`); console.log(` šŸ“„ Schema file: ${fs.existsSync('/Users/baegjaehyeon/mcp-magma-handbook/supabase/schema-v2.sql') ? 'āœ…' : 'āŒ'}`); console.log('\nšŸ”§ 7. Commands to Run'); console.log(' Build: npm run build'); console.log(' Index: npm run index-advanced'); console.log(' Test: node final-database-test.js'); console.log(' Benchmark: npm run benchmark'); } catch (error) { console.error('āŒ Test failed:', error.message); } } runFinalTest().then(() => { console.log('\n' + '=' .repeat(50)); console.log('āœ… Final test completed!'); }).catch(err => { console.error('āŒ Test error:', err); });

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/LeGenAI/mcp-magma-handbook'

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