diff --git a/src/integrations.mjs b/src/integrations.mjs index cf56069..604d0f2 100644 --- a/src/integrations.mjs +++ b/src/integrations.mjs @@ -22,7 +22,9 @@ function headerName(header) { function flagValue(rest, index, flag) { const value = rest[index + 1]; - if (value === undefined || value === "--") return { error: `${flag} requires a value` }; + if (value === undefined || value === "--" || String(value).startsWith("-")) { + return { error: `${flag} requires a value` }; + } return { value }; } diff --git a/tests/integrations-parse-mcp.test.mjs b/tests/integrations-parse-mcp.test.mjs new file mode 100644 index 0000000..6fd6af8 --- /dev/null +++ b/tests/integrations-parse-mcp.test.mjs @@ -0,0 +1,26 @@ +import assert from "node:assert/strict"; +import test from "node:test"; + +import { parseMcp } from "../src/integrations.mjs"; + +test("parseMcp rejects another flag where a flag value is required", () => { + assert.deepEqual(parseMcp(["add", "--name", "--transport", "http", "server", "https://example.com/mcp"]), { + error: "--name requires a value", + }); + assert.deepEqual(parseMcp(["add", "server", "--header", "--transport", "https://example.com/mcp"]), { + error: "--header requires a value", + }); +}); + +test("parseMcp still accepts valid flag values", () => { + assert.deepEqual(parseMcp(["add", "--name", "demo", "--transport", "http", "https://example.com/mcp"]), { + spec: { + name: "demo", + target: "https://example.com/mcp", + args: [], + transport: "http", + env: [], + headers: [], + }, + }); +});