import { useState, useCallback } from 'react' import { Sidebar } from './components/Sidebar' import { ToolsPanel } from './components/ToolsPanel' import { ResultsPane } from './components/ResultsPane' import { useMCP } from './hooks/useMCP' import './App.css' export type Tool = { name: string description?: string inputSchema?: { type?: string properties?: Record required?: string[] } } export type ToolResult = { textContent: string htmlContent: string | null isError: boolean timestamp: Date } function App() { const isLocal = window.location.hostname === 'localhost' const [serverUrl, setServerUrl] = useState(isLocal ? 'http://localhost:3000/mcp' : 'https://mcp-ui-kit-demo-server.vercel.app/mcp') const { isConnected, isConnecting, sessionId, isStateless, tools, isRefreshing, connect, disconnect, refreshTools, callTool, error } = useMCP() const [selectedTool, setSelectedTool] = useState(null) const [toolResult, setToolResult] = useState(null) const [isExecuting, setIsExecuting] = useState(false) const [lastExecution, setLastExecution] = useState<{ toolName: string; params: Record } | null>(null) const handleConnect = useCallback(async () => { if (isConnected) { disconnect() setSelectedTool(null) setToolResult(null) } else { await connect(serverUrl) } }, [isConnected, connect, disconnect, serverUrl]) const handleExecuteTool = useCallback(async (toolName: string, params: Record) => { setIsExecuting(true) setToolResult(null) setLastExecution({ toolName, params }) try { const result = await callTool(toolName, params) setToolResult({ ...result, timestamp: new Date() }) } catch (err) { setToolResult({ textContent: err instanceof Error ? err.message : 'Unknown error', htmlContent: null, isError: true, timestamp: new Date() }) } finally { setIsExecuting(false) } }, [callTool]) const handleReload = useCallback(async () => { if (lastExecution) { await handleExecuteTool(lastExecution.toolName, lastExecution.params) } }, [lastExecution, handleExecuteTool]) return (
window.location.reload()}>

MCP UI Inspector

{isConnected ? ( Connected ) : ( Disconnected )}
) } export default App