Skip to content

Commit 42e6322

Browse files
authored
fix(mcp): reject flags as option values (#30)
1 parent ed8b797 commit 42e6322

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/integrations.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ function headerName(header) {
2222

2323
function flagValue(rest, index, flag) {
2424
const value = rest[index + 1];
25-
if (value === undefined || value === "--") return { error: `${flag} requires a value` };
25+
if (value === undefined || value === "--" || String(value).startsWith("-")) {
26+
return { error: `${flag} requires a value` };
27+
}
2628
return { value };
2729
}
2830

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import assert from "node:assert/strict";
2+
import test from "node:test";
3+
4+
import { parseMcp } from "../src/integrations.mjs";
5+
6+
test("parseMcp rejects another flag where a flag value is required", () => {
7+
assert.deepEqual(parseMcp(["add", "--name", "--transport", "http", "server", "https://example.com/mcp"]), {
8+
error: "--name requires a value",
9+
});
10+
assert.deepEqual(parseMcp(["add", "server", "--header", "--transport", "https://example.com/mcp"]), {
11+
error: "--header requires a value",
12+
});
13+
});
14+
15+
test("parseMcp still accepts valid flag values", () => {
16+
assert.deepEqual(parseMcp(["add", "--name", "demo", "--transport", "http", "https://example.com/mcp"]), {
17+
spec: {
18+
name: "demo",
19+
target: "https://example.com/mcp",
20+
args: [],
21+
transport: "http",
22+
env: [],
23+
headers: [],
24+
},
25+
});
26+
});

0 commit comments

Comments
 (0)