diff --git a/gmail/.cursor-plugin/plugin.json b/gmail/.cursor-plugin/plugin.json index e18dfb96..11dc0c28 100644 --- a/gmail/.cursor-plugin/plugin.json +++ b/gmail/.cursor-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "gmail", "displayName": "Gmail", "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, "description": "Connect Cursor to Gmail via Google's remote MCP server — search, read, draft, label, and manage email.", "author": { "name": "Cursor", diff --git a/google-calendar/.cursor-plugin/plugin.json b/google-calendar/.cursor-plugin/plugin.json index f01c79b9..13d51ad9 100644 --- a/google-calendar/.cursor-plugin/plugin.json +++ b/google-calendar/.cursor-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "google-calendar", "displayName": "Google Calendar", "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, "description": "Connect Cursor to Google Calendar via Google's remote MCP server — list calendars, search events, and create or update meetings.", "author": { "name": "Cursor", diff --git a/google-docs/.cursor-plugin/plugin.json b/google-docs/.cursor-plugin/plugin.json index cd5ae60a..f1e56d8e 100644 --- a/google-docs/.cursor-plugin/plugin.json +++ b/google-docs/.cursor-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "google-docs", "displayName": "Google Docs", "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, "description": "Connect Cursor to Google Docs via Google's remote MCP server — read and update documents.", "author": { "name": "Cursor", diff --git a/google-drive/.cursor-plugin/plugin.json b/google-drive/.cursor-plugin/plugin.json index 5cee94c9..a3c2adff 100644 --- a/google-drive/.cursor-plugin/plugin.json +++ b/google-drive/.cursor-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "google-drive", "displayName": "Google Drive", "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, "description": "Connect Cursor to Google Drive via Google's remote MCP server — search, read, create, share, and manage files.", "author": { "name": "Cursor", diff --git a/google-sheets/.cursor-plugin/plugin.json b/google-sheets/.cursor-plugin/plugin.json index 89ac90f9..1d44a878 100644 --- a/google-sheets/.cursor-plugin/plugin.json +++ b/google-sheets/.cursor-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "google-sheets", "displayName": "Google Sheets", "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, "description": "Connect Cursor to Google Sheets via Google's remote MCP server — read spreadsheets, update values and formulas.", "author": { "name": "Cursor", diff --git a/google-slides/.cursor-plugin/plugin.json b/google-slides/.cursor-plugin/plugin.json index 43236a18..6e85a62a 100644 --- a/google-slides/.cursor-plugin/plugin.json +++ b/google-slides/.cursor-plugin/plugin.json @@ -2,6 +2,9 @@ "name": "google-slides", "displayName": "Google Slides", "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, "description": "Connect Cursor to Google Slides via Google's remote MCP server — read and update presentations.", "author": { "name": "Cursor", diff --git a/schemas/marketplace.schema.json b/schemas/marketplace.schema.json index 70eba0f5..a3ca579a 100644 --- a/schemas/marketplace.schema.json +++ b/schemas/marketplace.schema.json @@ -70,8 +70,31 @@ "description": { "type": "string", "description": "Short description of the plugin." + }, + "minClientVersions": { + "$ref": "#/$defs/minClientVersions", + "description": "Minimum client versions required to install the plugin, keyed by client identifier." } } + }, + "minClientVersions": { + "type": "object", + "minProperties": 1, + "properties": { + "cursor": { + "$ref": "#/$defs/semver", + "description": "Minimum Cursor version required to install the plugin (e.g. \"3.13.0\")." + } + }, + "additionalProperties": { + "$ref": "#/$defs/semver", + "description": "Minimum version required for another client identifier." + } + }, + "semver": { + "type": "string", + "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$", + "description": "Strict semantic version \"X.Y.Z\" with an optional prerelease suffix." } } } diff --git a/schemas/plugin.schema.json b/schemas/plugin.schema.json index d4c539e0..807cc0a8 100644 --- a/schemas/plugin.schema.json +++ b/schemas/plugin.schema.json @@ -25,6 +25,10 @@ "type": "string", "description": "Semantic version of the plugin (e.g. \"1.2.3\")." }, + "minClientVersions": { + "$ref": "#/$defs/minClientVersions", + "description": "Minimum client versions required to install the plugin, keyed by client identifier." + }, "author": { "$ref": "#/$defs/author", "description": "The plugin author." @@ -112,6 +116,25 @@ } } }, + "minClientVersions": { + "type": "object", + "minProperties": 1, + "properties": { + "cursor": { + "$ref": "#/$defs/semver", + "description": "Minimum Cursor version required to install the plugin (e.g. \"3.13.0\")." + } + }, + "additionalProperties": { + "$ref": "#/$defs/semver", + "description": "Minimum version required for another client identifier." + } + }, + "semver": { + "type": "string", + "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?$", + "description": "Strict semantic version \"X.Y.Z\" with an optional prerelease suffix." + }, "stringOrStringArray": { "oneOf": [ { "type": "string" },