import { useState, useEffect } from "react"; import { Send, Bell, Terminal, Files, MessageSquare } from "lucide-react"; import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"; import ConsoleTab from "./components/ConsoleTab"; import Sidebar from "./components/Sidebar"; import RequestsTab from "./components/RequestsTabs"; import ResourcesTab, { Resource } from "./components/ResourcesTab"; import NotificationsTab from "./components/NotificationsTab"; import PromptsTab, { Prompt } from "./components/PromptsTab"; const App = () => { const [socket, setSocket] = useState(null); const [connectionStatus, setConnectionStatus] = useState< "disconnected" | "connected" | "error" >("disconnected"); const [resources, setResources] = useState([]); const [resourceContent, setResourceContent] = useState(""); const [prompts, setPrompts] = useState([]); const [promptContent, setPromptContent] = useState(""); const [error, setError] = useState(null); useEffect(() => { const ws = new WebSocket("ws://localhost:3000"); ws.onopen = () => { console.log("Connected to WebSocket server"); setConnectionStatus("connected"); setSocket(ws); }; ws.onmessage = (event) => { const message = JSON.parse(event.data); console.log("Received message:", message); if (message.type === "resources") { setResources(message.data.resources); setError(null); } else if (message.type === "resource") { setResourceContent(JSON.stringify(message.data, null, 2)); setError(null); } else if (message.type === "prompts") { setPrompts(message.data.prompts); setError(null); } else if (message.type === "prompt") { setPromptContent(JSON.stringify(message.data, null, 2)); setError(null); } else if (message.type === "error") { setError(message.message); } }; ws.onerror = () => { setConnectionStatus("error"); }; ws.onclose = () => { setConnectionStatus("disconnected"); }; return () => ws.close(); }, []); const sendWebSocketMessage = (message: object) => { if (socket) { console.log("Sending WebSocket message:", message); socket.send(JSON.stringify(message)); } }; const [selectedResource, setSelectedResource] = useState( null, ); const [selectedPrompt, setSelectedPrompt] = useState(null); const listResources = () => { sendWebSocketMessage({ type: "listResources" }); }; const readResource = (uri: string) => { sendWebSocketMessage({ type: "readResource", uri }); }; const listPrompts = () => { sendWebSocketMessage({ type: "listPrompts" }); }; const getPrompt = (name: string) => { sendWebSocketMessage({ type: "getPrompt", name }); }; return (

MCP Inspector

Requests Notifications Resources Prompts Console
); }; export default App;