diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock index 611c162..a3fd6b9 100644 --- a/.speakeasy/gen.lock +++ b/.speakeasy/gen.lock @@ -3,21 +3,21 @@ id: "" management: docChecksum: a65fdbfaf49bb322db3e3a5170b3aff3 docVersion: 0.2.0 - speakeasyVersion: 1.803.1 - generationVersion: 2.950.2 - releaseVersion: 0.5.2 - configChecksum: 2068a21aa2d3a2f3fc46dde9d9ae83a9 + speakeasyVersion: 1.808.1 + generationVersion: 2.960.8 + releaseVersion: 0.5.3 + configChecksum: 63db457b38cac7a25325eff50e078f77 repoURL: https://github.com/cloudinary/analysis-mcp.git installationURL: https://github.com/cloudinary/analysis-mcp published: true persistentEdits: - generation_id: 521810fe-3427-4ac6-bcec-54c0f10d0557 - pristine_commit_hash: 04d001548e632299a749070bb89f0f555aefcd00 - pristine_tree_hash: 68db9d1ceab1c21040dd55869633e35537bb3e5e + generation_id: 10c3eca2-4dd4-49da-9b7b-ca4bbbc80181 + pristine_commit_hash: 7a9740f6fe4f598c461615d12802443e8ab26f5c + pristine_tree_hash: 6ae66a665fa7d3a7e9c757e32eea1d838729d09e features: mcp-typescript: additionalDependencies: 0.1.0 - core: 2.0.0 + core: 2.0.5 customSecuritySchemes: 0.1.1 defaultEnabledRetries: 0.1.0 enumUnions: 0.1.0 @@ -50,12 +50,12 @@ trackedFiles: pristine_git_object: 4f9e60a9462fc4def738d60c3aaadf8232ef185f manifest.json: id: ca642a226869 - last_write_checksum: sha1:6599a1bcd6cb5340e95d8ea2c3f0dc4c5a60de05 - pristine_git_object: 6eff1f165ea5b20efe885e1e35cf466c63be01c9 + last_write_checksum: sha1:72d0807868be15228cfae7d8819763db54170607 + pristine_git_object: 71e9ddcdc77772bbc666dfe8f6e89824c6cf342c package.json: id: 7030d0b2f71b - last_write_checksum: sha1:1ca07bd0113243390178ec3ca078cc414cf40d87 - pristine_git_object: a2fcbe2720d3a3de55d2b8ade9c0ccd3098b9a88 + last_write_checksum: sha1:719552c29862d81305a0747643f4f2a1f215f66c + pristine_git_object: 46ffd0d3e465b250093e0416a9fda657b867551f src/core.ts: id: f431fdbcd144 last_write_checksum: sha1:e6c76b3e17943511abc7ef622b8396393cd78ee2 @@ -138,24 +138,24 @@ trackedFiles: pristine_git_object: ccd5e5d812cb4d21a1013c89f04daad9d2f72190 src/landing-page.ts: id: ef64a6ee46d7 - last_write_checksum: sha1:fe4f0e40282cdb55f201f7cb3ff9ab860742a271 - pristine_git_object: 0373f0e0e9116307dd01e62dcb5c808fd0980891 + last_write_checksum: sha1:466128ffc986dcb9c2a048f860f48cbda26c7a45 + pristine_git_object: b28006f167f0d1f9560930ee0e74714b39cfb9fd src/lib/base64.ts: id: "598522066688" last_write_checksum: sha1:716fa8938b85035068c8bc0586e92aa17f8e21a2 pristine_git_object: b45f432798e2151eee7f6eb4df628b7310942c01 src/lib/config.ts: id: 320761608fb3 - last_write_checksum: sha1:2fb951b2456666a6bc2b1a5b52dfb1aede819cb3 - pristine_git_object: a32a58d2c29c203d1f7523315a6a214824c06139 + last_write_checksum: sha1:02299cf86de7b5868f4e6a565b6825b588254b4f + pristine_git_object: 412b8bbf13759f50a0098d43ba5690391f62fbe0 src/lib/encodings.ts: id: 3bd8ead98afd last_write_checksum: sha1:73dbff8f71fbbc62b58fb98d03fc0dee847fe96b pristine_git_object: 0fb3701301f7499457c9d13868d2eb99d8fec00d src/lib/env.ts: id: c52972a3b198 - last_write_checksum: sha1:356293c6af0bb1ef48eb92c297a814f2183d5aa7 - pristine_git_object: 3b01b918d3e72467f1bd9020bb88d350ba42cd03 + last_write_checksum: sha1:dc0fb6243c929943790316ccdfe5dd12e0e1bf79 + pristine_git_object: 252dfb3ffcab34eb3ab7df00fe02c3b7b4b80cd2 src/lib/files.ts: id: e5efa54fcb95 last_write_checksum: sha1:eca69f15b691e2fbe6d5b15e9b84add4c730c3d7 @@ -234,8 +234,8 @@ trackedFiles: pristine_git_object: 73fbc702475787109cd044d8eeb4b5c8e60089fe src/mcp-server/mcp-server.ts: id: aabbc4ab07c1 - last_write_checksum: sha1:1a024c0eead0cf241f6c193caeac92b1579be38d - pristine_git_object: 84654c77c9cdb66b5ce40e26ce40d63010369d77 + last_write_checksum: sha1:d291f128e9fc6d879fea617c85788ef32b7a2192 + pristine_git_object: 4648d6b1a7897ae9b59134cba318070cb9da4d72 src/mcp-server/prompts.ts: id: 26f3d73cbf31 last_write_checksum: sha1:7f1bb419e02a613ddb8b8a7163a9bb68a0e80d4c @@ -250,8 +250,8 @@ trackedFiles: pristine_git_object: 524b864b4a0d515386ff3f42ed22463827039c06 src/mcp-server/server.ts: id: 2784dd48e82a - last_write_checksum: sha1:0323e5688de3343b4b7e73b864ff67e227436fdd - pristine_git_object: cb002df5179a0e215258c6c2b966713058eec87a + last_write_checksum: sha1:7779d81c52a5fb3dd46e4a3d965ae183170084ea + pristine_git_object: fd0789d7036d087d12e965f3919492b327477bb5 src/mcp-server/shared.ts: id: 074e80d4be1e last_write_checksum: sha1:84222f4deea46fec7c7897f0ef6a66712fc7dff7 diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml index c51c8f0..4725426 100644 --- a/.speakeasy/gen.yaml +++ b/.speakeasy/gen.yaml @@ -33,7 +33,7 @@ generation: generateNewTests: true skipResponseBodyAssertions: false mcp-typescript: - version: 0.5.2 + version: 0.5.3 additionalDependencies: dependencies: {} devDependencies: {} diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock index 65bde40..9dffd0e 100644 --- a/.speakeasy/workflow.lock +++ b/.speakeasy/workflow.lock @@ -1,4 +1,4 @@ -speakeasyVersion: 1.803.1 +speakeasyVersion: 1.808.1 sources: Analyze-API-MCP-OAS: sourceNamespace: analyze-api-mcp-oas @@ -35,3 +35,6 @@ workflow: publish: npm: token: $npm_token + mcpRegistry: + auth: http + token: $mcp_registry_token diff --git a/README.md b/README.md index 091c2cc..0122121 100644 --- a/README.md +++ b/README.md @@ -47,13 +47,13 @@ Currently supports the following analysis options: ## Installation -The MCP server requires Node.js 20 or later. +The MCP server requires Node.js 20.19.0 or later.
Claude Desktop -Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/cloudinary/analysis-mcp/releases/download/v0.5.2/mcp-server.mcpb) file: +Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/cloudinary/analysis-mcp/releases/download/v0.5.3/mcp-server.mcpb) file: -Simply drag and drop the [`mcp-server.mcpb`](https://github.com/cloudinary/analysis-mcp/releases/download/v0.5.2/mcp-server.mcpb) file onto Claude Desktop to install the extension. +Simply drag and drop the [`mcp-server.mcpb`](https://github.com/cloudinary/analysis-mcp/releases/download/v0.5.3/mcp-server.mcpb) file onto Claude Desktop to install the extension. The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup. diff --git a/manifest.json b/manifest.json index 6eff1f1..71e9ddc 100644 --- a/manifest.json +++ b/manifest.json @@ -80,7 +80,7 @@ "sensitive": true } }, - "version": "0.5.2", + "version": "0.5.3", "tools": [ { "name": "analyze-ai-vision-general", diff --git a/package-lock.json b/package-lock.json index 0c852ef..2c59d9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,20 @@ { "name": "@cloudinary/analysis-mcp", - "version": "0.5.2", + "version": "0.5.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@cloudinary/analysis-mcp", - "version": "0.5.2", + "version": "0.5.3", "dependencies": { "@modelcontextprotocol/node": "2.1.1", "@modelcontextprotocol/sdk": "^1.32.1", "@modelcontextprotocol/server": "2.3.1", "@modelcontextprotocol/server-legacy": "2.3.1", "@stricli/core": "^1.1.2", - "express": "^5.1.0", - "zod": "^4.2.0" + "express": "^5.3.0", + "zod": "^4.6.6" }, "bin": { "analysis-mcp": "bin/mcp-server.js", @@ -25,7 +25,7 @@ "@eslint/js": "^9.26.0", "@types/bun": "^1.2.13", "@types/express": "^5.0.1", - "@types/node": "^18.19.3", + "@types/node": "^20.19.0", "bun": "^1.2.12", "eslint": "^9.26.0", "globals": "^16.0.0", @@ -33,7 +33,7 @@ "typescript-eslint": "^8.31.1" }, "engines": { - "node": ">=20" + "node": ">=20.19.0" } }, "node_modules/@anthropic-ai/mcpb": { @@ -259,15 +259,15 @@ } }, "node_modules/@hono/node-server": { - "version": "1.19.14", - "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz", - "integrity": "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==", + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.8.tgz", + "integrity": "sha512-jdf7FHh6A1lzjpHHQUgxsg2GeER2vMetnAOfeActzcoli6jamlK+NAwL6Dsr5Fl3BS3tYUQzCdtZjU8Qxv7bEA==", "license": "MIT", "engines": { - "node": ">=18.14.1" + "node": ">=20" }, "peerDependencies": { - "hono": "^4" + "hono": "^4 || ^5.0.0-0" } }, "node_modules/@humanfs/core": { @@ -401,13 +401,6 @@ "undici-types": "~6.21.0" } }, - "node_modules/@inquirer/core/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==", - "dev": true, - "license": "MIT" - }, "node_modules/@inquirer/editor": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", @@ -574,6 +567,13 @@ "node": ">=18" } }, + "node_modules/@isaacs/nonrecursive-glob-match": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@isaacs/nonrecursive-glob-match/-/nonrecursive-glob-match-1.1.0.tgz", + "integrity": "sha512-GPm/Dbvk5RLmhRnxXIa7nTpK0xtl4E0wj0MslsuNiJ1FIROU+2+9lgUC/dgF7Ey4QCWhfEsgxilMRMCdHPfDfw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/@modelcontextprotocol/core": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@modelcontextprotocol/core/-/core-2.3.1.tgz", @@ -1000,13 +1000,13 @@ } }, "node_modules/@types/node": { - "version": "18.19.130", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", - "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "version": "20.19.43", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.43.tgz", + "integrity": "sha512-6oYBAi5ikg4Pl+kGsoYtawUMBT2zZMCvPNF7pVLnHZfd1zf38DRiWn/gT01RYCdUqkv7Fhr+C9ot4/tb+2sVvA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.21.0" } }, "node_modules/@types/qs": { @@ -1240,29 +1240,30 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.13.tgz", + "integrity": "sha512-Vh3dmFbc4wZeox7M9I/0L9GfFd83Su4+yCck/OF9Gi/P/dAHn0RT7X4K9R7gMNMhDck3DvhR6QXsnQdjjgwNvQ==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "11.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-11.0.8.tgz", + "integrity": "sha512-nFQuYSTVrGvysVBps5Ih+0BdnYFN/Cj3C816r6+p7yK+FHrVLGE4O4N9AFwykrlNlvM2HYt+Rad1Uiro6h88Ig==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "@isaacs/nonrecursive-glob-match": "^1.1.0", + "brace-expansion": "^5.0.12" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -1449,18 +1450,18 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz", - "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.4.0.tgz", + "integrity": "sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==", "license": "MIT", "dependencies": { "bytes": "^3.1.2", - "content-type": "^2.0.0", + "content-type": "^2.1.0", "debug": "^4.4.3", "http-errors": "^2.0.1", - "iconv-lite": "^0.7.2", + "iconv-lite": "^0.7.3", "on-finished": "^2.4.1", - "qs": "^6.15.2", + "qs": "^6.16.1", "raw-body": "^3.0.2", "type-is": "^2.1.0" }, @@ -1667,9 +1668,9 @@ "license": "MIT" }, "node_modules/content-disposition": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz", - "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-2.0.1.tgz", + "integrity": "sha512-e+H0ZXHSWYrENhQzw1LPuP4oF5MzVKmDU6d3hxlvaPEYLLg62MxtQNPRx4SYSuYJSBUgnQIG4HIN2tEtNv7Dog==", "license": "MIT", "engines": { "node": ">=18" @@ -2074,15 +2075,15 @@ } }, "node_modules/express": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", - "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.3.0.tgz", + "integrity": "sha512-qCqy1xSoaugxOD4IVHb1ZWdkvCF2W3aE2okKouWj8VwJ+ztskSiXoBnCSJqfKT+cVPJhuJqe9YLbY425+Zh00g==", "license": "MIT", "dependencies": { "accepts": "^2.0.0", - "body-parser": "^2.2.1", - "content-disposition": "^1.0.0", - "content-type": "^1.0.5", + "body-parser": "^2.3.0", + "content-disposition": "^2.0.1", + "content-type": "^2.0.0", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", @@ -2098,14 +2099,14 @@ "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", - "proxy-addr": "^2.0.7", - "qs": "^6.14.0", + "proxy-addr": "^2.0.8", + "qs": "^6.16.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", - "type-is": "^2.0.1", + "type-is": "^2.1.0", "vary": "^1.1.2" }, "engines": { @@ -2134,6 +2135,19 @@ "express": ">= 4.11" } }, + "node_modules/express/node_modules/content-type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -2183,9 +2197,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-4.2.1.tgz", - "integrity": "sha512-TmHQgewjHtMq1E5QKA0tOE0yeYGQs25KZC/ziJpubRtWI15W92e6vPFydWOeZBVROSHBYw/QhD9d5OefdD6LDg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-4.2.3.tgz", + "integrity": "sha512-I1PXwP5eAhlNlcdpjt9CgB59op2ZvZfxw+BkqGFVIUOgNpCVTcTqp3HhTX7brxj5vsip+nSY4nTvff+eIA76hg==", "funding": [ { "type": "github", @@ -2512,9 +2526,9 @@ } }, "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.3.tgz", + "integrity": "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -2571,9 +2585,9 @@ "license": "ISC" }, "node_modules/ip-address": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.3.tgz", - "integrity": "sha512-A1kdq/tSb5QjvKvAMgIoEvDBIgL7qaqVP/jkvSwYYRZ9iEzvPpopxp2wQfu3SuZRHtpHNxMn8Fs0bS+gf5Xmwg==", + "version": "10.7.6", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.6.tgz", + "integrity": "sha512-00LYkM6byILa9eQIx6qoaXCM40xTLd56AZ4vyaPW3YTyb49VZYPo5xsiAq4tuQ54GH4R7gVdYScJ1B7B77PuTg==", "license": "MIT", "engines": { "node": ">= 12" @@ -2761,12 +2775,16 @@ } }, "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.1.tgz", + "integrity": "sha512-yz3xRaG20c6/BOzvYoDaGtPmGscs7YivItZEEqe6GbwNfHuxu9YNmvnEkMzKldAGY4/80pRcQRZSEnhquk9XuQ==", "license": "MIT", "engines": { "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/merge-descriptors": { @@ -3060,9 +3078,9 @@ } }, "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.8.tgz", + "integrity": "sha512-5nnx0yGyVUcY6t9RnWcARWtwT9F1D8O9rt08htPvnd49W1IgZtmLkhu9WfMzQj1cFxjHIO6connUNVW5k7AVyQ==", "license": "MIT", "dependencies": { "forwarded": "0.2.0", @@ -3070,6 +3088,10 @@ }, "engines": { "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/punycode": { @@ -3083,12 +3105,13 @@ } }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.17.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.17.1.tgz", + "integrity": "sha512-jd3COkaKVgGUW+ZHyEHCG9bH7RoaaiWuMgzsIBjUMVjLAaWGWpoUAVwljVvBHxRu/2qEHnadLGZrkutYUBPQJA==", "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -3248,14 +3271,14 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -3492,9 +3515,9 @@ } }, "node_modules/type-is/node_modules/content-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz", - "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.1.0.tgz", + "integrity": "sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==", "license": "MIT", "engines": { "node": ">=18" @@ -3543,9 +3566,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, @@ -3660,9 +3683,9 @@ } }, "node_modules/zod": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz", - "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==", + "version": "4.6.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz", + "integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/package.json b/package.json index 699fb44..6d08e5d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cloudinary/analysis-mcp", - "version": "0.5.2", + "version": "0.5.3", "mcpName": "com.cloudinary/analysis-mcp", "homepage": "https://cloudinary.com/documentation/cloudinary_llm_mcp", "author": "Cloudinary", @@ -28,24 +28,28 @@ "@modelcontextprotocol/server": "2.3.1", "@modelcontextprotocol/server-legacy": "2.3.1", "@stricli/core": "^1.1.2", - "express": "^5.1.0", - "zod": "^4.2.0" + "express": "^5.3.0", + "zod": "^4.6.6" }, "overrides": { - "hono": ">=4.12.34", - "fast-uri": ">=4.1.2 <5.0.0", - "js-yaml": ">=4.3.1 <5.0.0", - "ip-address": ">=10.3.1 <11.0.0", + "hono": ">=4.13.11", + "fast-uri": ">=4.2.3 <5.0.0", + "js-yaml": ">=4.3.2 <5.0.0", + "ip-address": ">=10.7.4 <11.0.0", "nanoid@^5.0.0": ">=5.1.16 <6.0.0", - "brace-expansion@^2.0.0": ">=2.1.4 <3.0.0", - "body-parser": ">=2.3.0 <3.0.0" + "brace-expansion@^2.0.0": ">=2.1.7 <3.0.0", + "body-parser": ">=2.4.0 <3.0.0", + "proxy-addr": ">=2.0.8 <3.0.0", + "qs": ">=6.16.0 <7.0.0", + "@hono/node-server": ">=2.1.3 <3.0.0", + "minimatch@^10.0.0": ">=11.0.1 <12.0.0" }, "devDependencies": { "@anthropic-ai/mcpb": "^1.2.0", "@eslint/js": "^9.26.0", "@types/bun": "^1.2.13", "@types/express": "^5.0.1", - "@types/node": "^18.19.3", + "@types/node": "^20.19.0", "bun": "^1.2.12", "eslint": "^9.26.0", "globals": "^16.0.0", @@ -53,6 +57,6 @@ "typescript-eslint": "^8.31.1" }, "engines": { - "node": ">=20" + "node": ">=20.19.0" } } diff --git a/server.json b/server.json index 2c07a35..5ba66ce 100644 --- a/server.json +++ b/server.json @@ -17,12 +17,12 @@ "url": "https://github.com/cloudinary/analysis-mcp", "source": "github" }, - "version": "0.5.2", + "version": "0.5.3", "packages": [ { "registryType": "npm", "identifier": "@cloudinary/analysis-mcp", - "version": "0.5.2", + "version": "0.5.3", "transport": { "type": "stdio" }, @@ -49,7 +49,7 @@ }, { "registryType": "oci", - "identifier": "docker.io/cloudinary/analysis-mcp:0.5.2", + "identifier": "docker.io/cloudinary/analysis-mcp:0.5.3", "transport": { "type": "stdio" }, diff --git a/src/landing-page.ts b/src/landing-page.ts index 0373f0e..b28006f 100644 --- a/src/landing-page.ts +++ b/src/landing-page.ts @@ -990,7 +990,7 @@ http_headers = { ${

Instructions

One-click installation for Claude Desktop users

- + 📥 Download MCP Bundle
diff --git a/src/lib/config.ts b/src/lib/config.ts index a32a58d..412b8bb 100644 --- a/src/lib/config.ts +++ b/src/lib/config.ts @@ -73,8 +73,8 @@ export function serverURLFromOptions(options: SDKOptions): URL | null { export const SDK_METADATA = { language: "typescript", openapiDocVersion: "0.2.0", - sdkVersion: "0.5.2", - genVersion: "2.950.2", + sdkVersion: "0.5.3", + genVersion: "2.960.8", userAgent: - "speakeasy-sdk/mcp-typescript 0.5.2 2.950.2 0.2.0 @cloudinary/analysis-mcp", + "speakeasy-sdk/mcp-typescript 0.5.3 2.960.8 0.2.0 @cloudinary/analysis-mcp", } as const; diff --git a/src/lib/env.ts b/src/lib/env.ts index 3b01b91..252dfb3 100644 --- a/src/lib/env.ts +++ b/src/lib/env.ts @@ -18,9 +18,15 @@ export const envSchema: z.ZodType = z.object({ CLOUDINARY_API_SECRET: z.string().optional(), CLOUDINARY_O_AUTH2: z.string().optional(), - CLOUDINARY_DEBUG: z.coerce.boolean().optional(), + CLOUDINARY_DEBUG: z.unknown().transform(parseEnvFlag).optional(), }); +function parseEnvFlag(value: unknown): boolean { + return ["true", "1", "yes", "on"].includes( + String(value).trim().toLowerCase(), + ); +} + let envMemo: Env | undefined = undefined; /** * Reads and validates environment variables. diff --git a/src/mcp-server/mcp-server.ts b/src/mcp-server/mcp-server.ts index 84654c7..4648d6b 100644 --- a/src/mcp-server/mcp-server.ts +++ b/src/mcp-server/mcp-server.ts @@ -22,7 +22,7 @@ const routes = buildRouteMap({ export const app = buildApplication(routes, { name: "mcp", versionInfo: { - currentVersion: "0.5.2", + currentVersion: "0.5.3", }, }); diff --git a/src/mcp-server/server.ts b/src/mcp-server/server.ts index a6fa0b7..05c8f2f 100644 --- a/src/mcp-server/server.ts +++ b/src/mcp-server/server.ts @@ -50,7 +50,7 @@ export function createMCPServer(deps: { }) { const server = new McpServer({ name: "CloudinaryAnalysis", - version: "0.5.2", + version: "0.5.3", ...serverInfo, }, { instructions });