From 732a3f49e067255c319d35ffe5f89f19409d5606 Mon Sep 17 00:00:00 2001 From: Bob Summerwill Date: Fri, 31 Oct 2025 22:28:40 -0700 Subject: [PATCH] chore: upgrade all dependencies and fix breaking changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Updated all npm packages to their latest versions: * @modelcontextprotocol/sdk: 1.9.0 → 1.20.2 * @types/node: 22.14.1 → 24.9.2 * axios: 1.8.4 → 1.13.1 * dotenv: 16.5.0 → 17.2.3 * typescript: 5.8.3 → 5.9.3 * zod: 3.24.2 → 4.1.12 - Fixed breaking changes in MCP SDK v1.20.2: * Updated tool registration API calls in all tool files * The new API requires callbacks to receive parsed arguments as the first parameter instead of being passed directly * Modified registerAlertsTool, registerForecastTool, registerBorrowTool, registerPurchaseTool, and registerStakeTool to use the new callback signature - Added .gitignore file: * Includes node_modules/, build/, dist/, .env files * Configured for Node.js/TypeScript projects * Excludes logs, editor files, and OS-specific files - Successfully rebuilt project with all changes * All TypeScript compilation errors resolved * Build artifacts generated in build/ directory --- .gitignore | 36 ++++++++++ package-lock.json | 131 +++++++++++++++++++++++----------- package.json | 12 ++-- src/tools/mercata/borrow.ts | 2 +- src/tools/mercata/purchase.ts | 2 +- src/tools/mercata/stake.ts | 2 +- src/tools/weather/alerts.ts | 4 +- src/tools/weather/forecast.ts | 4 +- 8 files changed, 139 insertions(+), 54 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..4f6d63a --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +# Dependencies +node_modules/ + +# Build output +build/ +dist/ + +# Environment variables +.env +.env.local +.env.*.local + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS files +.DS_Store +Thumbs.db + +# TypeScript +*.tsbuildinfo + +# Testing +coverage/ +.nyc_output/ diff --git a/package-lock.json b/package-lock.json index ae218ff..49b540e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,18 +9,18 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@modelcontextprotocol/sdk": "^1.9.0", - "axios": "^1.8.4", + "@modelcontextprotocol/sdk": "^1.20.2", + "axios": "^1.13.1", "blockapps-rest": "^8.4.0", - "dotenv": "^16.5.0", - "zod": "^3.24.2" + "dotenv": "^17.2.3", + "zod": "^4.1.12" }, "bin": { "weather": "build/index.js" }, "devDependencies": { - "@types/node": "^22.14.1", - "typescript": "^5.8.3" + "@types/node": "^24.9.2", + "typescript": "^5.9.3" } }, "node_modules/@babel/polyfill": { @@ -34,14 +34,16 @@ } }, "node_modules/@modelcontextprotocol/sdk": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.9.0.tgz", - "integrity": "sha512-Jq2EUCQpe0iyO5FGpzVYDNFR6oR53AIrwph9yWl7uSc7IWUMsrmpmSaTGra5hQNunXpM+9oit85p924jWuHzUA==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.2.tgz", + "integrity": "sha512-6rqTdFt67AAAzln3NOKsXRmv5ZzPkgbfaebKBqUbts7vK1GZudqnrun5a8d3M/h955cam9RHZ6Jb4Y1XhnmFPg==", "dependencies": { + "ajv": "^6.12.6", "content-type": "^1.0.5", "cors": "^2.8.5", - "cross-spawn": "^7.0.3", + "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", "express": "^5.0.1", "express-rate-limit": "^7.5.0", "pkce-challenge": "^5.0.0", @@ -53,6 +55,22 @@ "node": ">=18" } }, + "node_modules/@modelcontextprotocol/sdk/node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/zod-to-json-schema": { + "version": "3.24.6", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", + "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==", + "peerDependencies": { + "zod": "^3.24.1" + } + }, "node_modules/@solidity-parser/parser": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", @@ -62,12 +80,12 @@ } }, "node_modules/@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", + "version": "24.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.9.2.tgz", + "integrity": "sha512-uWN8YqxXxqFMX2RqGOrumsKeti4LlmIMIyV0lgut4jx7KQBcBiW6vkDtIBvHnHIquwNfJhk8v2OtmO8zXWHfPA==", "dev": true, "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/simple-oauth2": { @@ -92,6 +110,21 @@ "node": ">= 0.6" } }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, "node_modules/ambi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ambi/-/ambi-5.2.0.tgz", @@ -139,12 +172,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", - "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.1.tgz", + "integrity": "sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==", "dependencies": { "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, @@ -816,9 +849,9 @@ } }, "node_modules/dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", "engines": { "node": ">=12" }, @@ -1062,6 +1095,16 @@ "express": "^4.11 || 5 || ^5.0.0-beta.1" } }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, "node_modules/filter-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", @@ -1111,13 +1154,14 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -1425,6 +1469,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, "node_modules/jsonwebtoken": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.4.0.tgz", @@ -2087,9 +2136,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -2100,9 +2149,9 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true }, "node_modules/unix-time": { @@ -2118,6 +2167,14 @@ "node": ">= 0.8" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, "node_modules/utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -2171,20 +2228,12 @@ "deprecated": "This module has moved and is now available at @hapi/hoek. Please update your dependencies as this version is no longer maintained an may contain bugs and security issues." }, "node_modules/zod": { - "version": "3.24.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", - "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.12.tgz", + "integrity": "sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==", "funding": { "url": "https://github.com/sponsors/colinhacks" } - }, - "node_modules/zod-to-json-schema": { - "version": "3.24.5", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz", - "integrity": "sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==", - "peerDependencies": { - "zod": "^3.24.1" - } } } } diff --git a/package.json b/package.json index 8508371..bd60d4e 100644 --- a/package.json +++ b/package.json @@ -17,14 +17,14 @@ "author": "", "license": "ISC", "dependencies": { - "@modelcontextprotocol/sdk": "^1.9.0", - "axios": "^1.8.4", + "@modelcontextprotocol/sdk": "^1.20.2", + "axios": "^1.13.1", "blockapps-rest": "^8.4.0", - "dotenv": "^16.5.0", - "zod": "^3.24.2" + "dotenv": "^17.2.3", + "zod": "^4.1.12" }, "devDependencies": { - "@types/node": "^22.14.1", - "typescript": "^5.8.3" + "@types/node": "^24.9.2", + "typescript": "^5.9.3" } } diff --git a/src/tools/mercata/borrow.ts b/src/tools/mercata/borrow.ts index 00c8bdb..62136c7 100644 --- a/src/tools/mercata/borrow.ts +++ b/src/tools/mercata/borrow.ts @@ -93,6 +93,6 @@ export function registerBorrowTool(server: McpServer) { borrowTool.name, borrowTool.description, borrowTool.parameters, - borrowTool.handler + async (args, extra) => borrowTool.handler(args as { reserveAddress: string; escrowAddress: string; quantity: number }) ); } diff --git a/src/tools/mercata/purchase.ts b/src/tools/mercata/purchase.ts index 458fd9e..af74d34 100644 --- a/src/tools/mercata/purchase.ts +++ b/src/tools/mercata/purchase.ts @@ -148,6 +148,6 @@ export function registerPurchaseTool(server: McpServer) { purchaseTool.name, purchaseTool.description, purchaseTool.parameters, - purchaseTool.handler + async (args, extra) => purchaseTool.handler(args as { asset: string; quantity: number }) ); } diff --git a/src/tools/mercata/stake.ts b/src/tools/mercata/stake.ts index 37213cd..6ba7f2b 100644 --- a/src/tools/mercata/stake.ts +++ b/src/tools/mercata/stake.ts @@ -147,6 +147,6 @@ export function registerStakeTool(server: McpServer) { stakeTool.name, stakeTool.description, stakeTool.parameters, - stakeTool.handler + async (args, extra) => stakeTool.handler(args as { assetName: string; quantity: number }) ); } diff --git a/src/tools/weather/alerts.ts b/src/tools/weather/alerts.ts index 53a9b20..0138934 100644 --- a/src/tools/weather/alerts.ts +++ b/src/tools/weather/alerts.ts @@ -71,6 +71,6 @@ export function registerAlertsTool(server: McpServer) { alertsTool.name, alertsTool.description, alertsTool.parameters, - alertsTool.handler + async (args, extra) => alertsTool.handler(args as { state: string }) ); -} \ No newline at end of file +} diff --git a/src/tools/weather/forecast.ts b/src/tools/weather/forecast.ts index 69388c5..892e35a 100644 --- a/src/tools/weather/forecast.ts +++ b/src/tools/weather/forecast.ts @@ -103,6 +103,6 @@ export function registerForecastTool(server: McpServer) { forecastTool.name, forecastTool.description, forecastTool.parameters, - forecastTool.handler + async (args, extra) => forecastTool.handler(args as { latitude: number; longitude: number }) ); -} \ No newline at end of file +}