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