@geohar/pi-mcp-combiner 0.11.2 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -57,12 +57,36 @@ project-local `.pi/mcp.json`, or global `~/.config/mcp/mcp.json`:
57
57
  {
58
58
  "mcpServers": {
59
59
  "mcp-combiner": {
60
- "url": "http://127.0.0.1:9741/mcp"
60
+ "url": "http://127.0.0.1:9741/mcp",
61
+ "auth": "bearer",
62
+ "bearerTokenEnv": "MCP_COMBINER_AUTH_TOKEN"
61
63
  }
62
64
  }
63
65
  }
64
66
  ```
65
67
 
68
+ Or let the extension write it for you — **`/mcp-combiner install-config`** merges
69
+ exactly this entry into `~/.config/mcp/mcp.json` (or a path you pass), preserving
70
+ any other servers and any existing `url` you set. (It only writes when you ask —
71
+ the extension never edits the adapter's config on its own.)
72
+
73
+ `"auth": "bearer"` with `"bearerTokenEnv"` is the correct single pairing — it does
74
+ two jobs at once:
75
+
76
+ - **Sends the token.** `pi-mcp-adapter` only attaches `Authorization: Bearer …`
77
+ when `auth === "bearer"` (`server-manager.ts`); `bearerTokenEnv` names the env
78
+ var it reads at connect. So if you lock the combiner down with an inbound bearer
79
+ (`MCP_COMBINER_AUTH_TOKEN`, see the combiner README), the header is presented —
80
+ nothing is written to disk. **Note:** `bearerTokenEnv` alone, or with `auth:
81
+ false`, does **not** send the header — the adapter gates it on `auth === "bearer"`.
82
+ - **Suppresses OAuth.** `auth: "bearer"` also makes the adapter's `supportsOAuth()`
83
+ false, so a wrong/missing-token 401 surfaces as an honest error instead of the
84
+ spurious `Failed to start OAuth … DCR rejected (HTTP 404)` probe.
85
+
86
+ Harmless when the combiner is **open**: the env var is unset, so no header is sent,
87
+ the endpoint returns 200, and OAuth still never fires. So this one entry is correct
88
+ whether or not inbound auth is enabled.
89
+
66
90
  (See [`mcp.json.example`](./mcp.json.example).) To give this Pi instance its own chat
67
91
  identity toward the combiner — parking its isolated upstream sessions separately — add a
68
92
  path token: `"url": "http://127.0.0.1:9741/mcp/pi-<yourname>"`. The combiner gives URL
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAER,YAAY,EAIf,MAAM,SAAS,CAAA;AA6NhB,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA+I1D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAER,YAAY,EAIf,MAAM,SAAS,CAAA;AA6NhB,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAyJ1D"}
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@
26
26
  // degrade-rather-than-die behaviour, so a user running several clients gets one answer
27
27
  // to "which combiner / which sharedserver am I on, and why".
28
28
  import { spawnSync } from "node:child_process";
29
- import { existsSync, mkdirSync, readFileSync } from "node:fs";
29
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
30
30
  import { homedir } from "node:os";
31
31
  import { dirname, join } from "node:path";
32
32
  import { fileURLToPath } from "node:url";
@@ -232,17 +232,24 @@ export default function mcpCombiner(pi) {
232
232
  return;
233
233
  return { systemPrompt: `${event.systemPrompt}\n\n${COMBINER_DIRECTIVE}` };
234
234
  });
235
- // ── /mcp-combiner command: inspect the extension (verb: system-prompt) ──
235
+ // ── /mcp-combiner command: inspect + configure the extension ──
236
+ // verbs: system-prompt (show the injected directive), install-config (write
237
+ // the pi-mcp-adapter mcp.json entry, incl. bearer-auth wiring).
236
238
  pi.registerCommand("mcp-combiner", {
237
- description: "mcp-combiner extension — verb: system-prompt (show the injected directive)",
239
+ description: "mcp-combiner — verbs: system-prompt (show directive), install-config [path] (write mcp.json)",
238
240
  getArgumentCompletions: (prefix) => completeVerbs(prefix),
239
241
  handler: (args, ctx) => {
240
- const verb = args.trim();
241
- if (verb === "" || verb === "system-prompt") {
242
+ const [verb, ...rest] = args.trim().split(/\s+/);
243
+ const v = verb ?? "";
244
+ if (v === "" || v === "system-prompt") {
242
245
  showDirective(ctx, "mcp-combiner", COMBINER_DIRECTIVE, wantInstructions);
243
246
  return;
244
247
  }
245
- ctx.ui?.notify?.(`mcp-combiner: unknown verb "${verb}". Try: system-prompt`, "warn");
248
+ if (v === "install-config") {
249
+ installConfig(ctx, rest.join(" ").trim() || undefined);
250
+ return;
251
+ }
252
+ ctx.ui?.notify?.(`mcp-combiner: unknown verb "${v}". Try: system-prompt, install-config`, "warn");
246
253
  },
247
254
  });
248
255
  if (hostOwned || !manage) {
@@ -348,7 +355,7 @@ export default function mcpCombiner(pi) {
348
355
  // directive this extension injects — the show-command pattern from pi-custom-system-prompt,
349
356
  // since `before_agent_start` injections are per-turn and never appear in Pi's own
350
357
  // `/system-prompt` (which reports the base prompt only).
351
- const COMMAND_VERBS = ["system-prompt"];
358
+ const COMMAND_VERBS = ["system-prompt", "install-config"];
352
359
  function completeVerbs(prefix) {
353
360
  const p = prefix.trim();
354
361
  const matches = COMMAND_VERBS.filter((v) => v.startsWith(p));
@@ -368,6 +375,92 @@ function showDirective(ctx, label, directive, enabled) {
368
375
  : directive;
369
376
  ctx.ui?.notify?.(`${head}\n\n${body}`, "info");
370
377
  }
378
+ // ── /mcp-combiner install-config: write the pi-mcp-adapter mcp.json entry ──
379
+ // A USER-INVOKED write (not the extension silently managing another extension's
380
+ // config): on request, merge the combiner entry into pi-mcp-adapter's mcp.json,
381
+ // wired for the combiner's optional inbound bearer auth:
382
+ //
383
+ // { "url": "…/mcp", "auth": "bearer", "bearerTokenEnv": "MCP_COMBINER_AUTH_TOKEN" }
384
+ //
385
+ // - auth:"bearer" → the adapter attaches `Authorization: Bearer <token>` (it gates
386
+ // the header on `auth === "bearer"` — NOT on bearerTokenEnv alone, and never when
387
+ // auth is false/undefined), AND makes supportsOAuth() false so a wrong/missing
388
+ // token surfaces as an honest 401 instead of a Dynamic-Client-Registration 404.
389
+ // - bearerTokenEnv → names the env var the token is read from at connect (nothing
390
+ // written to disk). Combiner enforces only when MCP_COMBINER_AUTH_TOKEN is set on
391
+ // ITS side; unset ⇒ open, the env var is unset here too so no header is sent.
392
+ // The one shape is correct whether or not auth is enabled.
393
+ function expandHome(p) {
394
+ if (p === "~")
395
+ return homedir();
396
+ if (p.startsWith("~/"))
397
+ return join(homedir(), p.slice(2));
398
+ return p;
399
+ }
400
+ /** The URL the adapter should reach the combiner at — the host-owned URL if an
401
+ * editor supervises it, else host:port/mcp with the same defaults the extension
402
+ * serves on. A grouping-path token, if wanted, is preserved from any existing
403
+ * entry rather than invented here. */
404
+ function defaultCombinerUrl() {
405
+ const explicit = env("MCP_COMPANION_COMBINER_URL");
406
+ if (explicit)
407
+ return explicit;
408
+ const host = env("PI_MCP_COMBINER_HOST") ?? "127.0.0.1";
409
+ let port = DEFAULT_PORT;
410
+ const raw = env("PI_MCP_COMBINER_PORT");
411
+ if (raw !== undefined) {
412
+ const n = Number(raw);
413
+ if (Number.isInteger(n) && n > 0)
414
+ port = n;
415
+ }
416
+ return `http://${host}:${port}/mcp`;
417
+ }
418
+ function installConfig(ctx, pathArg) {
419
+ const target = pathArg ? expandHome(pathArg) : join(homedir(), ".config", "mcp", "mcp.json");
420
+ const key = "mcp-combiner";
421
+ // Read + parse existing (tolerate absence; refuse to clobber non-JSON).
422
+ let doc = {};
423
+ if (existsSync(target)) {
424
+ try {
425
+ const parsed = JSON.parse(readFileSync(target, "utf8"));
426
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
427
+ ctx.ui?.notify?.(`mcp-combiner: ${target} is not a JSON object; not overwriting`, "error");
428
+ return;
429
+ }
430
+ doc = parsed;
431
+ }
432
+ catch (e) {
433
+ ctx.ui?.notify?.(`mcp-combiner: ${target} is not valid JSON; not overwriting (${e})`, "error");
434
+ return;
435
+ }
436
+ }
437
+ const servers = (doc.mcpServers ??= {});
438
+ const prev = (servers[key] ?? {});
439
+ const before = JSON.stringify(prev);
440
+ // Preserve any existing url (e.g. a /mcp/<token> grouping path the user set)
441
+ // and any other fields; only ensure the three auth-wiring keys.
442
+ servers[key] = {
443
+ ...prev,
444
+ url: typeof prev.url === "string" && prev.url ? prev.url : defaultCombinerUrl(),
445
+ auth: "bearer",
446
+ bearerTokenEnv: "MCP_COMBINER_AUTH_TOKEN",
447
+ };
448
+ const existed = before !== "{}" && Object.keys(prev).length > 0;
449
+ const changed = before !== JSON.stringify(servers[key]);
450
+ try {
451
+ mkdirSync(dirname(target), { recursive: true });
452
+ writeFileSync(target, `${JSON.stringify(doc, null, 2)}\n`, "utf8");
453
+ }
454
+ catch (e) {
455
+ ctx.ui?.notify?.(`mcp-combiner: failed to write ${target} (${e})`, "error");
456
+ return;
457
+ }
458
+ const what = !existed ? "added" : changed ? "updated" : "already configured";
459
+ ctx.ui?.notify?.(`mcp-combiner: ${what} "${key}" in ${target}\n` +
460
+ `Sends "Authorization: Bearer $MCP_COMBINER_AUTH_TOKEN" when that env var is set ` +
461
+ `(auth:"bearer" both sends the token and suppresses OAuth probing). ` +
462
+ `Run /reload so pi-mcp-adapter re-reads mcp.json.`, "info");
463
+ }
371
464
  function makeLog(ctx, notify) {
372
465
  return (level, message) => {
373
466
  const line = `mcp-combiner: ${message}`;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/mcp.json.example CHANGED
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "mcpServers": {
3
3
  "mcp-combiner": {
4
- "url": "http://127.0.0.1:9741/mcp"
4
+ "url": "http://127.0.0.1:9741/mcp",
5
+ "auth": "bearer",
6
+ "bearerTokenEnv": "MCP_COMBINER_AUTH_TOKEN"
5
7
  }
6
8
  }
7
9
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geohar/pi-mcp-combiner",
3
- "version": "0.11.2",
3
+ "version": "0.13.0",
4
4
  "description": "Pi extension: run the mcp-combiner MCP aggregator via sharedserver and inject its tool-discovery directive. Pairs with pi-mcp-adapter, which makes the combiner's tools reachable from Pi.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/index.ts CHANGED
@@ -27,7 +27,7 @@
27
27
  // to "which combiner / which sharedserver am I on, and why".
28
28
 
29
29
  import { spawnSync } from "node:child_process"
30
- import { existsSync, mkdirSync, readFileSync } from "node:fs"
30
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"
31
31
  import { homedir } from "node:os"
32
32
  import { dirname, join } from "node:path"
33
33
  import { fileURLToPath } from "node:url"
@@ -277,17 +277,27 @@ export default function mcpCombiner(pi: ExtensionAPI): void {
277
277
  return { systemPrompt: `${event.systemPrompt}\n\n${COMBINER_DIRECTIVE}` }
278
278
  })
279
279
 
280
- // ── /mcp-combiner command: inspect the extension (verb: system-prompt) ──
280
+ // ── /mcp-combiner command: inspect + configure the extension ──
281
+ // verbs: system-prompt (show the injected directive), install-config (write
282
+ // the pi-mcp-adapter mcp.json entry, incl. bearer-auth wiring).
281
283
  pi.registerCommand("mcp-combiner", {
282
- description: "mcp-combiner extension — verb: system-prompt (show the injected directive)",
284
+ description: "mcp-combiner — verbs: system-prompt (show directive), install-config [path] (write mcp.json)",
283
285
  getArgumentCompletions: (prefix) => completeVerbs(prefix),
284
286
  handler: (args, ctx) => {
285
- const verb = args.trim()
286
- if (verb === "" || verb === "system-prompt") {
287
+ const [verb, ...rest] = args.trim().split(/\s+/)
288
+ const v = verb ?? ""
289
+ if (v === "" || v === "system-prompt") {
287
290
  showDirective(ctx, "mcp-combiner", COMBINER_DIRECTIVE, wantInstructions)
288
291
  return
289
292
  }
290
- ctx.ui?.notify?.(`mcp-combiner: unknown verb "${verb}". Try: system-prompt`, "warn")
293
+ if (v === "install-config") {
294
+ installConfig(ctx, rest.join(" ").trim() || undefined)
295
+ return
296
+ }
297
+ ctx.ui?.notify?.(
298
+ `mcp-combiner: unknown verb "${v}". Try: system-prompt, install-config`,
299
+ "warn",
300
+ )
291
301
  },
292
302
  })
293
303
 
@@ -409,7 +419,7 @@ export default function mcpCombiner(pi: ExtensionAPI): void {
409
419
  // directive this extension injects — the show-command pattern from pi-custom-system-prompt,
410
420
  // since `before_agent_start` injections are per-turn and never appear in Pi's own
411
421
  // `/system-prompt` (which reports the base prompt only).
412
- const COMMAND_VERBS = ["system-prompt"]
422
+ const COMMAND_VERBS = ["system-prompt", "install-config"]
413
423
  function completeVerbs(prefix: string): AutocompleteItem[] | null {
414
424
  const p = prefix.trim()
415
425
  const matches = COMMAND_VERBS.filter((v) => v.startsWith(p))
@@ -432,6 +442,97 @@ function showDirective(ctx: ExtensionCommandContext, label: string, directive: s
432
442
  ctx.ui?.notify?.(`${head}\n\n${body}`, "info")
433
443
  }
434
444
 
445
+ // ── /mcp-combiner install-config: write the pi-mcp-adapter mcp.json entry ──
446
+ // A USER-INVOKED write (not the extension silently managing another extension's
447
+ // config): on request, merge the combiner entry into pi-mcp-adapter's mcp.json,
448
+ // wired for the combiner's optional inbound bearer auth:
449
+ //
450
+ // { "url": "…/mcp", "auth": "bearer", "bearerTokenEnv": "MCP_COMBINER_AUTH_TOKEN" }
451
+ //
452
+ // - auth:"bearer" → the adapter attaches `Authorization: Bearer <token>` (it gates
453
+ // the header on `auth === "bearer"` — NOT on bearerTokenEnv alone, and never when
454
+ // auth is false/undefined), AND makes supportsOAuth() false so a wrong/missing
455
+ // token surfaces as an honest 401 instead of a Dynamic-Client-Registration 404.
456
+ // - bearerTokenEnv → names the env var the token is read from at connect (nothing
457
+ // written to disk). Combiner enforces only when MCP_COMBINER_AUTH_TOKEN is set on
458
+ // ITS side; unset ⇒ open, the env var is unset here too so no header is sent.
459
+ // The one shape is correct whether or not auth is enabled.
460
+
461
+ function expandHome(p: string): string {
462
+ if (p === "~") return homedir()
463
+ if (p.startsWith("~/")) return join(homedir(), p.slice(2))
464
+ return p
465
+ }
466
+
467
+ /** The URL the adapter should reach the combiner at — the host-owned URL if an
468
+ * editor supervises it, else host:port/mcp with the same defaults the extension
469
+ * serves on. A grouping-path token, if wanted, is preserved from any existing
470
+ * entry rather than invented here. */
471
+ function defaultCombinerUrl(): string {
472
+ const explicit = env("MCP_COMPANION_COMBINER_URL")
473
+ if (explicit) return explicit
474
+ const host = env("PI_MCP_COMBINER_HOST") ?? "127.0.0.1"
475
+ let port = DEFAULT_PORT
476
+ const raw = env("PI_MCP_COMBINER_PORT")
477
+ if (raw !== undefined) {
478
+ const n = Number(raw)
479
+ if (Number.isInteger(n) && n > 0) port = n
480
+ }
481
+ return `http://${host}:${port}/mcp`
482
+ }
483
+
484
+ function installConfig(ctx: ExtensionCommandContext, pathArg?: string): void {
485
+ const target = pathArg ? expandHome(pathArg) : join(homedir(), ".config", "mcp", "mcp.json")
486
+ const key = "mcp-combiner"
487
+
488
+ // Read + parse existing (tolerate absence; refuse to clobber non-JSON).
489
+ let doc: Record<string, unknown> = {}
490
+ if (existsSync(target)) {
491
+ try {
492
+ const parsed = JSON.parse(readFileSync(target, "utf8"))
493
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
494
+ ctx.ui?.notify?.(`mcp-combiner: ${target} is not a JSON object; not overwriting`, "error")
495
+ return
496
+ }
497
+ doc = parsed as Record<string, unknown>
498
+ } catch (e) {
499
+ ctx.ui?.notify?.(`mcp-combiner: ${target} is not valid JSON; not overwriting (${e})`, "error")
500
+ return
501
+ }
502
+ }
503
+
504
+ const servers = (doc.mcpServers ??= {}) as Record<string, Record<string, unknown>>
505
+ const prev = (servers[key] ?? {}) as Record<string, unknown>
506
+ const before = JSON.stringify(prev)
507
+ // Preserve any existing url (e.g. a /mcp/<token> grouping path the user set)
508
+ // and any other fields; only ensure the three auth-wiring keys.
509
+ servers[key] = {
510
+ ...prev,
511
+ url: typeof prev.url === "string" && prev.url ? prev.url : defaultCombinerUrl(),
512
+ auth: "bearer",
513
+ bearerTokenEnv: "MCP_COMBINER_AUTH_TOKEN",
514
+ }
515
+ const existed = before !== "{}" && Object.keys(prev).length > 0
516
+ const changed = before !== JSON.stringify(servers[key])
517
+
518
+ try {
519
+ mkdirSync(dirname(target), { recursive: true })
520
+ writeFileSync(target, `${JSON.stringify(doc, null, 2)}\n`, "utf8")
521
+ } catch (e) {
522
+ ctx.ui?.notify?.(`mcp-combiner: failed to write ${target} (${e})`, "error")
523
+ return
524
+ }
525
+
526
+ const what = !existed ? "added" : changed ? "updated" : "already configured"
527
+ ctx.ui?.notify?.(
528
+ `mcp-combiner: ${what} "${key}" in ${target}\n` +
529
+ `Sends "Authorization: Bearer $MCP_COMBINER_AUTH_TOKEN" when that env var is set ` +
530
+ `(auth:"bearer" both sends the token and suppresses OAuth probing). ` +
531
+ `Run /reload so pi-mcp-adapter re-reads mcp.json.`,
532
+ "info",
533
+ )
534
+ }
535
+
435
536
  function makeLog(ctx: ExtensionContext, notify: boolean): LogFn {
436
537
  return (level, message) => {
437
538
  const line = `mcp-combiner: ${message}`