import React, { useState, useEffect } from 'react';
import { RotateCcw, CheckCircle, AlertCircle, Clock, Zap } from 'lucide-react';
export default function Dashboard() {
const [services, setServices] = useState([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [lastUpdated, setLastUpdated] = useState(null);
const fetchServiceStatus = async () => {
try {
setLoading(true);
setError(null);
const response = await fetch('/mcp/status');
if (!response.ok) {
throw new Error('Failed to fetch service status');
}
const data = await response.json();
setServices(data.services || []);
setLastUpdated(new Date());
} catch (err) {
console.error('Error fetching status:', err);
setError(err.message);
} finally {
setLoading(false);
}
};
useEffect(() => {
fetchServiceStatus();
// Auto-refresh every 30 seconds
const interval = setInterval(fetchServiceStatus, 30000);
return () => clearInterval(interval);
}, []);
const getStatusIcon = (status) => {
if (status === 'healthy') {
return
Real-time status and monitoring of all MCP services
Total Services
{services.length}
Total Tools
{totalTools}
Healthy Services
{services.filter(s => s.status === 'healthy').length}
Error loading service status
{error}
{service.status.charAt(0).toUpperCase() + service.status.slice(1)}
Service URL
{service.url}
No services available yet. Check your configuration.
Loading service status...