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