diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index c02f933..83e004a 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -16,6 +16,9 @@ const App = () => { const [systemInfo, setSystemInfo] = useState(null); const [usageStats, setUsageStats] = useState(null); const [authStatus, setAuthStatus] = useState(null); + const [mcpServers, setMcpServers] = useState(null); + const [showAddMcp, setShowAddMcp] = useState(false); + const [mcpForm, setMcpForm] = useState({ name: '', server_type: 'sse', url: '', command: '' }); const [loading, setLoading] = useState(false); const [activeView, setActiveView] = useState('tasks'); // 'tasks' | 'dashboard' @@ -25,11 +28,13 @@ const App = () => { fetchSystemInfo(); fetchUsageStats(); fetchAuthStatus(); + fetchMcpServers(); const interval = setInterval(() => { fetchTasks(); fetchSystemInfo(); fetchUsageStats(); fetchAuthStatus(); + fetchMcpServers(); }, 10000); return () => clearInterval(interval); }, []); @@ -103,6 +108,47 @@ const App = () => { } }; + const fetchMcpServers = async () => { + try { + const response = await fetch('/api/mcp/servers'); + const data = await response.json(); + setMcpServers(data); + } catch (error) { + console.error('Error fetching MCP servers:', error); + } + }; + + const handleAddMcp = async (e) => { + e.preventDefault(); + try { + const response = await fetch('/api/mcp/servers', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(mcpForm) + }); + const data = await response.json(); + if (data.status === 'ok') { + setShowAddMcp(false); + setMcpForm({ name: '', server_type: 'sse', url: '', command: '' }); + fetchMcpServers(); + } else { + alert(data.message || 'Failed to add MCP server'); + } + } catch (error) { + console.error('Error adding MCP server:', error); + } + }; + + const handleRemoveMcp = async (name) => { + if (!confirm(`Remove MCP server "${name}"?`)) return; + try { + await fetch(`/api/mcp/servers/${name}`, { method: 'DELETE' }); + fetchMcpServers(); + } catch (error) { + console.error('Error removing MCP server:', error); + } + }; + const handleCreateTask = async (e) => { e.preventDefault(); setLoading(true); @@ -278,6 +324,56 @@ const App = () => { +
No MCP servers configured.
+ {mcpServers?.raw &&{mcpServers.raw}}
+