diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/MCPServersList.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/MCPServersList.tsx deleted file mode 100644 index 83835f5b..00000000 --- a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/MCPServersList.tsx +++ /dev/null @@ -1,113 +0,0 @@ -import { VoidSwitch, VoidButtonBgDarken } from '../util/inputs.js'; -import { MCPConfigFileParseErrorResponse, MCPServerEventType, MCPServerEventResponse, MCPServerObject, MCPServerOfName } from '../../../../common/mcpServiceTypes.js'; -import { useEffect, useState } from 'react'; -import { useAccessor, useMCPServiceState } from '../util/services.js'; - - -// MCP Server component -const MCPServer = ({ name, server }: { name: string, server: MCPServerObject }) => { - - const accessor = useAccessor(); - const mcpService = accessor.get('IMCPService'); - - const handleChangeEvent = (e: boolean) => { - // Handle the change event - mcpService.toggleMCPServer(name, e); - } - - return ( -
-
- {/* Status indicator */} -
- - {/* Server name */} -
{name}
- - {/* Power toggle switch */} -
- -
-
- - {/* Tools section */} -
-
- {server.isOn && server.tools.length > 0 ? ( - server.tools.map((tool) => ( - - {tool.name} - - )) - ) : ( - No tools available - )} -
-
- - {/* Command badge */} - {server.isOn && server.command && ( -
-
Command:
-
- {server.command} -
-
- )} - - {/* Error message if present */} - {server.error && ( -
- - - - - - {server.error} -
- )} -
- ); -}; - -// Main component that renders the list of servers -const MCPServersList = () => { - - const mcpServiceState = useMCPServiceState() - const accessor = useAccessor(); - const mcpService = accessor.get('IMCPService'); - - return ( -
-
- {!mcpServiceState.error && Object.entries(mcpServiceState.mcpServerOfName).map(([name, server]) => ( -
- -
- ))} - {mcpServiceState.error && ( -
- {mcpServiceState.error} -
- )} -
-
- ); -}; - -export default MCPServersList; diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx index d5174cbe..7dca05c7 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx @@ -19,7 +19,8 @@ import { ToolApprovalType, toolApprovalTypes } from '../../../../common/toolsSer import Severity from '../../../../../../../base/common/severity.js' import { getModelCapabilities, modelOverrideKeys, ModelOverrides } from '../../../../common/modelCapabilities.js'; import { TransferEditorType, TransferFilesInfo } from '../../../extensionTransferTypes.js'; -import MCPServersList from './MCPServersList.js'; +import { MCPServerObject } from '../../../../common/mcpServiceTypes.js'; +import { useMCPServiceState } from '../util/services.js'; const ButtonLeftTextRightOption = ({ text, leftButton }: { text: string, leftButton?: React.ReactNode }) => { @@ -899,6 +900,118 @@ export const OneClickSwitchButton = ({ fromEditor = 'VS Code', className = '' }: // full settings +// MCP Server component +const MCPServer = ({ name, server }: { name: string, server: MCPServerObject }) => { + const accessor = useAccessor(); + const mcpService = accessor.get('IMCPService'); + + const handleChangeEvent = (e: boolean) => { + // Handle the change event + mcpService.toggleMCPServer(name, e); + } + + return ( +
+
+ {/* Status indicator */} +
+ + {/* Server name */} +
{name}
+ + {/* Power toggle switch */} +
+ +
+
+ + {/* Tools section */} +
+
+ {server.isOn && server.tools.length > 0 ? ( + server.tools.map((tool: { name: string; description?: string }) => ( + + {tool.name} + + )) + ) : ( + No tools available + )} +
+
+ + {/* Command badge */} + {server.isOn && server.command && ( +
+
Command:
+
+ {server.command} +
+
+ )} + + {/* Error message if present */} + {server.error && ( +
+ + + + + + {server.error} +
+ )} +
+ ); +}; + +// Main component that renders the list of servers +const MCPServersList = () => { + const mcpServiceState = useMCPServiceState() + const accessor = useAccessor(); + const mcpService = accessor.get('IMCPService'); + + + let content: React.ReactNode + if (mcpServiceState.error) { + content =
+ {mcpServiceState.error} +
+ } + else { + const entries = Object.entries(mcpServiceState.mcpServerOfName) + if (entries.length === 0) { + content =
+ No servers found +
+ } + else { + content = entries.map(([name, server]) => ( +
+ +
+ )) + } + } + + return content +}; + export const Settings = () => { const isDark = useIsDark() const accessor = useAccessor() @@ -1235,6 +1348,7 @@ export const Settings = () => {

AI Instructions

+

-
-

MCP

- { await mcpService.revealMCPConfigFile() }}> - Add MCP Server - -
+

MCP

- - - +
+ { await mcpService.revealMCPConfigFile() }}> + Add MCP Server + +
+ + + +