import React, { useState, useEffect } from 'react'; import { Header } from './components/Header'; import { OverviewTab } from './components/OverviewTab'; import { MCPHubTab } from './components/MCPHubTab'; import { AIToolStudioTab } from './components/AIToolStudioTab'; import { WorkflowsTab } from './components/WorkflowsTab'; import { SecurityGatewayTab } from './components/SecurityGatewayTab'; import { AnalyticsTab } from './components/AnalyticsTab'; import { MCPGuideTab } from './components/MCPGuideTab'; import { ToolPlaygroundTab } from './components/ToolPlaygroundTab'; import { MemoryVaultTab } from './components/MemoryVaultTab'; import { ActivityLogsTab } from './components/ActivityLogsTab'; import { SettingsTab } from './components/SettingsTab'; import { ServerStats, MCPServerDefinition } from './types'; export default function App() { const [activeTab, setActiveTab] = useState('mcp-hub'); const [stats, setStats] = useState(null); const fetchStats = async () => { try { const res = await fetch('/api/v1/system/status'); if (res.ok) { const data = await res.json(); setStats(data); } } catch (err) { console.error('Failed to fetch server stats:', err); } }; const handleRegisterServerFromStudio = async (server: Omit) => { const res = await fetch('/api/v1/mcp/servers', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(server), }); if (!res.ok) { const err = await res.json(); throw new Error(err.error || 'Failed to register server'); } await fetchStats(); }; useEffect(() => { fetchStats(); const interval = setInterval(fetchStats, 5000); return () => clearInterval(interval); }, []); return (
{activeTab === 'overview' && } {activeTab === 'mcp-hub' && ( setActiveTab('mcp-studio')} /> )} {activeTab === 'mcp-studio' && ( setActiveTab('mcp-hub')} /> )} {activeTab === 'workflows' && } {activeTab === 'security' && } {activeTab === 'analytics' && } {activeTab === 'mcp-guide' && } {activeTab === 'playground' && } {activeTab === 'memory' && } {activeTab === 'logs' && } {activeTab === 'settings' && }
); }