diff --git a/CHANGELOG.md b/CHANGELOG.md index 1559560..45fe772 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ ### Maintenance +- **MCP TypeScript SDK 2.4.0 (#303).** Bumps `@modelcontextprotocol/server`, `/core` and `/client` from 2.3.1 to 2.4.0 and `/node` to 2.1.2. 2.4.0 adds the SDK's Skills extension (`@modelcontextprotocol/server/ext/skills`, SEP-2640), which #295 can use instead of its own `skills/list` and `skills/get` handlers. Its patch changes don't affect our tools: none of our schemas use `$id`, a `$ref` root or `x-mcp-header`. - **Removed build output committed under `src/` (#297).** `src/utils/versionUtils-cjs.cjs`, `.d.cts` and their source maps were compiled output from a `tsc` run that wrote next to the sources, committed back in #96. Only `versionUtils-cjs.cts` is source: tshy swaps it in for `versionUtils.ts` in the CommonJS build. `.gitignore` now keeps `.js`, `.cjs`, `.mjs`, `.d.*ts` and `.map` files out of `src/` and `test/`. - **Tests are typechecked in CI (#298).** `tsconfig.test.json` covers `src/` and `test/`, but nothing ran it, so test type errors piled up: about 200 on main, plus about 250 more from SDK v2 typing `structuredContent` as an open object (#296). They're all fixed, and `npm run typecheck` now runs in CI before the tests. `tsconfig.test.json` also gets `noEmit`, since running it without that writes `.js` files next to the sources (see #297). - **New helpers** in `test/utils/resultTestUtils.ts`: `structuredOf(result)` reads structured content as the tool's own output type, so a test that checks a field the schema doesn't have fails to compile. `textOf` and `resourceTextOf` read text content and throw on the wrong content type. diff --git a/package-lock.json b/package-lock.json index 28a61d1..a28bf37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,9 +10,9 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@modelcontextprotocol/core": "^2.3.1", + "@modelcontextprotocol/core": "^2.4.0", "@modelcontextprotocol/ext-apps": "^2.0.3", - "@modelcontextprotocol/server": "^2.3.1", + "@modelcontextprotocol/server": "^2.4.0", "@opentelemetry/api": "^1.9.1", "@opentelemetry/auto-instrumentations-node": "^0.74.0", "@opentelemetry/exporter-trace-otlp-http": "^0.216.0", @@ -32,8 +32,8 @@ "devDependencies": { "@anthropic-ai/sdk": "^0.133.0", "@eslint/js": "^9.27.0", - "@modelcontextprotocol/client": "^2.3.1", - "@modelcontextprotocol/node": "^2.1.1", + "@modelcontextprotocol/client": "^2.4.0", + "@modelcontextprotocol/node": "^2.1.2", "@types/node": "^22.0.0", "@typescript-eslint/eslint-plugin": "^8.58.2", "@typescript-eslint/parser": "^8.58.2", @@ -1918,12 +1918,12 @@ } }, "node_modules/@modelcontextprotocol/client": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/client/-/client-2.3.1.tgz", - "integrity": "sha512-mIGZXpHsjnZ6lD+gD/WCMpR5k8yVQQ8nNFH1N0Srf7AvnwTUMYD6pvTY8ng2+He5FfV7YMZLmrjL7cLa/cc3dQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/client/-/client-2.4.0.tgz", + "integrity": "sha512-LgrD2OphHuG12vfKFKz6SOnq7bKHQmhGJIAYdD+MZBn2npHEyry6uD8zvktodtl5CQM85MO0anUyD9JwmUmxww==", "license": "Apache-2.0", "dependencies": { - "@modelcontextprotocol/core": "2.3.1", + "@modelcontextprotocol/core": "2.4.0", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.8", @@ -1936,9 +1936,9 @@ } }, "node_modules/@modelcontextprotocol/core": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/core/-/core-2.3.1.tgz", - "integrity": "sha512-laVmIhPGpWi7rG9q+0UigblRN0Hws/Yjlb6qLFtVqryXVLkc4h+yN8z731POD2LnAGQlFe7/tXhUm7Bi0YB91g==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/core/-/core-2.4.0.tgz", + "integrity": "sha512-z8QBKqdfXLPzkLQuG4xp8hrVEMm1PZ1IgxMN2sMbJiFiAKOWXnAzogXn2W4aqIBlP1ea6U5yiqVquvUNM1Cj6Q==", "license": "Apache-2.0", "dependencies": { "zod": "^4.2.0" @@ -1982,29 +1982,29 @@ } }, "node_modules/@modelcontextprotocol/node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/node/-/node-2.1.1.tgz", - "integrity": "sha512-EY92OAXN2xYL7tNS/MVsWJW1v8VHAPwl9B4Ca3pCrjmvqyC+S1C/6UHsMxF2GoFPraS5Yyg56vFz9brVpFojMA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/node/-/node-2.1.2.tgz", + "integrity": "sha512-IIcIqBpr6NCQQs5DgJTgvbSOAw+3iaR/uquqg+e0nXCdudfjPg/80x0TseUnQx14AUAtE4fsJCEpJKPyb6WPVA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@hono/node-server": "^1.19.9", + "@hono/node-server": "^1.19.9 || ^2.1.3", "hono": "^4.11.4" }, "engines": { "node": ">=20" }, "peerDependencies": { - "@modelcontextprotocol/server": "^2.3.0" + "@modelcontextprotocol/server": "^2.4.0" } }, "node_modules/@modelcontextprotocol/server": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/server/-/server-2.3.1.tgz", - "integrity": "sha512-e59MfWuSssj6DoQ96JCTqdW1AXT5/XtnTl0WWd6MU1Ka434fFUGGosCLJbGNySDhHGvxQWoRWK137FXYFkYNWw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/server/-/server-2.4.0.tgz", + "integrity": "sha512-rgR9yxSaAJ+bcsi/XroT/S2AfPiIWloXAnrdfYSCms9ivVju0ishu/wW0J21Ho6+ZOR1r7RyeRbjiRuF87ix5Q==", "license": "Apache-2.0", "dependencies": { - "@modelcontextprotocol/core": "2.3.1", + "@modelcontextprotocol/core": "2.4.0", "zod": "^4.2.0" }, "engines": { diff --git a/package.json b/package.json index 92278d1..660ff9d 100644 --- a/package.json +++ b/package.json @@ -43,8 +43,8 @@ "devDependencies": { "@anthropic-ai/sdk": "^0.133.0", "@eslint/js": "^9.27.0", - "@modelcontextprotocol/client": "^2.3.1", - "@modelcontextprotocol/node": "^2.1.1", + "@modelcontextprotocol/client": "^2.4.0", + "@modelcontextprotocol/node": "^2.1.2", "@types/node": "^22.0.0", "@typescript-eslint/eslint-plugin": "^8.58.2", "@typescript-eslint/parser": "^8.58.2", @@ -88,9 +88,9 @@ "mcp" ], "dependencies": { - "@modelcontextprotocol/core": "^2.3.1", + "@modelcontextprotocol/core": "^2.4.0", "@modelcontextprotocol/ext-apps": "^2.0.3", - "@modelcontextprotocol/server": "^2.3.1", + "@modelcontextprotocol/server": "^2.4.0", "@opentelemetry/api": "^1.9.1", "@opentelemetry/auto-instrumentations-node": "^0.74.0", "@opentelemetry/exporter-trace-otlp-http": "^0.216.0",