diff --git a/clients/web/src/components/groups/ServerCard/ServerCard.tsx b/clients/web/src/components/groups/ServerCard/ServerCard.tsx index 14804548..a4e42ef0 100644 --- a/clients/web/src/components/groups/ServerCard/ServerCard.tsx +++ b/clients/web/src/components/groups/ServerCard/ServerCard.tsx @@ -1,8 +1,7 @@ import { Badge, Button, Card, Group, Stack, Text } from "@mantine/core"; -import type { Implementation } from "@modelcontextprotocol/sdk/types.js"; import type { - ConnectionState, MCPServerConfig, + ServerEntry, ServerType, } from "@inspector/core/mcp/types.js"; import { ServerStatusIndicator } from "../../elements/ServerStatusIndicator/ServerStatusIndicator"; @@ -11,14 +10,7 @@ import { ConnectionToggle } from "../../elements/ConnectionToggle/ConnectionTogg import { ContentViewer } from "../../elements/ContentViewer/ContentViewer"; import { InlineError } from "../../elements/InlineError/InlineError"; -export interface ServerCardProps { - /** Stable unique identifier — the MCPConfig.mcpServers map key. */ - id: string; - /** Display label shown in the card header. May or may not equal id. */ - name: string; - config: MCPServerConfig; - info?: Implementation; - connection: ConnectionState; +export interface ServerCardProps extends ServerEntry { activeServer?: string; onToggleConnection: (id: string) => void; onServerInfo: (id: string) => void; diff --git a/clients/web/src/components/screens/ServerListScreen/ServerListScreen.stories.tsx b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.stories.tsx index a5177a14..4040dffb 100644 --- a/clients/web/src/components/screens/ServerListScreen/ServerListScreen.stories.tsx +++ b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.stories.tsx @@ -1,6 +1,7 @@ import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; -import { ServerListScreen, type ServerEntry } from "./ServerListScreen"; +import type { ServerEntry } from "@inspector/core/mcp/types.js"; +import { ServerListScreen } from "./ServerListScreen"; const meta: Meta = { title: "Screens/ServerListScreen", diff --git a/clients/web/src/components/screens/ServerListScreen/ServerListScreen.tsx b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.tsx index c2466790..10fda85b 100644 --- a/clients/web/src/components/screens/ServerListScreen/ServerListScreen.tsx +++ b/clients/web/src/components/screens/ServerListScreen/ServerListScreen.tsx @@ -1,13 +1,8 @@ import { useState } from "react"; import { ScrollArea, SimpleGrid, Stack, Text } from "@mantine/core"; +import type { ServerEntry } from "@inspector/core/mcp/types.js"; import { ServerCard } from "../../groups/ServerCard/ServerCard"; import { ServerListControls } from "../../groups/ServerListControls/ServerListControls"; -import type { ServerCardProps } from "../../groups/ServerCard/ServerCard"; - -export type ServerEntry = Pick< - ServerCardProps, - "id" | "name" | "config" | "info" | "connection" ->; export interface ServerListScreenProps { servers: ServerEntry[]; diff --git a/clients/web/src/components/views/InspectorView/InspectorView.stories.tsx b/clients/web/src/components/views/InspectorView/InspectorView.stories.tsx index eb38596b..4a26488a 100644 --- a/clients/web/src/components/views/InspectorView/InspectorView.stories.tsx +++ b/clients/web/src/components/views/InspectorView/InspectorView.stories.tsx @@ -7,11 +7,11 @@ import type { import type { InspectorResourceSubscription, MessageEntry, + ServerEntry, } from "@inspector/core/mcp/types.js"; import type { Meta, StoryObj } from "@storybook/react-vite"; import { fn } from "storybook/test"; import { InspectorView } from "./InspectorView"; -import type { ServerEntry } from "../../screens/ServerListScreen/ServerListScreen"; import { mixedEntries as demoLogs } from "../../screens/LoggingScreen/LoggingScreen.fixtures"; import { longToolList as demoTools } from "../../screens/ToolsScreen/ToolsScreen.fixtures"; import type { TaskProgress } from "../../groups/TaskCard/TaskCard"; diff --git a/clients/web/src/components/views/InspectorView/InspectorView.tsx b/clients/web/src/components/views/InspectorView/InspectorView.tsx index 77815688..1ccdd5f2 100644 --- a/clients/web/src/components/views/InspectorView/InspectorView.tsx +++ b/clients/web/src/components/views/InspectorView/InspectorView.tsx @@ -13,12 +13,10 @@ import type { ConnectionStatus, InspectorResourceSubscription, MessageEntry, + ServerEntry, } from "@inspector/core/mcp/types.js"; import { ViewHeader } from "../../groups/ViewHeader/ViewHeader"; -import { - ServerListScreen, - type ServerEntry, -} from "../../screens/ServerListScreen/ServerListScreen"; +import { ServerListScreen } from "../../screens/ServerListScreen/ServerListScreen"; import { ToolsScreen } from "../../screens/ToolsScreen/ToolsScreen"; import { PromptsScreen } from "../../screens/PromptsScreen/PromptsScreen"; import { ResourcesScreen } from "../../screens/ResourcesScreen/ResourcesScreen"; diff --git a/core/mcp/types.ts b/core/mcp/types.ts index 6709046b..96e08546 100644 --- a/core/mcp/types.ts +++ b/core/mcp/types.ts @@ -70,6 +70,21 @@ export interface ConnectionState { error?: { message: string; details?: string }; } +/** + * One server entry as seen by the UI: identity, transport config, optional + * `Implementation` info reported during `initialize`, and the current + * connection snapshot. Cards/screens spread this onto presentational props. + */ +export interface ServerEntry { + /** Stable unique identifier — the MCPConfig.mcpServers map key. */ + id: string; + /** Display label shown in the card header. May or may not equal id. */ + name: string; + config: MCPServerConfig; + info?: Implementation; + connection: ConnectionState; +} + export interface StderrLogEntry { timestamp: Date; message: string;