@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 +25 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +100 -7
- package/dist/index.js.map +1 -1
- package/mcp.json.example +3 -1
- package/package.json +1 -1
- package/src/index.ts +108 -7
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geohar/pi-mcp-combiner",
|
|
3
|
-
"version": "0.
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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}`
|