From 3f2321ba70c3f30847aa0f6aa3ccb635e580cd45 Mon Sep 17 00:00:00 2001 From: Gustavo Bicalho Date: Wed, 12 Feb 2025 14:49:36 +0000 Subject: [PATCH 1/3] update @modelcontextprotocol/sdk to 1.5.0 --- package-lock.json | 55 ++++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- 2 files changed, 51 insertions(+), 6 deletions(-) diff --git a/package-lock.json b/package-lock.json index 228a51a720a..3c1228c15f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@google-cloud/vertexai": "^1.9.3", "@google/generative-ai": "^0.18.0", "@mistralai/mistralai": "^1.3.6", - "@modelcontextprotocol/sdk": "^1.0.1", + "@modelcontextprotocol/sdk": "^1.5.0", "@types/clone-deep": "^4.0.4", "@types/pdf-parse": "^1.1.4", "@types/tmp": "^0.2.6", @@ -4080,13 +4080,37 @@ "integrity": "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw==" }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.0.3.tgz", - "integrity": "sha512-2as3cX/VJ0YBHGmdv3GFyTpoM8q2gqE98zh3Vf1NwnsSY0h3mvoO07MUzfygCKkWsFjcZm4otIiqD6Xh7kiSBQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.5.0.tgz", + "integrity": "sha512-IJ+5iVVs8FCumIHxWqpwgkwOzyhtHVKy45s6Ug7Dv0MfRpaYisH8QQ87rIWeWdOzlk8sfhitZ7HCyQZk7d6b8w==", + "license": "MIT", "dependencies": { "content-type": "^1.0.5", + "eventsource": "^3.0.2", "raw-body": "^3.0.0", - "zod": "^3.23.8" + "zod": "^3.23.8", + "zod-to-json-schema": "^3.24.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/zod-to-json-schema": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz", + "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.24.1" } }, "node_modules/@noble/ciphers": { @@ -8443,6 +8467,27 @@ "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, + "node_modules/eventsource": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.5.tgz", + "integrity": "sha512-LT/5J605bx5SNyE+ITBDiM3FxffBiq9un7Vx0EwMDM3vg8sWKx/tO2zC+LMqZ+smAM0F2hblaDZUVZF0te2pSw==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz", + "integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", diff --git a/package.json b/package.json index 136c91cfa41..00bdf56f41c 100644 --- a/package.json +++ b/package.json @@ -268,7 +268,7 @@ "@google/generative-ai": "^0.18.0", "@google-cloud/vertexai": "^1.9.3", "@mistralai/mistralai": "^1.3.6", - "@modelcontextprotocol/sdk": "^1.0.1", + "@modelcontextprotocol/sdk": "^1.5.0", "@types/clone-deep": "^4.0.4", "@types/pdf-parse": "^1.1.4", "@types/tmp": "^0.2.6", From 32f2432b561136408600bd91fc5b51f1a72ad70d Mon Sep 17 00:00:00 2001 From: Gustavo Bicalho Date: Wed, 12 Feb 2025 14:50:11 +0000 Subject: [PATCH 2/3] for single-root workspaces, use that folder as CWD for MCP servers --- src/services/mcp/McpHub.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index 6c906c7cf89..eb36b842ebe 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -172,6 +172,7 @@ export class McpHub { // ...(process.env.NODE_PATH ? { NODE_PATH: process.env.NODE_PATH } : {}), }, stderr: "pipe", // necessary for stderr to be available + cwd: config.cwd ?? this.getDefaultCwd(), }) transport.onerror = async (error) => { @@ -266,6 +267,14 @@ export class McpHub { } } + private getDefaultCwd() { + const paths = vscode.workspace.workspaceFolders + if (paths?.length === 1) { + return paths[0].uri.fsPath + } + return undefined + } + private appendErrorMessage(connection: McpConnection, error: string) { const newError = connection.server.error ? `${connection.server.error}\n${error}` : error connection.server.error = newError //.slice(0, 800) From bb04dde81f8a672ccd40475d66ee65a03ae5d98c Mon Sep 17 00:00:00 2001 From: Gustavo Bicalho Date: Wed, 12 Feb 2025 15:25:11 +0000 Subject: [PATCH 3/3] add comment about the getDefaultCwd logic --- src/services/mcp/McpHub.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index eb36b842ebe..5255078f92f 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -270,8 +270,11 @@ export class McpHub { private getDefaultCwd() { const paths = vscode.workspace.workspaceFolders if (paths?.length === 1) { + // In workspaces with a single folder, we can safely use it as the default CWD for MCP servers return paths[0].uri.fsPath } + // Otherwise we return undefined, which means the MCP process will be spawned with + // NodeJS default CWD, i.e. process.cwd() return undefined }