diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 318c684..fb0b537 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "baserow", "displayName": "Baserow", - "version": "0.1.0", + "version": "0.1.1", "description": "Read and change Baserow tables from your AI agent through Baserow's MCP server.", "author": { "name": "Baserow", "url": "https://baserow.io" }, "homepage": "https://baserow.io", @@ -12,8 +12,7 @@ "type": "string", "title": "Baserow MCP URL", "description": "Keep the default for baserow.io. For self-hosted Baserow, copy it from Settings → MCP server. It ends in /mcp.", - "default": "https://api.baserow.io/mcp", - "required": true + "default": "https://api.baserow.io/mcp" } }, "mcpServers": { diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 99e2cd6..316d829 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "baserow", "displayName": "Baserow", "description": "Read and change Baserow tables from your AI agent through Baserow's MCP server.", - "version": "0.1.0", + "version": "0.1.1", "author": { "name": "Baserow", "url": "https://baserow.io" }, "homepage": "https://baserow.io", "repository": "https://github.com/baserow/baserow-mcp", diff --git a/gemini-extension.json b/gemini-extension.json index b645ca7..d3c53e1 100644 --- a/gemini-extension.json +++ b/gemini-extension.json @@ -1,6 +1,6 @@ { "name": "baserow", - "version": "0.1.0", + "version": "0.1.1", "description": "Read and change Baserow tables from your AI agent through Baserow's MCP server.", "contextFileName": "GEMINI.md", "mcpServers": { diff --git a/plugin.json b/plugin.json index b350d9f..a25facf 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "baserow", - "version": "0.1.0", + "version": "0.1.1", "description": "Read and change Baserow tables from your AI agent through Baserow's MCP server.", "author": { "name": "Baserow", "url": "https://baserow.io" }, "homepage": "https://baserow.io", diff --git a/scripts/check-manifests.mjs b/scripts/check-manifests.mjs index ff42870..047cb91 100644 --- a/scripts/check-manifests.mjs +++ b/scripts/check-manifests.mjs @@ -112,6 +112,14 @@ export function checkSync(m) { for (const remote of remotes.filter((r) => r?.variables)) { const problem = urlProblem(remote.url); if (problem) errors.push(`${FILES.registry}: remote ${remote.url} ${problem}`); + const used = [...String(remote.url).matchAll(/\{([^}]+)\}/g)].map(([, name]) => name); + const declared = Object.keys(remote.variables); + for (const name of used.filter((n) => !declared.includes(n))) { + errors.push(`${FILES.registry}: remote ${remote.url} uses {${name}}, which isn't in its variables`); + } + for (const name of declared.filter((n) => !used.includes(n))) { + errors.push(`${FILES.registry}: remote ${remote.url} declares ${name}, which its URL doesn't use`); + } } // Claude Code fills in the user's URL; every other client reads the literal URL in .mcp.json. const claudeUrl = m.claudePlugin?.mcpServers?.[SERVER_NAME]?.url; diff --git a/scripts/check-manifests.test.mjs b/scripts/check-manifests.test.mjs index bf9d42d..4274122 100644 --- a/scripts/check-manifests.test.mjs +++ b/scripts/check-manifests.test.mjs @@ -267,3 +267,11 @@ test("a listing logo that doesn't exist is reported", async (t) => { m.agentPlugin.extensions = { "com.openai": { interface: { logo: "./assets/logo.png", composerIcon: "./assets/missing.svg" } } }; assert.deepEqual(await checkAssets(m, root), ["plugin.json: interface.composerIcon ./assets/missing.svg not found"]); }); + +test("registry URL variables must match the URL", () => { + const m = validManifests(); + m.registry.remotes[1].url = "https://{baserow_host}/mcp"; + const errors = checkSync(m).join("\n"); + assert.match(errors, /uses \{baserow_host\}, which isn't in its variables/); + assert.match(errors, /declares host, which its URL doesn't use/); +}); diff --git a/server.json b/server.json index 01b1cf2..17f1f25 100644 --- a/server.json +++ b/server.json @@ -3,7 +3,7 @@ "name": "io.baserow/baserow", "title": "Baserow", "description": "Read and change Baserow tables.", - "version": "0.1.0", + "version": "0.1.1", "repository": { "url": "https://github.com/baserow/baserow-mcp", "source": "github" @@ -32,10 +32,10 @@ }, { "type": "streamable-http", - "url": "https://{host}/mcp", + "url": "https://{baserow_host}/mcp", "variables": { - "host": { - "description": "Your self-hosted Baserow backend host, with a path prefix if it has one, for example baserow.example.com or example.com/baserow", + "baserow_host": { + "description": "Your self-hosted Baserow backend host, for example baserow.example.com", "isRequired": true } }