From 59d2dfca8b596800fe598373bd94df8562676e61 Mon Sep 17 00:00:00 2001 From: Glen Maddern Date: Thu, 26 Jun 2025 09:50:30 +1000 Subject: [PATCH] Move transport toggle to left and make it only affect new servers - Add newServerTransportType state for next server to be added - Move toggle to left side directly after 'Add New Server' label - Add transportType to McpServer interface to store per-server transport - Update connections to use server-specific transport type - Change toggle styling to rounded-full (pill style) --- .../chat-ui/src/components/McpServerModal.tsx | 37 ++++++++++++++----- 1 file changed, 27 insertions(+), 10 deletions(-) diff --git a/examples/chat-ui/src/components/McpServerModal.tsx b/examples/chat-ui/src/components/McpServerModal.tsx index d629e5a..06014e4 100644 --- a/examples/chat-ui/src/components/McpServerModal.tsx +++ b/examples/chat-ui/src/components/McpServerModal.tsx @@ -7,17 +7,16 @@ interface McpServer { url: string enabled: boolean name?: string + transportType: 'auto' | 'http' | 'sse' } // MCP Connection wrapper for a single server function McpConnection({ server, onConnectionUpdate, - transportType, }: { server: McpServer onConnectionUpdate: (serverId: string, data: any) => void - transportType: 'auto' | 'http' | 'sse' }) { // Use the MCP hook with the server URL const connection = useMcp({ @@ -25,7 +24,7 @@ function McpConnection({ debug: true, autoRetry: false, popupFeatures: 'width=500,height=600,resizable=yes,scrollbars=yes', - transportType, + transportType: server.transportType, }) // Update parent component with connection data @@ -59,6 +58,7 @@ const McpServerModal: React.FC = ({ isOpen, onClose, onTool const stored = localStorage.getItem('mcpTransportType') return (stored as 'auto' | 'http' | 'sse') || 'http' }) + const [newServerTransportType, setNewServerTransportType] = useState<'auto' | 'http' | 'sse'>('http') // Helper to cycle through transport types const cycleTransportType = () => { @@ -75,6 +75,22 @@ const McpServerModal: React.FC = ({ isOpen, onClose, onTool } }) } + + // Helper to cycle through new server transport types + const cycleNewServerTransportType = () => { + setNewServerTransportType((current) => { + switch (current) { + case 'auto': + return 'http' + case 'http': + return 'sse' + case 'sse': + return 'auto' + default: + return 'http' + } + }) + } // const logRef = useRef(null) // Removed for now as debug logs not implemented in multi-server version // Save servers to localStorage whenever they change @@ -132,6 +148,7 @@ const McpServerModal: React.FC = ({ isOpen, onClose, onTool url: newServerUrl.trim(), enabled: true, name: new URL(newServerUrl.trim()).hostname, + transportType: newServerTransportType, } setServers((prev) => [...prev, newServer]) @@ -271,8 +288,8 @@ const McpServerModal: React.FC = ({ isOpen, onClose, onTool
{getStatusBadge(server.enabled ? state : 'disabled')} {server.enabled && state === 'ready' && ( - - {transportType.toUpperCase()} + + {server.transportType.toUpperCase()} )}
@@ -398,7 +415,7 @@ const McpServerModal: React.FC = ({ isOpen, onClose, onTool {servers .filter((s) => s.enabled) .map((server) => ( - + ))} )