diff --git a/packages/vscode-inproc-mcp/CHANGELOG.md b/packages/vscode-inproc-mcp/CHANGELOG.md index ed738e7f..3eac7cf4 100644 --- a/packages/vscode-inproc-mcp/CHANGELOG.md +++ b/packages/vscode-inproc-mcp/CHANGELOG.md @@ -1,6 +1,8 @@ -## 1.0.0 - 21 July 2026 +## 1.0.0 - 23 July 2026 ### Changed * The repository has been relocated to [microsoft/vscode-containers](https://github.com/microsoft/vscode-containers). The bump to 1.0.0 does not reflect any breaking API changes. +* Updated to use `@modelcontextprotocol/server` v2.0.0-beta.4. +* Switched in-proc HTTP transport wiring to `@modelcontextprotocol/node`'s `NodeStreamableHTTPServerTransport`. ## 0.3.0 - 9 February 2026 ### Breaking Changes diff --git a/packages/vscode-inproc-mcp/package.json b/packages/vscode-inproc-mcp/package.json index 75785203..2c11d3b3 100644 --- a/packages/vscode-inproc-mcp/package.json +++ b/packages/vscode-inproc-mcp/package.json @@ -45,7 +45,8 @@ "dependencies": { "@microsoft/vscode-azext-utils": "catalog:", "@microsoft/vscode-processutils": "workspace:*", - "@modelcontextprotocol/sdk": "^1.26.0", + "@modelcontextprotocol/node": "2.0.0-beta.4", + "@modelcontextprotocol/server": "2.0.0-beta.4", "express": "~5", "zod": "catalog:" }, diff --git a/packages/vscode-inproc-mcp/src/mcp/registerMcpTool.ts b/packages/vscode-inproc-mcp/src/mcp/registerMcpTool.ts index bf516939..1babd794 100644 --- a/packages/vscode-inproc-mcp/src/mcp/registerMcpTool.ts +++ b/packages/vscode-inproc-mcp/src/mcp/registerMcpTool.ts @@ -3,8 +3,7 @@ * Licensed under the MIT License. See LICENSE in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import type { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js'; -import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js'; +import type { McpServer, RegisteredTool, ServerContext, StandardSchemaWithJSON } from '@modelcontextprotocol/server'; import type { z } from 'zod/mini'; import type { CopilotTool, ToolIOSchema } from '../contracts/CopilotTool'; import { McpTool } from './McpTool'; @@ -54,28 +53,53 @@ export function registerMcpTool { + return mcpTool.executeMcp.call(mcpTool, undefined as z.infer, toToolExecutionExtras(extra)); + } + ); + } + return server.registerTool( mcpTool.name, { - ...mcpTool, - inputSchema: normalizedInputSchema, - outputSchema: normalizedOutputSchema, + title: mcpTool.title, + description: mcpTool.description, + inputSchema: mcpInputSchema, + outputSchema: mcpOutputSchema, + annotations: mcpTool.annotations, }, - async (input: unknown, extra: RequestHandlerExtra) => { - // If the input is void, MCP SDK will call with (extra) instead of (undefined, extra) - // We won't want that, so detect that case and call appropriately - if (inputIsRequestHandlerExtra(input)) { - return mcpTool.executeMcp.call(mcpTool, undefined as z.infer, input); - } else { - return mcpTool.executeMcp.call(mcpTool, input as z.infer, extra); - } + async (input: unknown, extra: ServerContext) => { + return mcpTool.executeMcp.call(mcpTool, input as z.infer, toToolExecutionExtras(extra)); } ); } -function inputIsRequestHandlerExtra(input: unknown): input is RequestHandlerExtra { - return !!input && - typeof input === 'object' && - 'signal' in input && - input.signal instanceof AbortSignal; +function toMcpServerSchema(schema: ToolIOSchema | undefined): StandardSchemaWithJSON | undefined { + if (!schema) { + return undefined; + } + + // zod/mini schemas implement the Standard Schema contract expected by @modelcontextprotocol/server, + // but the TypeScript package types don't currently line up. + return schema as unknown as StandardSchemaWithJSON; +} + +function toToolExecutionExtras(context: ServerContext) { + return { + signal: context.mcpReq.signal, + requestId: context.mcpReq.id, + sessionId: context.sessionId, + }; } diff --git a/packages/vscode-inproc-mcp/src/vscode/McpProviderOptions.ts b/packages/vscode-inproc-mcp/src/vscode/McpProviderOptions.ts index da63bba1..da825e78 100644 --- a/packages/vscode-inproc-mcp/src/vscode/McpProviderOptions.ts +++ b/packages/vscode-inproc-mcp/src/vscode/McpProviderOptions.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See LICENSE in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; +import type { McpServer } from '@modelcontextprotocol/server'; import type * as vscode from 'vscode'; /** diff --git a/packages/vscode-inproc-mcp/src/vscode/inProcHttpServer.ts b/packages/vscode-inproc-mcp/src/vscode/inProcHttpServer.ts index 6aa02670..52f034c2 100644 --- a/packages/vscode-inproc-mcp/src/vscode/inProcHttpServer.ts +++ b/packages/vscode-inproc-mcp/src/vscode/inProcHttpServer.ts @@ -4,7 +4,6 @@ *--------------------------------------------------------------------------------------------*/ import type { DisposableLike } from '@microsoft/vscode-processutils'; -import type { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; import * as crypto from 'crypto'; import type * as express from 'express'; import * as fs from 'fs'; @@ -15,7 +14,12 @@ import { getErrorMessage } from '../utils/getErrorMessage'; import { Lazy } from '../utils/Lazy'; import type { McpProviderOptions } from './McpProviderOptions'; -const transports: Record = {}; +type SessionTransport = { + handleRequest: (req: express.Request, res: express.Response, parsedBody?: unknown) => Promise; + close: () => Promise; +}; + +const transports: Record = {}; /** * Starts a new MCP HTTP server instance on a random named pipe (Windows) or Unix socket (Unix). @@ -88,19 +92,16 @@ function authMiddleware(nonce: string, req: express.Request, res: express.Respon async function handlePost(mcpOptions: McpProviderOptions, req: express.Request, res: express.Response): Promise { const sessionId = req.headers['mcp-session-id'] as string | undefined; + const { isInitializeRequest, McpServer } = await mcpServerModuleLazy.value; + const { NodeStreamableHTTPServerTransport } = await mcpNodeModuleLazy.value; - const isInitializeRequest = await isInitializeRequestLazy.value; - const { StreamableHTTPServerTransport } = await streamableHttpLazy.value; - - let transport: StreamableHTTPServerTransport; + let transport: SessionTransport; if (sessionId && transports[sessionId]) { // Existing session transport = transports[sessionId]; } else if (!sessionId && isInitializeRequest(req.body)) { // New session initialization request - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore MCP SDK contains a bug where this type mismatches between CJS and ESM, we must ignore it. We also can't do @ts-expect-error because the error only happens when building CJS. - transport = new StreamableHTTPServerTransport({ + transport = new NodeStreamableHTTPServerTransport({ sessionIdGenerator: () => crypto.randomUUID(), onsessioninitialized: (sessionId) => { transports[sessionId] = transport; @@ -112,7 +113,6 @@ async function handlePost(mcpOptions: McpProviderOptions, req: express.Request, allowedHosts: ['localhost'], }); - const { McpServer } = await mcpServerLazy.value; const server = new McpServer( { name: mcpOptions.id, @@ -122,9 +122,14 @@ async function handlePost(mcpOptions: McpProviderOptions, req: express.Request, ); try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore MCP SDK contains a bug where this type mismatches between CJS and ESM, we must ignore it. We also can't do @ts-expect-error because the error only happens when building CJS. - await Promise.resolve(mcpOptions.registerTools(server)); + // ESM and CJS declarations expose nominally distinct McpServer classes. + // Both builds share runtime shape, so bridge via the option's parameter type. + await Promise.resolve( + mcpOptions.registerTools( + // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion + server as unknown as Parameters[0] + ) + ); } catch (err) { // Failed to register tools, return error res.status(500).json({ @@ -138,7 +143,7 @@ async function handlePost(mcpOptions: McpProviderOptions, req: express.Request, return; } - await server.connect(transport); + await server.connect(transport as unknown as Parameters[0]); } else { // Invalid request res.status(400).json({ @@ -206,9 +211,5 @@ function tryCleanupSocket(socketPath: string | undefined): void { // Lazily load some modules that are only needed when an MCP server is actually started const expressLazy = new Lazy(async () => await import('express')); -const streamableHttpLazy = new Lazy(async () => await import('@modelcontextprotocol/sdk/server/streamableHttp.js')); -const mcpServerLazy = new Lazy(async () => await import('@modelcontextprotocol/sdk/server/mcp.js')); -const isInitializeRequestLazy = new Lazy(async () => { - const { isInitializeRequest } = await import('@modelcontextprotocol/sdk/types.js'); - return isInitializeRequest; -}); +const mcpServerModuleLazy = new Lazy(async () => await import('@modelcontextprotocol/server')); +const mcpNodeModuleLazy = new Lazy(async () => await import('@modelcontextprotocol/node')); diff --git a/packages/vscode-inproc-mcp/src/vscode/registerMcpToolWithTelemetry.ts b/packages/vscode-inproc-mcp/src/vscode/registerMcpToolWithTelemetry.ts index a812b8aa..a23d5533 100644 --- a/packages/vscode-inproc-mcp/src/vscode/registerMcpToolWithTelemetry.ts +++ b/packages/vscode-inproc-mcp/src/vscode/registerMcpToolWithTelemetry.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See LICENSE in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; +import type { McpServer } from '@modelcontextprotocol/server'; import type { CopilotTool, ToolIOSchema } from '../contracts/CopilotTool'; import { registerMcpTool } from '../mcp/registerMcpTool'; import { McpToolWithTelemetry } from './McpToolWithTelemetry'; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 28d5d579..e0cc5dc9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -204,9 +204,12 @@ importers: '@microsoft/vscode-processutils': specifier: workspace:* version: link:../vscode-processutils - '@modelcontextprotocol/sdk': - specifier: ^1.26.0 - version: 1.29.0(zod@4.4.3) + '@modelcontextprotocol/node': + specifier: 2.0.0-beta.4 + version: 2.0.0-beta.4(@modelcontextprotocol/server@2.0.0-beta.4)(hono@4.12.30) + '@modelcontextprotocol/server': + specifier: 2.0.0-beta.4 + version: 2.0.0-beta.4 express: specifier: ~5 version: 5.2.1 @@ -708,16 +711,24 @@ packages: '@microsoft/vscode-processutils@0.2.2': resolution: {integrity: sha512-kvADRfnSAUcusBzBAn0eDsh880MjTw1tvYGUes6yxUBALkg7RiQPuy2p3gDR4+p+VZqb2T2youY4jgq3/6jnKw==} - '@modelcontextprotocol/sdk@1.29.0': - resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} - engines: {node: '>=18'} + '@modelcontextprotocol/core@2.0.0-beta.4': + resolution: {integrity: sha512-nsMXd4wQBKzmph6r+WOhum+mXjDYljTAqwY/XUg3hLtvNOQ8+JVqBSJOVCMJvx9lXhTpTOPrGZ3BuNiaNPjSvg==} + engines: {node: '>=20'} + + '@modelcontextprotocol/node@2.0.0-beta.4': + resolution: {integrity: sha512-OqbrRVNYNfLxBB2BRkP5oIHKHa0IPHluMbaLgw7YCRKcj5be9ExzyWFJY3KVMb+1F2AVn+0SRoH0XKcNzh3HYQ==} + engines: {node: '>=20'} peerDependencies: - '@cfworker/json-schema': ^4.1.1 - zod: ^3.25 || ^4.0 + '@modelcontextprotocol/server': ^2.0.0-beta.4 + hono: ^4.11.4 peerDependenciesMeta: - '@cfworker/json-schema': + hono: optional: true + '@modelcontextprotocol/server@2.0.0-beta.4': + resolution: {integrity: sha512-pjMZcNEt1dOq0aJCcY3b7w1Ayh+qmQN2xlfTELcGV9yiAjEGIczBPBLWWW0k0zzo5T8kiv15jtKPsWeHGxLvLg==} + engines: {node: '>=20'} + '@nevware21/ts-async@0.5.5': resolution: {integrity: sha512-vwqaL05iJPjLeh5igPi8MeeAu10i+Aq7xko1fbo9F5Si6MnVN5505qaV7AhSdk5MCBJVT/UYMk3kgInNjDb4Ig==} @@ -1157,14 +1168,6 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} - ajv-formats@3.0.1: - resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} @@ -1403,10 +1406,6 @@ packages: core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} - cors@2.8.6: - resolution: {integrity: sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==} - engines: {node: '>= 0.10'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1651,24 +1650,10 @@ packages: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} - eventsource-parser@3.1.0: - resolution: {integrity: sha512-kJezFj9YFAMLeORyi7aCLxLbD5/qWMQnoMVlVPyHIll7lgRJCc3JVln9Vgl9nwQi0YkMnhdGTMNn7CkRRAptMg==} - engines: {node: '>=18.0.0'} - - eventsource@3.0.7: - resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} - engines: {node: '>=18.0.0'} - expand-template@2.0.3: resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} engines: {node: '>=6'} - express-rate-limit@8.5.2: - resolution: {integrity: sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==} - engines: {node: '>= 16'} - peerDependencies: - express: '>= 4.11' - express@5.2.1: resolution: {integrity: sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==} engines: {node: '>= 18'} @@ -1850,8 +1835,8 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - hono@4.12.29: - resolution: {integrity: sha512-1hNiRjawYrLq/4m3DQQjPGFg0VZkk4RjQJDff/excI6Dm9BiL75qxGrd7/c6YOxPdq6AscP3LiXhQ6fKFC1Waw==} + hono@4.12.30: + resolution: {integrity: sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog==} engines: {node: '>=16.9.0'} hosted-git-info@4.1.0: @@ -1923,10 +1908,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - ip-address@10.2.0: - resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} - engines: {node: '>= 12'} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -2024,9 +2005,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jose@6.2.3: - resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -2043,9 +2021,6 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-schema-typed@8.0.2: - resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} - json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} @@ -2277,10 +2252,6 @@ packages: nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - object-inspect@1.13.4: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} @@ -2397,10 +2368,6 @@ packages: resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} engines: {node: '>=12'} - pkce-challenge@5.0.1: - resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} - engines: {node: '>=16.20.0'} - pluralize@2.0.0: resolution: {integrity: sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==} @@ -2993,11 +2960,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zod-to-json-schema@3.25.2: - resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} - peerDependencies: - zod: ^3.25.28 || ^4 - zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} @@ -3399,9 +3361,9 @@ snapshots: '@eslint/core': 1.2.1 levn: 0.4.1 - '@hono/node-server@1.19.14(hono@4.12.29)': + '@hono/node-server@1.19.14(hono@4.12.30)': dependencies: - hono: 4.12.29 + hono: 4.12.30 '@humanfs/core@0.19.2': dependencies: @@ -3594,27 +3556,21 @@ snapshots: tree-kill: 1.2.2 which: 5.0.0 - '@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)': + '@modelcontextprotocol/core@2.0.0-beta.4': dependencies: - '@hono/node-server': 1.19.14(hono@4.12.29) - ajv: 8.20.0 - ajv-formats: 3.0.1(ajv@8.20.0) - content-type: 1.0.5 - cors: 2.8.6 - cross-spawn: 7.0.6 - eventsource: 3.0.7 - eventsource-parser: 3.1.0 - express: 5.2.1 - express-rate-limit: 8.5.2(express@5.2.1) - hono: 4.12.29 - jose: 6.2.3 - json-schema-typed: 8.0.2 - pkce-challenge: 5.0.1 - raw-body: 3.0.2 zod: 4.4.3 - zod-to-json-schema: 3.25.2(zod@4.4.3) - transitivePeerDependencies: - - supports-color + + '@modelcontextprotocol/node@2.0.0-beta.4(@modelcontextprotocol/server@2.0.0-beta.4)(hono@4.12.30)': + dependencies: + '@hono/node-server': 1.19.14(hono@4.12.30) + '@modelcontextprotocol/server': 2.0.0-beta.4 + optionalDependencies: + hono: 4.12.30 + + '@modelcontextprotocol/server@2.0.0-beta.4': + dependencies: + '@modelcontextprotocol/core': 2.0.0-beta.4 + zod: 4.4.3 '@nevware21/ts-async@0.5.5': dependencies: @@ -4115,10 +4071,6 @@ snapshots: agent-base@7.1.4: {} - ajv-formats@3.0.1(ajv@8.20.0): - optionalDependencies: - ajv: 8.20.0 - ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 @@ -4363,11 +4315,6 @@ snapshots: core-util-is@1.0.3: {} - cors@2.8.6: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -4646,20 +4593,9 @@ snapshots: events@3.3.0: {} - eventsource-parser@3.1.0: {} - - eventsource@3.0.7: - dependencies: - eventsource-parser: 3.1.0 - expand-template@2.0.3: optional: true - express-rate-limit@8.5.2(express@5.2.1): - dependencies: - express: 5.2.1 - ip-address: 10.2.0 - express@5.2.1: dependencies: accepts: 2.0.0 @@ -4898,7 +4834,7 @@ snapshots: he@1.2.0: {} - hono@4.12.29: {} + hono@4.12.30: {} hosted-git-info@4.1.0: dependencies: @@ -4980,8 +4916,6 @@ snapshots: ini@1.3.8: optional: true - ip-address@10.2.0: {} - ipaddr.js@1.9.1: {} is-binary-path@2.1.0: @@ -5055,8 +4989,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jose@6.2.3: {} - js-tokens@4.0.0: {} js-yaml@4.3.0: @@ -5069,8 +5001,6 @@ snapshots: json-schema-traverse@1.0.0: {} - json-schema-typed@8.0.2: {} - json-stable-stringify-without-jsonify@1.0.1: {} json5@2.2.3: {} @@ -5311,8 +5241,6 @@ snapshots: dependencies: boolbase: 1.0.0 - object-assign@4.1.1: {} - object-inspect@1.13.4: {} on-finished@2.4.1: @@ -5431,8 +5359,6 @@ snapshots: picomatch@4.0.5: {} - pkce-challenge@5.0.1: {} - pluralize@2.0.0: {} pluralize@8.0.0: {} @@ -6078,8 +6004,4 @@ snapshots: yocto-queue@0.1.0: {} - zod-to-json-schema@3.25.2(zod@4.4.3): - dependencies: - zod: 4.4.3 - zod@4.4.3: {}