diff --git a/src/extension/ui/src/MCPClients.ts b/src/extension/ui/src/MCPClients.ts index 01525957..f87bb1a5 100644 --- a/src/extension/ui/src/MCPClients.ts +++ b/src/extension/ui/src/MCPClients.ts @@ -3,6 +3,7 @@ import ClaudeDesktop from "./mcp-clients/ClaudeDesktop"; import ContinueDotDev from "./mcp-clients/ContinueDotDev"; import Cursor from "./mcp-clients/Cursor"; import Gordon from "./mcp-clients/Gordon"; +import VSCode from "./mcp-clients/VSCode"; import { MCPClient } from "./types/mcp"; export type MCPClientState = { @@ -31,6 +32,9 @@ export const getMCPClientStates = async (ddClient: v1.DockerDesktopClient) => { if (fromCLI["continue"]) { mcpClientStates[ContinueDotDev.name] = toState(ContinueDotDev, fromCLI["continue"]); } + if (fromCLI["vscode"]) { + mcpClientStates[VSCode.name] = toState(VSCode, fromCLI["vscode"]); + } } } catch (e) { ddClient.desktopUI.toast.error("Unable to connect Claude Desktop"); diff --git a/src/extension/ui/src/mcp-clients/VSCode.ts b/src/extension/ui/src/mcp-clients/VSCode.ts new file mode 100644 index 00000000..2b0c4ca7 --- /dev/null +++ b/src/extension/ui/src/mcp-clients/VSCode.ts @@ -0,0 +1,39 @@ +import { v1 } from "@docker/extension-api-client-types"; +import { MCPClient, SAMPLE_MCP_CONFIG } from "./MCPTypes"; + +class VSCodeClient implements MCPClient { + name = "Visual Studio Code"; + url = "https://code.visualstudio.com/download"; + manualConfigSteps = [ + "Open VS Code Settings (File > Preferences > Settings or Ctrl+,)", + "Click on Open Settings (JSON) in the top right corner", + "Add MCP configuration to the settings.json file:", + '
' +
+    JSON.stringify({
+      "mcp.servers": SAMPLE_MCP_CONFIG.mcpServers
+    }, null, 2) +
+    "
", + "Save the settings file and restart VS Code if necessary" + ]; + expectedConfigPath = { + darwin: "$HOME/Library/Application Support/Code/User/settings.json", + linux: "$HOME/.config/Code/User/settings.json", + win32: "$APPDATA\\Code\\User\\settings.json", + }; + connect = async (client: v1.DockerDesktopClient) => { + try { + await client.extension.host?.cli.exec("host-binary", ["client", "connect", "--global", "vscode"]); + } catch (e) { + client.desktopUI.toast.error("Unable to connect Visual Studio Code"); + } + }; + disconnect = async (client: v1.DockerDesktopClient) => { + try { + await client.extension.host?.cli.exec("host-binary", ["client", "disconnect", "--global", "vscode"]); + } catch (e) { + client.desktopUI.toast.error("Unable to disconnect Visual Studio Code"); + } + }; +} + +export default new VSCodeClient(); \ No newline at end of file