@winstonsayno/mcp-gateway 3.8.0 → 4.0.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +28 -6
  3. package/dist/bench/index.d.ts +50 -0
  4. package/dist/bench/index.d.ts.map +1 -0
  5. package/dist/bench/index.js +162 -0
  6. package/dist/bench/index.js.map +1 -0
  7. package/dist/cli.js +77 -2
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config/loader.d.ts +4 -4
  10. package/dist/config/loader.d.ts.map +1 -1
  11. package/dist/config/loader.js +12 -7
  12. package/dist/config/loader.js.map +1 -1
  13. package/dist/config/migrate.d.ts +30 -0
  14. package/dist/config/migrate.d.ts.map +1 -0
  15. package/dist/config/migrate.js +90 -0
  16. package/dist/config/migrate.js.map +1 -0
  17. package/dist/gateway/admin.d.ts +1 -1
  18. package/dist/gateway/admin.d.ts.map +1 -1
  19. package/dist/gateway/admin.js +14 -2
  20. package/dist/gateway/admin.js.map +1 -1
  21. package/dist/gateway/api.js +1 -1
  22. package/dist/gateway/api.js.map +1 -1
  23. package/dist/gateway/balancer.d.ts.map +1 -1
  24. package/dist/gateway/balancer.js +0 -3
  25. package/dist/gateway/balancer.js.map +1 -1
  26. package/dist/gateway/index.d.ts.map +1 -1
  27. package/dist/gateway/index.js +8 -1
  28. package/dist/gateway/index.js.map +1 -1
  29. package/dist/index.d.ts +6 -2
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/plugins/index.d.ts +50 -5
  34. package/dist/plugins/index.d.ts.map +1 -1
  35. package/dist/plugins/index.js +72 -19
  36. package/dist/plugins/index.js.map +1 -1
  37. package/dist/plugins/wasm.d.ts +1 -1
  38. package/dist/plugins/wasm.js +1 -1
  39. package/dist/utils/deprecations.d.ts +21 -12
  40. package/dist/utils/deprecations.d.ts.map +1 -1
  41. package/dist/utils/deprecations.js +55 -9
  42. package/dist/utils/deprecations.js.map +1 -1
  43. package/dist/utils/types.d.ts +4 -2
  44. package/dist/utils/types.d.ts.map +1 -1
  45. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -9,6 +9,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [4.0.0] - 2026-10-08
13
+
14
+ ### ⚠ Breaking
15
+ - **Config schema v4 is required.** `version: 3`, `servers` / `tools` / `rateLimit` directly on an API key, and
16
+ `loadBalancing.strategy: least-latency` are validation errors naming the replacement — run `mcp-gateway migrate`
17
+ (available since 3.9). `version` may be `4` or omitted.
18
+ - **Plugin API v1 is refused** (plugins without `apiVersion`). Declare `apiVersion: 3`.
19
+ - `least-latency` removed from the balancer and the `LoadBalancingConfig` type (use `smart` with a latency-only score).
20
+
21
+ ### Added
22
+ - **Plugin API v3**: `ctx.secrets.get(name)` for secrets granted in the plugin's new `secrets:` config
23
+ (`secret://` references, resolved by the secret providers), `ctx.tenant` (`{ id, name, role }`) on call hooks, and
24
+ the `onConfigChange(change, ctx)` hook after every applied hot reload. `grantSecrets()` for plugins passed in code.
25
+ - The admin config API, `diff` / `apply` and the generated default config use schema v4 (nested `scope`).
26
+ - Final [Migrating to 4.0](docs/guides/migrating-to-v4.md) guide; new [docs/ROADMAP.md](docs/ROADMAP.md) (v4.1 → v5.0).
27
+
28
+ ### Deprecated (removed in 5.0)
29
+ - Plugin API v2 (`apiVersion: 2`) — loads with a warning; declare `apiVersion: 3`.
30
+
31
+ The REST / `/mcp` APIs and the JS / Kotlin clients are unchanged.
32
+
33
+ ## [3.9.0] - 2026-10-08
34
+
35
+ ### Added
36
+ - **`mcp-gateway migrate`** rewrites a config file to schema v4 — `version: 4`, API-key scope nested under `scope:`,
37
+ `least-latency` → `smart` with a latency-only score — keeping YAML comments and layout. `--write` (keeps a `.bak`),
38
+ `-o <file>`, `--check` (exit 3 when a migration is needed, for CI).
39
+ - **v4 preview:** 3.9 already reads `version: 4` and `auth.apiKeys[].scope`, so a migrated file runs on 3.9 before
40
+ the 4.0 upgrade.
41
+ - **`mcp-gateway bench`**: in-process benchmark (REST, REST with auth, cache hit, `/mcp`) with req/s and p50 / p95 / p99;
42
+ `runBenchmark()` exported. Reference numbers in [docs/benchmarks.md](docs/benchmarks.md).
43
+ - [Migrating to 4.0](docs/guides/migrating-to-v4.md) (preview). The GitHub Pages demo lists the new deprecations.
44
+
45
+ ### Deprecated (removed in 4.0)
46
+ - `version: 3` → `version: 4`.
47
+ - `servers` / `tools` / `rateLimit` directly on an API key → `scope: { servers, tools, rateLimit }`.
48
+ - `loadBalancing.strategy: least-latency` → `smart` with `score: { latency: 1, errorRate: 0, cost: 0 }`.
49
+ - (Already scheduled) plugin API v1.
50
+
51
+ `mcp-gateway validate` and `GET /api/v1/admin/deprecations` list each with the affected keys / servers.
52
+
12
53
  ## [3.8.0] - 2026-10-08
13
54
 
14
55
  ### Added
package/README.md CHANGED
@@ -298,10 +298,11 @@ auth:
298
298
  - "sha256:…" # a key stored as its digest (mcp-gateway gen-key / hash-key)
299
299
  - key: "${APP_KEY}" # scoped key (see "Per-key scopes")
300
300
  name: app
301
- servers: ["github"]
302
- tools: ["read_*"]
303
- rateLimit: { limit: 30, windowSeconds: 60 }
304
301
  expiresAt: "2027-01-01" # optional expiry; disabled: true switches a key off
302
+ scope:
303
+ servers: ["github"]
304
+ tools: ["read_*"]
305
+ rateLimit: { limit: 30, windowSeconds: 60 }
305
306
  protect:
306
307
  health: false # true → /api/v1/health requires auth
307
308
  metrics: false # true → /api/v1/metrics requires auth (configure your scraper)
@@ -418,9 +419,10 @@ auth:
418
419
  - "admin-key" # unrestricted
419
420
  - key: ${AURA_GATEWAY_KEY} # ${VAR} is expanded in object keys
420
421
  name: aura # client id "key:aura" in logs, metrics and sessions (unique)
421
- servers: ["github", "fs-*"] # server id globs
422
- tools: ["read_*", "github/create_issue"] # tool globs; "server/tool" when the pattern has a "/"
423
- rateLimit: { limit: 30, windowSeconds: 60 } # own bucket instead of the global rateLimit
422
+ scope:
423
+ servers: ["github", "fs-*"] # server id globs
424
+ tools: ["read_*", "github/create_issue"] # tool globs; "server/tool" when the pattern has a "/"
425
+ rateLimit: { limit: 30, windowSeconds: 60 } # own bucket instead of the global rateLimit
424
426
  ```
425
427
 
426
428
  - A tool must pass the server's own `tools` filter **and** the key's `servers` **and** `tools` lists.
@@ -581,6 +583,26 @@ await gateway.start();
581
583
  process.on('SIGTERM', () => gateway.stop());
582
584
  ```
583
585
 
586
+ ## What's New in v4.0
587
+
588
+ | Feature | Description |
589
+ |---------|-------------|
590
+ | **Config schema v4** | `version: 4`, API-key `scope:`, `smart` instead of `least-latency` — `mcp-gateway migrate` does it for you |
591
+ | **Plugin API v3** | `ctx.secrets`, `ctx.tenant`, `onConfigChange`; v1 refused, v2 deprecated until 5.0 |
592
+ | **Roadmap to 5.0** | MCP spec updates, orchestration, cost budgets, streaming, mTLS, config editor, SDKs — see [ROADMAP](docs/ROADMAP.md) |
593
+
594
+ ⚠ Breaking release — read [Migrating to 4.0](docs/guides/migrating-to-v4.md).
595
+
596
+ ## What's New in v3.9
597
+
598
+ | Feature | Description |
599
+ |---------|-------------|
600
+ | **`mcp-gateway migrate`** | Rewrites your config to schema v4, comments kept; `--check` for CI |
601
+ | **v4 deprecation warnings** | `version: 3`, flat API-key scope, `least-latency` — removed in 4.0 |
602
+ | **`mcp-gateway bench`** | Built-in load test with latency percentiles; see [benchmarks](docs/benchmarks.md) |
603
+
604
+ Details: [CHANGELOG](CHANGELOG.md) · [Migrating to 4.0](docs/guides/migrating-to-v4.md).
605
+
584
606
  ## What's New in v3.8
585
607
 
586
608
  | Feature | Description |
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Built-in benchmark (3.9): `mcp-gateway bench`.
3
+ *
4
+ * Starts an in-process gateway on 127.0.0.1 with a minimal stdio echo MCP server (written to a temp file, run with the
5
+ * current Node binary) and drives it with N concurrent keep-alive clients for a fixed time per scenario:
6
+ *
7
+ * - `rest`: `POST /api/v1/tools/call` (auth off) — the full pipeline (scopes, policy, quotas, audit in memory);
8
+ * - `rest-auth`: the same with an API key and a rate-limit-free key;
9
+ * - `cache`: a cached tool (`cache.rules`) — the gateway's own overhead without the upstream round trip;
10
+ * - `mcp`: JSON-RPC `tools/call` on the streamable-HTTP `/mcp` endpoint (one session per client).
11
+ *
12
+ * Reports requests/s, mean and p50 / p95 / p99 latency, and errors. Numbers depend on the machine; compare runs on
13
+ * the same host.
14
+ *
15
+ * @module bench
16
+ */
17
+ export type BenchScenario = 'rest' | 'rest-auth' | 'cache' | 'mcp';
18
+ export declare const BENCH_SCENARIOS: BenchScenario[];
19
+ export interface BenchOptions {
20
+ durationMs?: number;
21
+ concurrency?: number;
22
+ scenarios?: BenchScenario[];
23
+ /** Warm-up per scenario (not measured). */
24
+ warmupMs?: number;
25
+ }
26
+ export interface BenchResult {
27
+ scenario: BenchScenario;
28
+ requests: number;
29
+ errors: number;
30
+ rps: number;
31
+ meanMs: number;
32
+ p50Ms: number;
33
+ p95Ms: number;
34
+ p99Ms: number;
35
+ maxMs: number;
36
+ }
37
+ export interface BenchReport {
38
+ node: string;
39
+ platform: string;
40
+ cpus: number;
41
+ concurrency: number;
42
+ durationMs: number;
43
+ results: BenchResult[];
44
+ }
45
+ export declare function percentile(sorted: number[], p: number): number;
46
+ export declare function summarize(scenario: BenchScenario, latencies: number[], errors: number, elapsedMs: number): BenchResult;
47
+ export declare function runBenchmark(opts?: BenchOptions): Promise<BenchReport>;
48
+ /** Markdown table of a report. */
49
+ export declare function benchMarkdown(r: BenchReport): string;
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bench/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAQH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,KAAK,CAAC;AACnE,eAAO,MAAM,eAAe,EAAE,aAAa,EAA0C,CAAC;AAEtF,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAeD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAI9D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,CActH;AAyBD,wBAAsB,YAAY,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAwEhF;AAED,kCAAkC;AAClC,wBAAgB,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAIpD"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Built-in benchmark (3.9): `mcp-gateway bench`.
3
+ *
4
+ * Starts an in-process gateway on 127.0.0.1 with a minimal stdio echo MCP server (written to a temp file, run with the
5
+ * current Node binary) and drives it with N concurrent keep-alive clients for a fixed time per scenario:
6
+ *
7
+ * - `rest`: `POST /api/v1/tools/call` (auth off) — the full pipeline (scopes, policy, quotas, audit in memory);
8
+ * - `rest-auth`: the same with an API key and a rate-limit-free key;
9
+ * - `cache`: a cached tool (`cache.rules`) — the gateway's own overhead without the upstream round trip;
10
+ * - `mcp`: JSON-RPC `tools/call` on the streamable-HTTP `/mcp` endpoint (one session per client).
11
+ *
12
+ * Reports requests/s, mean and p50 / p95 / p99 latency, and errors. Numbers depend on the machine; compare runs on
13
+ * the same host.
14
+ *
15
+ * @module bench
16
+ */
17
+ import { mkdtempSync, writeFileSync, rmSync } from 'fs';
18
+ import { tmpdir } from 'os';
19
+ import { join } from 'path';
20
+ import { Gateway } from '../gateway/index.js';
21
+ export const BENCH_SCENARIOS = ['rest', 'rest-auth', 'cache', 'mcp'];
22
+ const ECHO_SERVER = `
23
+ const rl = require('readline').createInterface({ input: process.stdin });
24
+ const send = (m) => process.stdout.write(JSON.stringify(m) + '\\n');
25
+ rl.on('line', (line) => {
26
+ let msg; try { msg = JSON.parse(line); } catch { return; }
27
+ if (msg.method === 'initialize') return send({ jsonrpc: '2.0', id: msg.id, result: { protocolVersion: '2025-06-18', capabilities: { tools: {} }, serverInfo: { name: 'bench-echo', version: '1' } } });
28
+ if (msg.method === 'tools/list') return send({ jsonrpc: '2.0', id: msg.id, result: { tools: [{ name: 'echo', description: 'Echo', inputSchema: { type: 'object' } }, { name: 'cached', description: 'Cached echo', inputSchema: { type: 'object' } }] } });
29
+ if (msg.method === 'tools/call') return send({ jsonrpc: '2.0', id: msg.id, result: { content: [{ type: 'text', text: JSON.stringify(msg.params.arguments || {}) }] } });
30
+ if (msg.method === 'ping') return send({ jsonrpc: '2.0', id: msg.id, result: {} });
31
+ if (msg.id !== undefined && msg.method) send({ jsonrpc: '2.0', id: msg.id, error: { code: -32601, message: 'unknown' } });
32
+ });
33
+ `;
34
+ export function percentile(sorted, p) {
35
+ if (!sorted.length)
36
+ return 0;
37
+ const i = Math.min(sorted.length - 1, Math.max(0, Math.ceil(p * sorted.length) - 1));
38
+ return sorted[i];
39
+ }
40
+ export function summarize(scenario, latencies, errors, elapsedMs) {
41
+ const s = [...latencies].sort((a, b) => a - b);
42
+ const r2 = (n) => Math.round(n * 100) / 100;
43
+ return {
44
+ scenario,
45
+ requests: s.length,
46
+ errors,
47
+ rps: Math.round((s.length / Math.max(1, elapsedMs)) * 1000),
48
+ meanMs: r2(s.reduce((a, b) => a + b, 0) / Math.max(1, s.length)),
49
+ p50Ms: r2(percentile(s, 0.5)),
50
+ p95Ms: r2(percentile(s, 0.95)),
51
+ p99Ms: r2(percentile(s, 0.99)),
52
+ maxMs: r2(s[s.length - 1] ?? 0),
53
+ };
54
+ }
55
+ async function drive(durationMs, concurrency, once) {
56
+ const latencies = [];
57
+ let errors = 0;
58
+ const t0 = performance.now();
59
+ const end = t0 + durationMs;
60
+ await Promise.all(Array.from({ length: concurrency }, async (_, w) => {
61
+ while (performance.now() < end) {
62
+ const s = performance.now();
63
+ let ok = false;
64
+ try {
65
+ ok = await once(w);
66
+ }
67
+ catch {
68
+ ok = false;
69
+ }
70
+ if (ok)
71
+ latencies.push(performance.now() - s);
72
+ else
73
+ errors++;
74
+ }
75
+ }));
76
+ return { latencies, errors, elapsed: performance.now() - t0 };
77
+ }
78
+ export async function runBenchmark(opts = {}) {
79
+ const durationMs = opts.durationMs ?? 10_000;
80
+ const concurrency = opts.concurrency ?? 32;
81
+ const warmupMs = opts.warmupMs ?? Math.min(1000, durationMs / 5);
82
+ const scenarios = opts.scenarios ?? BENCH_SCENARIOS;
83
+ const dir = mkdtempSync(join(tmpdir(), 'mgw-bench-'));
84
+ const script = join(dir, 'echo.cjs');
85
+ writeFileSync(script, ECHO_SERVER);
86
+ const KEY = 'bench-key-0123456789abcdef';
87
+ const config = {
88
+ port: 0,
89
+ host: '127.0.0.1',
90
+ logLevel: 'error',
91
+ monitor: { requestLog: false },
92
+ servers: [{ id: 'echo', name: 'echo', transport: 'stdio', command: process.execPath, args: [script], maxConcurrency: Math.max(64, concurrency * 2) }],
93
+ cache: { enabled: true, rules: [{ tools: ['cached'], ttlSeconds: 3600, scope: 'shared' }] },
94
+ };
95
+ const results = [];
96
+ const gw = new Gateway(config);
97
+ const gwAuth = new Gateway({ ...config, auth: { strategy: 'api-key', apiKeys: [{ name: 'bench', key: KEY }] } });
98
+ try {
99
+ await gw.start();
100
+ if (scenarios.includes('rest-auth'))
101
+ await gwAuth.start();
102
+ const base = `http://127.0.0.1:${gw.address().port}`;
103
+ const baseAuth = scenarios.includes('rest-auth') ? `http://127.0.0.1:${gwAuth.address().port}` : '';
104
+ const call = (url, tool, headers = {}) => async () => {
105
+ const r = await fetch(`${url}/api/v1/tools/call`, { method: 'POST', headers: { 'content-type': 'application/json', ...headers }, body: JSON.stringify({ server: 'echo', tool, arguments: { n: 1 } }) });
106
+ await r.arrayBuffer();
107
+ return r.ok;
108
+ };
109
+ for (const sc of scenarios) {
110
+ let once;
111
+ if (sc === 'rest')
112
+ once = call(base, 'echo');
113
+ else if (sc === 'rest-auth')
114
+ once = call(baseAuth, 'echo', { authorization: `Bearer ${KEY}` });
115
+ else if (sc === 'cache')
116
+ once = call(base, 'cached');
117
+ else {
118
+ // One MCP session per worker.
119
+ const sessions = [];
120
+ for (let w = 0; w < concurrency; w++) {
121
+ const r = await fetch(`${base}/mcp`, {
122
+ method: 'POST',
123
+ headers: { 'content-type': 'application/json', accept: 'application/json, text/event-stream' },
124
+ body: JSON.stringify({ jsonrpc: '2.0', id: 0, method: 'initialize', params: { protocolVersion: '2025-06-18', capabilities: {}, clientInfo: { name: 'bench', version: '1' } } }),
125
+ });
126
+ await r.arrayBuffer();
127
+ const sid = r.headers.get('mcp-session-id') ?? '';
128
+ sessions.push(sid);
129
+ await fetch(`${base}/mcp`, { method: 'POST', headers: { 'content-type': 'application/json', accept: 'application/json, text/event-stream', ...(sid ? { 'mcp-session-id': sid } : {}) }, body: JSON.stringify({ jsonrpc: '2.0', method: 'notifications/initialized' }) }).then((x) => x.arrayBuffer());
130
+ }
131
+ let id = 1;
132
+ once = async (w) => {
133
+ const sid = sessions[w];
134
+ const r = await fetch(`${base}/mcp`, {
135
+ method: 'POST',
136
+ headers: { 'content-type': 'application/json', accept: 'application/json, text/event-stream', ...(sid ? { 'mcp-session-id': sid } : {}) },
137
+ body: JSON.stringify({ jsonrpc: '2.0', id: id++, method: 'tools/call', params: { name: 'echo', arguments: { n: 1 } } }),
138
+ });
139
+ const text = await r.text();
140
+ return r.ok && text.includes('"result"');
141
+ };
142
+ }
143
+ await drive(warmupMs, concurrency, once);
144
+ const { latencies, errors, elapsed } = await drive(durationMs, concurrency, once);
145
+ results.push(summarize(sc, latencies, errors, elapsed));
146
+ }
147
+ }
148
+ finally {
149
+ await gw.stop().catch(() => undefined);
150
+ await gwAuth.stop().catch(() => undefined);
151
+ rmSync(dir, { recursive: true, force: true });
152
+ }
153
+ const os = await import('os');
154
+ return { node: process.version, platform: `${process.platform}-${process.arch}`, cpus: os.cpus().length, concurrency, durationMs, results };
155
+ }
156
+ /** Markdown table of a report. */
157
+ export function benchMarkdown(r) {
158
+ const head = `Node ${r.node} · ${r.platform} · ${r.cpus} CPU · concurrency ${r.concurrency} · ${r.durationMs / 1000}s per scenario\n\n`;
159
+ const rows = r.results.map((x) => `| ${x.scenario} | ${x.rps} | ${x.meanMs} | ${x.p50Ms} | ${x.p95Ms} | ${x.p99Ms} | ${x.errors} |`);
160
+ return head + ['| Scenario | req/s | mean ms | p50 ms | p95 ms | p99 ms | errors |', '|---|---:|---:|---:|---:|---:|---:|', ...rows].join('\n') + '\n';
161
+ }
162
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/bench/index.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -132,9 +132,9 @@ program
132
132
  console.log(` Servers: ${config.servers.length}`);
133
133
  console.log(` Auth: ${config.auth?.strategy ?? 'none'}`);
134
134
  if (config.deprecations?.length) {
135
- console.log('\nDeprecated (removed in 3.0):');
135
+ console.log('\nDeprecated:');
136
136
  for (const d of config.deprecations)
137
- console.log(` ! ${d.message}`);
137
+ console.log(` ! (removed in ${d.removedIn}) ${d.message}${d.detail ? ` — ${d.detail}` : ''}`);
138
138
  }
139
139
  const warnings = securityWarnings(config);
140
140
  if (warnings.length > 0) {
@@ -297,6 +297,81 @@ program
297
297
  console.log(`hash: ${hash}`);
298
298
  console.log('\nGive the key to the client; put the hash in auth.apiKeys. The key is not shown again.');
299
299
  });
300
+ // ─── migrate (3.9) ────────────────────────────────────────────────────────────
301
+ program
302
+ .command('migrate')
303
+ .description('Rewrite a config file to schema v4 (keeps comments); prints the changes')
304
+ .option('-c, --config <path>', 'Config file (default: the usual search paths)')
305
+ .option('--to <version>', 'Target schema version', '4')
306
+ .option('--write', 'Write the file in place (a .bak copy is kept)')
307
+ .option('-o, --output <path>', 'Write the migrated config to this file instead')
308
+ .option('--check', 'Exit with code 3 when the file needs migrating (CI)')
309
+ .action(async (options) => {
310
+ const { readFile } = await import('fs/promises');
311
+ const { migrateConfigText } = await import('./config/migrate.js');
312
+ const path = resolveConfigPath(options.config);
313
+ if (!path) {
314
+ logger.error('No config file found (use -c <path>)');
315
+ process.exit(1);
316
+ }
317
+ try {
318
+ const text = await readFile(path, 'utf8');
319
+ const r = migrateConfigText(text, /\.json$/i.test(path) ? 'json' : 'yaml', Number(options.to));
320
+ if (!r.changed) {
321
+ console.log(`✓ ${path} is already on schema v${options.to}`);
322
+ }
323
+ else {
324
+ console.log(`${path}: ${r.changes.length} change(s)`);
325
+ for (const c of r.changes)
326
+ console.log(` ~ ${c}`);
327
+ }
328
+ for (const n of r.notes)
329
+ console.log(` ! ${n}`);
330
+ if (r.changed && options.check)
331
+ process.exit(3);
332
+ if (!r.changed)
333
+ return;
334
+ if (options.output) {
335
+ await writeFile(options.output, r.text);
336
+ console.log(`Written to ${options.output}`);
337
+ }
338
+ else if (options.write) {
339
+ await writeFile(`${path}.bak`, text);
340
+ await writeFile(path, r.text);
341
+ console.log(`Written (backup: ${path}.bak)`);
342
+ }
343
+ else {
344
+ console.log('\n--- migrated config (use --write to save) ---\n');
345
+ process.stdout.write(r.text);
346
+ }
347
+ }
348
+ catch (err) {
349
+ logger.error(`Migration failed: ${err instanceof Error ? err.message : String(err)}`);
350
+ process.exit(1);
351
+ }
352
+ });
353
+ // ─── bench (3.9) ──────────────────────────────────────────────────────────────
354
+ program
355
+ .command('bench')
356
+ .description('Benchmark an in-process gateway with a local echo server (REST, auth, cache, /mcp)')
357
+ .option('-d, --duration <seconds>', 'Seconds per scenario', '10')
358
+ .option('--concurrency <n>', 'Concurrent clients', '32')
359
+ .option('-s, --scenario <list>', 'Comma-separated: rest,rest-auth,cache,mcp', 'rest,rest-auth,cache,mcp')
360
+ .option('--json', 'Print JSON')
361
+ .action(async (options) => {
362
+ const { runBenchmark, benchMarkdown, BENCH_SCENARIOS } = await import('./bench/index.js');
363
+ const scenarios = String(options.scenario).split(',').map((x) => x.trim()).filter(Boolean);
364
+ const bad = scenarios.filter((x) => !BENCH_SCENARIOS.includes(x));
365
+ const duration = Number(options.duration);
366
+ const concurrency = Number(options.concurrency);
367
+ if (bad.length || !(duration > 0) || !Number.isInteger(concurrency) || concurrency < 1) {
368
+ logger.error(`Invalid options${bad.length ? `: unknown scenario(s) ${bad.join(', ')}` : ''}`);
369
+ process.exit(1);
370
+ }
371
+ logger.setLevel('error');
372
+ const report = await runBenchmark({ durationMs: duration * 1000, concurrency, scenarios: scenarios });
373
+ console.log(options.json ? JSON.stringify(report, null, 2) : benchMarkdown(report));
374
+ });
300
375
  program.parse(process.argv);
301
376
  if (!process.argv.slice(2).length) {
302
377
  program.outputHelp();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -54,8 +54,8 @@ export declare const PolicyFileSchema: z.ZodObject<{
54
54
  message: z.ZodOptional<z.ZodString>;
55
55
  }, "strict", z.ZodTypeAny, {
56
56
  effect: "allow" | "deny" | "approve";
57
- message?: string | undefined;
58
57
  servers?: string[] | undefined;
58
+ message?: string | undefined;
59
59
  tools?: string[] | undefined;
60
60
  name?: string | undefined;
61
61
  args?: {
@@ -74,8 +74,8 @@ export declare const PolicyFileSchema: z.ZodObject<{
74
74
  clients?: string[] | undefined;
75
75
  }, {
76
76
  effect: "allow" | "deny" | "approve";
77
- message?: string | undefined;
78
77
  servers?: string[] | undefined;
78
+ message?: string | undefined;
79
79
  tools?: string[] | undefined;
80
80
  name?: string | undefined;
81
81
  args?: {
@@ -137,8 +137,8 @@ export declare const PolicyFileSchema: z.ZodObject<{
137
137
  }, "strict", z.ZodTypeAny, {
138
138
  rules: {
139
139
  effect: "allow" | "deny" | "approve";
140
- message?: string | undefined;
141
140
  servers?: string[] | undefined;
141
+ message?: string | undefined;
142
142
  tools?: string[] | undefined;
143
143
  name?: string | undefined;
144
144
  args?: {
@@ -174,8 +174,8 @@ export declare const PolicyFileSchema: z.ZodObject<{
174
174
  version?: 1 | undefined;
175
175
  rules?: {
176
176
  effect: "allow" | "deny" | "approve";
177
- message?: string | undefined;
178
177
  servers?: string[] | undefined;
178
+ message?: string | undefined;
179
179
  tools?: string[] | undefined;
180
180
  name?: string | undefined;
181
181
  args?: {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAc,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAqVrF,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlB,CAAC;AAwgBZ;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMzE;AAED,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAa1D;AAED,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB5E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8B1G;AAgDD,wBAAgB,qBAAqB,IAAI,MAAM,CAiH9C"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAc,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAqVrF,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOlB,CAAC;AAygBZ;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMzE;AAED,yGAAyG;AACzG,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAe1D;AAED,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkB5E;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA8B1G;AAgDD,wBAAgB,qBAAqB,IAAI,MAAM,CAmH9C"}
@@ -11,7 +11,7 @@ import { dirname, resolve } from 'path';
11
11
  import { parse as parseYaml } from 'yaml';
12
12
  import { z } from 'zod';
13
13
  import { expandEnv } from '../transport/channel.js';
14
- import { configDeprecations, removedConfigKeys } from '../utils/deprecations.js';
14
+ import { configDeprecations, normalizeApiKeyScopes, removedConfigKeys } from '../utils/deprecations.js';
15
15
  import { invalidCidr } from '../security/network.js';
16
16
  import { invalidRedactPattern } from '../security/redact.js';
17
17
  import { ASYMMETRIC_ALGORITHMS, HMAC_ALGORITHMS } from '../auth/middleware.js';
@@ -80,7 +80,7 @@ const McpServerSchema = z.object({
80
80
  .optional(),
81
81
  loadBalancing: z
82
82
  .object({
83
- strategy: z.enum(['round-robin', 'random', 'weighted', 'least-latency', 'failover', 'smart']).optional(),
83
+ strategy: z.enum(['round-robin', 'random', 'weighted', 'failover', 'smart']).optional(),
84
84
  score: z
85
85
  .object({ latency: z.number().min(0).optional(), errorRate: z.number().min(0).optional(), cost: z.number().min(0).optional() })
86
86
  .strict()
@@ -417,7 +417,7 @@ const GatewayConfigSchema = z.object({
417
417
  })
418
418
  .optional(),
419
419
  servers: z.array(McpServerSchema).default([]),
420
- version: z.literal(3).optional(),
420
+ version: z.literal(4).optional(),
421
421
  cors: z.object({ origins: z.array(z.string()).optional() }).strict().optional(),
422
422
  health: z.object({ intervalMs: z.number().int().min(1000).optional() }).strict().optional(),
423
423
  admin: z.object({ configApi: z.boolean().optional() }).strict().optional(),
@@ -762,6 +762,7 @@ const GatewayConfigSchema = z.object({
762
762
  name: z.string().min(1).optional(),
763
763
  enabled: z.boolean().optional(),
764
764
  options: z.record(z.unknown()).optional(),
765
+ secrets: z.record(z.string().regex(/^secret:\/\/[A-Za-z0-9_-]+\/\S+$/, 'must be a secret://provider/path reference')).optional(),
765
766
  isolation: z.enum(['tenant', 'client', 'shared']).optional(),
766
767
  limits: z
767
768
  .object({
@@ -868,9 +869,11 @@ export function resolveConfigPath(configPath) {
868
869
  /** Validate (and apply defaults to) a raw config object; throws a readable error listing every issue. */
869
870
  export function validateConfig(raw) {
870
871
  const removed = removedConfigKeys(raw);
872
+ const v4 = normalizeApiKeyScopes(raw);
873
+ removed.push(...v4.errors);
871
874
  if (removed.length > 0)
872
875
  throw new Error(`Invalid configuration:\n${removed.map((m) => ` - ${m}`).join('\n')}`);
873
- const result = GatewayConfigSchema.safeParse(raw);
876
+ const result = GatewayConfigSchema.safeParse(v4.raw);
874
877
  if (!result.success) {
875
878
  throw new Error(`Invalid configuration:\n${result.error.issues.map((i) => ` - ${i.path.join('.')}: ${i.message}`).join('\n')}`);
876
879
  }
@@ -984,6 +987,7 @@ export function generateDefaultConfig() {
984
987
  return `# mcp-gateway configuration
985
988
  # Documentation: https://github.com/HarrisonCN/mcp-gateway/docs
986
989
 
990
+ version: 4
987
991
  port: 4000
988
992
  host: 0.0.0.0
989
993
  logLevel: info
@@ -995,9 +999,10 @@ logLevel: info
995
999
  # - your-secret-key-here # full access
996
1000
  # - key: \${AURA_GATEWAY_KEY} # scoped key; \${VAR} is expanded (patterns are globs)
997
1001
  # name: aura
998
- # servers: ["github", "fs-*"]
999
- # tools: ["read_*", "github/create_issue"]
1000
- # rateLimit: { limit: 30, windowSeconds: 60 }
1002
+ # scope:
1003
+ # servers: ["github", "fs-*"]
1004
+ # tools: ["read_*", "github/create_issue"]
1005
+ # rateLimit: { limit: 30, windowSeconds: 60 }
1001
1006
  # - sha256:<64-hex-digest> # a key stored as its digest: run mcp-gateway hash-key
1002
1007
  # - key: \${CI_GATEWAY_KEY}
1003
1008
  # name: ci