From d899ba25cef24aa6036a52da02b3a721a5bd1404 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 20 Jun 2025 21:24:50 +0000
Subject: [PATCH 1/2] Initial plan for issue
From 468cd0b0bbddfa2ba430f63775692d3a41cd62cc Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Fri, 20 Jun 2025 21:30:53 +0000
Subject: [PATCH 2/2] Add Visual Studio Code as MCP client
Co-authored-by: digitarald <8599+digitarald@users.noreply.github.com>
---
src/extension/ui/src/MCPClients.ts | 4 +++
src/extension/ui/src/mcp-clients/VSCode.ts | 39 ++++++++++++++++++++++
2 files changed, 43 insertions(+)
create mode 100644 src/extension/ui/src/mcp-clients/VSCode.ts
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