diff --git a/dashboard/Dashboard.jsx b/dashboard/Dashboard.jsx
new file mode 100644
index 0000000..41c660c
--- /dev/null
+++ b/dashboard/Dashboard.jsx
@@ -0,0 +1,206 @@
+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...
+