From 936725b82abc51f20d5f39fa371f89ee1f5bfcd8 Mon Sep 17 00:00:00 2001 From: Justin Poehnelt Date: Wed, 8 Oct 2025 16:03:54 -0700 Subject: [PATCH 1/2] feat: register Google Workspace MCP Server in extension --- .changeset/whole-comics-switch.md | 5 +++++ packages/vscode-extension/package.json | 9 +++++++-- packages/vscode-extension/src/extension.ts | 20 ++++++++++++++++++++ pnpm-lock.yaml | 2 +- 4 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 .changeset/whole-comics-switch.md diff --git a/.changeset/whole-comics-switch.md b/.changeset/whole-comics-switch.md new file mode 100644 index 0000000..45e5639 --- /dev/null +++ b/.changeset/whole-comics-switch.md @@ -0,0 +1,5 @@ +--- +"google-workspace-developer-tools": minor +--- + +Register Google Workspace Developer MCP Server in extension. diff --git a/packages/vscode-extension/package.json b/packages/vscode-extension/package.json index f89e615..f1cd62a 100644 --- a/packages/vscode-extension/package.json +++ b/packages/vscode-extension/package.json @@ -40,7 +40,12 @@ "type": "module", "main": "./out/extension.cjs", "contributes": { - "commands": [] + "mcpServerDefinitionProviders": [ + { + "id": "google-workspace-developer", + "label": "Google Workspace Developer" + } + ] }, "activationEvents": [ "onStartupFinished" @@ -60,7 +65,7 @@ "devDependencies": { "@types/mocha": "catalog:", "@types/node": "catalog:", - "@types/vscode": "^1.50.0", + "@types/vscode": "^1.82.0", "@vscode/test-cli": "catalog:", "@vscode/test-electron": "catalog:", "@vscode/vsce": "catalog:", diff --git a/packages/vscode-extension/src/extension.ts b/packages/vscode-extension/src/extension.ts index 9947748..57ba653 100644 --- a/packages/vscode-extension/src/extension.ts +++ b/packages/vscode-extension/src/extension.ts @@ -18,6 +18,26 @@ import * as vscode from "vscode"; import { SCOPES, ScopeClassification, getScopeMarkdown } from "./scopes.js"; export function activate(context: vscode.ExtensionContext) { + context.subscriptions.push( + vscode.lm.registerMcpServerDefinitionProvider( + "google-workspace-developer", + { + provideMcpServerDefinitions: async () => { + return [ + new vscode.McpHttpServerDefinition( + "google-workspace-developer", + vscode.Uri.parse("https://workspace-developer.goog/mcp"), + ), + ]; + }, + resolveMcpServerDefinition: async ( + server: vscode.McpServerDefinition, + ) => { + return server; + }, + }, + ), + ); const scopeHoverProvider = vscode.languages.registerHoverProvider( { scheme: "file" }, { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de6b6c9..1f7189e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -93,7 +93,7 @@ importers: specifier: 'catalog:' version: 20.19.19 '@types/vscode': - specifier: ^1.50.0 + specifier: ^1.82.0 version: 1.104.0 '@vscode/test-cli': specifier: 'catalog:' From 388427140108220fd2a1d8778a941b968cd07414 Mon Sep 17 00:00:00 2001 From: Justin Poehnelt Date: Wed, 8 Oct 2025 16:18:29 -0700 Subject: [PATCH 2/2] fix: update @types/vscode version and add pnpm overrides with flag for mcp registration --- package.json | 9 +++-- packages/vscode-extension/package.json | 2 +- packages/vscode-extension/src/extension.ts | 41 ++++++++++++---------- pnpm-lock.yaml | 3 ++ 4 files changed, 33 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index d3efdee..74b47fc 100644 --- a/package.json +++ b/package.json @@ -36,5 +36,10 @@ "prettier --write" ] }, - "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34" -} + "packageManager": "pnpm@10.18.1+sha512.77a884a165cbba2d8d1c19e3b4880eee6d2fcabd0d879121e282196b80042351d5eb3ca0935fa599da1dc51265cc68816ad2bddd2a2de5ea9fdf92adbec7cd34", + "pnpm": { + "overrides": { + "@types/vscode": "^1.82.0" + } + } +} \ No newline at end of file diff --git a/packages/vscode-extension/package.json b/packages/vscode-extension/package.json index f1cd62a..a110608 100644 --- a/packages/vscode-extension/package.json +++ b/packages/vscode-extension/package.json @@ -65,7 +65,7 @@ "devDependencies": { "@types/mocha": "catalog:", "@types/node": "catalog:", - "@types/vscode": "^1.82.0", + "@types/vscode": "^1.50.0", "@vscode/test-cli": "catalog:", "@vscode/test-electron": "catalog:", "@vscode/vsce": "catalog:", diff --git a/packages/vscode-extension/src/extension.ts b/packages/vscode-extension/src/extension.ts index 57ba653..2397241 100644 --- a/packages/vscode-extension/src/extension.ts +++ b/packages/vscode-extension/src/extension.ts @@ -18,26 +18,29 @@ import * as vscode from "vscode"; import { SCOPES, ScopeClassification, getScopeMarkdown } from "./scopes.js"; export function activate(context: vscode.ExtensionContext) { - context.subscriptions.push( - vscode.lm.registerMcpServerDefinitionProvider( - "google-workspace-developer", - { - provideMcpServerDefinitions: async () => { - return [ - new vscode.McpHttpServerDefinition( - "google-workspace-developer", - vscode.Uri.parse("https://workspace-developer.goog/mcp"), - ), - ]; - }, - resolveMcpServerDefinition: async ( - server: vscode.McpServerDefinition, - ) => { - return server; + if (vscode.lm.registerMcpServerDefinitionProvider) { + context.subscriptions.push( + vscode.lm?.registerMcpServerDefinitionProvider( + "google-workspace-developer", + { + provideMcpServerDefinitions: async () => { + return [ + new vscode.McpHttpServerDefinition( + "google-workspace-developer", + vscode.Uri.parse("https://workspace-developer.goog/mcp"), + ), + ]; + }, + resolveMcpServerDefinition: async ( + server: vscode.McpServerDefinition, + ) => { + return server; + }, }, - }, - ), - ); + ), + ); + } + const scopeHoverProvider = vscode.languages.registerHoverProvider( { scheme: "file" }, { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1f7189e..6a92e79 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,6 +58,9 @@ catalogs: specifier: ^5.9.3 version: 5.9.3 +overrides: + '@types/vscode': ^1.82.0 + importers: .: