Skip to main content
Glama

MCP Orchestration Server

debug.htmlโ€ข10.7 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>๐Ÿ”ง BlackHole Core MCP - Debug Console</title> <style> body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; margin: 0; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; } .container { max-width: 1200px; margin: 0 auto; background: rgba(255,255,255,0.1); padding: 30px; border-radius: 15px; backdrop-filter: blur(10px); } .test-section { background: rgba(255,255,255,0.1); margin: 20px 0; padding: 20px; border-radius: 10px; } .result { margin: 10px 0; padding: 15px; border-radius: 8px; font-family: monospace; } .success { background: rgba(40, 167, 69, 0.8); } .error { background: rgba(220, 53, 69, 0.8); } .info { background: rgba(23, 162, 184, 0.8); } .warning { background: rgba(255, 193, 7, 0.8); color: #000; } button { background: #28a745; color: white; border: none; padding: 12px 24px; margin: 8px; border-radius: 6px; cursor: pointer; font-size: 14px; transition: all 0.3s; } button:hover { background: #218838; transform: translateY(-2px); } .status-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; margin: 20px 0; } .status-card { background: rgba(255,255,255,0.1); padding: 20px; border-radius: 10px; text-align: center; } .status-icon { font-size: 48px; margin-bottom: 10px; } pre { background: rgba(0,0,0,0.3); padding: 15px; border-radius: 8px; overflow-x: auto; white-space: pre-wrap; } h1, h2 { text-align: center; margin-bottom: 30px; } .timestamp { font-size: 12px; opacity: 0.8; } </style> </head> <body> <div class="container"> <h1>๐Ÿ”ง BlackHole Core MCP - Debug Console</h1> <p style="text-align: center; font-size: 18px;">Comprehensive Frontend-Backend Connection Diagnostics</p> <div class="status-grid"> <div class="status-card"> <div class="status-icon">๐Ÿš€</div> <h3>Server Status</h3> <div id="serverStatus">Testing...</div> </div> <div class="status-card"> <div class="status-icon">๐Ÿ—„๏ธ</div> <h3>Database Status</h3> <div id="dbStatus">Testing...</div> </div> <div class="status-card"> <div class="status-icon">๐ŸŒ</div> <h3>CORS Status</h3> <div id="corsStatus">Testing...</div> </div> <div class="status-card"> <div class="status-icon">๐Ÿ“„</div> <h3>API Status</h3> <div id="apiStatus">Testing...</div> </div> </div> <div class="test-section"> <h2>๐Ÿงช Manual Tests</h2> <button onclick="testHealth()">Test Health Endpoint</button> <button onclick="testCORS()">Test CORS Headers</button> <button onclick="testFileUpload()">Test File Upload</button> <button onclick="testAllEndpoints()">Test All Endpoints</button> <button onclick="clearResults()">Clear Results</button> </div> <div class="test-section"> <h2>๐Ÿ“Š Test Results</h2> <div id="results"></div> </div> <div class="test-section"> <h2>๐Ÿ” System Information</h2> <div id="systemInfo"></div> </div> </div> <script> function addResult(message, type = 'info', details = '') { const results = document.getElementById('results'); const div = document.createElement('div'); div.className = `result ${type}`; div.innerHTML = ` <div class="timestamp">${new Date().toLocaleTimeString()}</div> <strong>${message}</strong> ${details ? `<pre>${details}</pre>` : ''} `; results.insertBefore(div, results.firstChild); } function clearResults() { document.getElementById('results').innerHTML = ''; } function updateStatus(elementId, status, message) { const element = document.getElementById(elementId); element.innerHTML = `<div class="${status}">${message}</div>`; } async function testHealth() { addResult('๐Ÿ” Testing Health Endpoint...', 'info'); try { const response = await fetch('http://localhost:8000/api/health', { method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' } }); const data = await response.json(); if (response.ok) { addResult('โœ… Health Check SUCCESS', 'success', JSON.stringify(data, null, 2)); updateStatus('serverStatus', 'success', 'โœ… Online'); updateStatus('dbStatus', 'success', `โœ… ${data.mongodb}`); } else { addResult('โŒ Health Check FAILED', 'error', `Status: ${response.status}`); updateStatus('serverStatus', 'error', 'โŒ Error'); } } catch (error) { addResult('โŒ Health Check ERROR', 'error', error.message); updateStatus('serverStatus', 'error', 'โŒ Offline'); } } async function testCORS() { addResult('๐ŸŒ Testing CORS Headers...', 'info'); try { const response = await fetch('http://localhost:8000/api/health', { method: 'OPTIONS' }); const corsHeaders = { 'Access-Control-Allow-Origin': response.headers.get('access-control-allow-origin'), 'Access-Control-Allow-Methods': response.headers.get('access-control-allow-methods'), 'Access-Control-Allow-Headers': response.headers.get('access-control-allow-headers') }; addResult('โœ… CORS Headers Retrieved', 'success', JSON.stringify(corsHeaders, null, 2)); updateStatus('corsStatus', 'success', 'โœ… Configured'); } catch (error) { addResult('โŒ CORS Test FAILED', 'error', error.message); updateStatus('corsStatus', 'error', 'โŒ Failed'); } } async function testFileUpload() { addResult('๐Ÿ“„ Testing File Upload...', 'info'); try { const formData = new FormData(); formData.append('file', new Blob(['Debug test file'], { type: 'text/plain' }), 'debug-test.txt'); formData.append('enable_llm', 'false'); formData.append('save_to_db', 'true'); const response = await fetch('http://localhost:8000/api/process-document', { method: 'POST', body: formData }); if (response.ok) { const data = await response.json(); addResult('โœ… File Upload SUCCESS', 'success', JSON.stringify(data, null, 2)); updateStatus('apiStatus', 'success', 'โœ… Working'); } else { addResult('โŒ File Upload FAILED', 'error', `Status: ${response.status}`); updateStatus('apiStatus', 'error', 'โŒ Failed'); } } catch (error) { addResult('โŒ File Upload ERROR', 'error', error.message); updateStatus('apiStatus', 'error', 'โŒ Error'); } } async function testAllEndpoints() { addResult('๐Ÿ”„ Testing All Endpoints...', 'info'); const endpoints = [ { name: 'Health', url: '/api/health', method: 'GET' }, { name: 'Test', url: '/api/test', method: 'GET' }, { name: 'Results', url: '/api/results', method: 'GET' } ]; for (const endpoint of endpoints) { try { const response = await fetch(`http://localhost:8000${endpoint.url}`, { method: endpoint.method }); if (response.ok) { addResult(`โœ… ${endpoint.name} Endpoint`, 'success', `Status: ${response.status}`); } else { addResult(`โŒ ${endpoint.name} Endpoint`, 'error', `Status: ${response.status}`); } } catch (error) { addResult(`โŒ ${endpoint.name} Endpoint`, 'error', error.message); } } } function showSystemInfo() { const info = { 'User Agent': navigator.userAgent, 'Current URL': window.location.href, 'Protocol': window.location.protocol, 'Host': window.location.host, 'Backend URL': 'http://localhost:8000', 'Timestamp': new Date().toISOString() }; document.getElementById('systemInfo').innerHTML = `<pre>${JSON.stringify(info, null, 2)}</pre>`; } // Auto-run tests on page load window.addEventListener('load', function() { addResult('๐Ÿš€ Starting Automatic Diagnostics...', 'info'); showSystemInfo(); setTimeout(() => { testHealth(); }, 1000); setTimeout(() => { testCORS(); }, 2000); }); </script> </body> </html>

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/Nisarg-123-web/MCP2'

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