@winstonsayno/mcp-gateway 1.2.0 → 1.4.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/CHANGELOG.md +51 -0
- package/README.md +21 -3
- package/dist/auth/middleware.d.ts +9 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +6 -1
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/oauth.d.ts +86 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +342 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/ratelimit.d.ts +3 -2
- package/dist/auth/ratelimit.d.ts.map +1 -1
- package/dist/auth/ratelimit.js +2 -1
- package/dist/auth/ratelimit.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +58 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/gateway/api.d.ts +12 -3
- package/dist/gateway/api.d.ts.map +1 -1
- package/dist/gateway/api.js +23 -9
- package/dist/gateway/api.js.map +1 -1
- package/dist/gateway/index.d.ts +8 -1
- package/dist/gateway/index.d.ts.map +1 -1
- package/dist/gateway/index.js +36 -2
- package/dist/gateway/index.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/endpoint.d.ts +18 -1
- package/dist/mcp/endpoint.d.ts.map +1 -1
- package/dist/mcp/endpoint.js +120 -15
- package/dist/mcp/endpoint.js.map +1 -1
- package/dist/security/lockout.d.ts +14 -2
- package/dist/security/lockout.d.ts.map +1 -1
- package/dist/security/lockout.js +22 -17
- package/dist/security/lockout.js.map +1 -1
- package/dist/security/posture.d.ts.map +1 -1
- package/dist/security/posture.js +3 -0
- package/dist/security/posture.js.map +1 -1
- package/dist/state/index.d.ts +14 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +27 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/redis.d.ts +56 -0
- package/dist/state/redis.d.ts.map +1 -0
- package/dist/state/redis.js +263 -0
- package/dist/state/redis.js.map +1 -0
- package/dist/state/shared.d.ts +45 -0
- package/dist/state/shared.d.ts.map +1 -0
- package/dist/state/shared.js +130 -0
- package/dist/state/shared.js.map +1 -0
- package/dist/state/store.d.ts +67 -0
- package/dist/state/store.d.ts.map +1 -0
- package/dist/state/store.js +113 -0
- package/dist/state/store.js.map +1 -0
- package/dist/utils/types.d.ts +55 -4
- package/dist/utils/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate limiting and brute-force lockout on top of a shared `StateStore`
|
|
3
|
+
* (used when `state.store` is not `memory`).
|
|
4
|
+
*
|
|
5
|
+
* Both fail open by default when the store is unreachable (a Redis outage
|
|
6
|
+
* must not take every tool call down); set `state.failureMode: closed` to
|
|
7
|
+
* reject requests instead.
|
|
8
|
+
*
|
|
9
|
+
* @module state/shared
|
|
10
|
+
*/
|
|
11
|
+
import { setRateLimitHeaders } from '../auth/ratelimit.js';
|
|
12
|
+
import { DEFAULT_LOCKOUT } from '../security/lockout.js';
|
|
13
|
+
import { logger } from '../utils/logger.js';
|
|
14
|
+
let lastStoreWarning = 0;
|
|
15
|
+
function storeFailed(what, err) {
|
|
16
|
+
const t = Date.now();
|
|
17
|
+
if (t - lastStoreWarning > 10_000) {
|
|
18
|
+
lastStoreWarning = t;
|
|
19
|
+
logger.warn(`State store unavailable (${what}): ${err instanceof Error ? err.message : String(err)}`);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Sliding-window rate limiter whose counters live in the store, so the limit
|
|
24
|
+
* holds across every gateway instance sharing it.
|
|
25
|
+
*/
|
|
26
|
+
export function createStoreRateLimiter(config, store, options = {}) {
|
|
27
|
+
const { limit, windowSeconds, perKey = true } = config;
|
|
28
|
+
const windowMs = windowSeconds * 1000;
|
|
29
|
+
const now = options.now ?? Date.now;
|
|
30
|
+
const ns = options.namespace ?? 'rl';
|
|
31
|
+
const take = async (req) => {
|
|
32
|
+
const clientId = perKey ? (req.clientId ?? req.ip ?? 'anonymous') : 'global';
|
|
33
|
+
const t = now();
|
|
34
|
+
const index = Math.floor(t / windowMs);
|
|
35
|
+
const windowStart = index * windowMs;
|
|
36
|
+
const resetAt = windowStart + windowMs;
|
|
37
|
+
const key = (i) => `${ns}:${windowSeconds}:${clientId}:${i}`;
|
|
38
|
+
try {
|
|
39
|
+
const [current, previousRaw] = await Promise.all([store.incr(key(index), 2 * windowMs), store.get(key(index - 1))]);
|
|
40
|
+
const previous = Number(previousRaw ?? 0) || 0;
|
|
41
|
+
const overlap = 1 - (t - windowStart) / windowMs;
|
|
42
|
+
const estimated = current - 1 + previous * overlap;
|
|
43
|
+
if (estimated >= limit) {
|
|
44
|
+
// Denied requests do not count towards the limit.
|
|
45
|
+
await store.incr(key(index), 2 * windowMs, -1).catch(() => undefined);
|
|
46
|
+
logger.warn(`Rate limit exceeded for ${clientId}`);
|
|
47
|
+
return { allowed: false, limit, remaining: 0, resetAt, retryAfter: Math.max(1, Math.ceil((resetAt - t) / 1000)) };
|
|
48
|
+
}
|
|
49
|
+
return { allowed: true, limit, remaining: Math.max(0, Math.floor(limit - estimated - 1)), resetAt };
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
storeFailed('rate limit', err);
|
|
53
|
+
if (options.failureMode === 'closed')
|
|
54
|
+
return { allowed: false, limit, remaining: 0, resetAt, retryAfter: 1 };
|
|
55
|
+
return { allowed: true, limit, remaining: limit, resetAt };
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
const limiter = ((req, res, next) => {
|
|
59
|
+
take(req).then((d) => {
|
|
60
|
+
setRateLimitHeaders(res, d.limit, d.remaining, d.resetAt);
|
|
61
|
+
if (!d.allowed) {
|
|
62
|
+
res.status(429).set('Retry-After', String(d.retryAfter)).json({
|
|
63
|
+
error: 'Too Many Requests',
|
|
64
|
+
message: `Rate limit of ${limit} requests per ${windowSeconds}s exceeded`,
|
|
65
|
+
retryAfter: d.retryAfter,
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
next();
|
|
70
|
+
}, next);
|
|
71
|
+
});
|
|
72
|
+
limiter.take = take;
|
|
73
|
+
limiter.close = () => { };
|
|
74
|
+
return limiter;
|
|
75
|
+
}
|
|
76
|
+
/** Brute-force lockout with failure counters and locks kept in the store. */
|
|
77
|
+
export class StoreAuthLockout {
|
|
78
|
+
store;
|
|
79
|
+
failureMode;
|
|
80
|
+
config;
|
|
81
|
+
total = 0;
|
|
82
|
+
recent = new Map();
|
|
83
|
+
constructor(config, store, failureMode = 'open') {
|
|
84
|
+
this.store = store;
|
|
85
|
+
this.failureMode = failureMode;
|
|
86
|
+
this.config = { ...DEFAULT_LOCKOUT, ...Object.fromEntries(Object.entries(config).filter(([, v]) => v !== undefined)) };
|
|
87
|
+
}
|
|
88
|
+
async lockedFor(ip) {
|
|
89
|
+
try {
|
|
90
|
+
const ttl = await this.store.pttl(`lo:l:${ip}`);
|
|
91
|
+
return ttl > 0 ? Math.ceil(ttl / 1000) : ttl === -1 ? this.config.lockoutSeconds : 0;
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
storeFailed('auth lockout', err);
|
|
95
|
+
return this.failureMode === 'closed' ? 1 : 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async fail(ip) {
|
|
99
|
+
try {
|
|
100
|
+
const n = await this.store.incr(`lo:f:${ip}`, this.config.windowSeconds * 1000);
|
|
101
|
+
if (n >= this.config.maxFailures) {
|
|
102
|
+
await this.store.set(`lo:l:${ip}`, '1', this.config.lockoutSeconds * 1000);
|
|
103
|
+
await this.store.del(`lo:f:${ip}`);
|
|
104
|
+
this.total++;
|
|
105
|
+
this.recent.set(ip, Date.now() + this.config.lockoutSeconds * 1000);
|
|
106
|
+
logger.warn(`Locked out ${ip} for ${this.config.lockoutSeconds}s after ${n} failed authentication attempts`);
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
storeFailed('auth lockout', err);
|
|
112
|
+
}
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
async success(ip) {
|
|
116
|
+
await this.store.del(`lo:f:${ip}`).catch((err) => storeFailed('auth lockout', err));
|
|
117
|
+
}
|
|
118
|
+
/** Lockouts triggered by this instance (the store holds the cluster-wide state). */
|
|
119
|
+
status() {
|
|
120
|
+
const t = Date.now();
|
|
121
|
+
for (const [ip, until] of this.recent)
|
|
122
|
+
if (until <= t)
|
|
123
|
+
this.recent.delete(ip);
|
|
124
|
+
return { lockedClients: this.recent.size, trackedClients: this.recent.size, lockoutsTotal: this.total, shared: true };
|
|
125
|
+
}
|
|
126
|
+
close() {
|
|
127
|
+
this.recent.clear();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/state/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable shared state for multi-instance deployments.
|
|
3
|
+
*
|
|
4
|
+
* Rate-limit windows, brute-force lockouts and MCP session metadata go
|
|
5
|
+
* through a `StateStore`. The default `MemoryStateStore` keeps everything in
|
|
6
|
+
* the process (single instance, the pre-1.4 behaviour); `RedisStateStore`
|
|
7
|
+
* (see `./redis.ts`) shares it between gateway replicas behind a load
|
|
8
|
+
* balancer, so limits hold cluster-wide and an MCP session opened on one
|
|
9
|
+
* replica is accepted by the others.
|
|
10
|
+
*
|
|
11
|
+
* @module state/store
|
|
12
|
+
*/
|
|
13
|
+
export interface StateStore {
|
|
14
|
+
/** `memory`, `redis`, or a custom name. */
|
|
15
|
+
readonly kind: string;
|
|
16
|
+
/**
|
|
17
|
+
* Atomically add `by` (default 1) to the integer at `key` and return the new
|
|
18
|
+
* value. A missing key starts at 0 and expires after `ttlMs`; an existing
|
|
19
|
+
* key keeps its expiry.
|
|
20
|
+
*/
|
|
21
|
+
incr(key: string, ttlMs: number, by?: number): Promise<number>;
|
|
22
|
+
get(key: string): Promise<string | undefined>;
|
|
23
|
+
/** Set `key` (optionally expiring after `ttlMs`). */
|
|
24
|
+
set(key: string, value: string, ttlMs?: number): Promise<void>;
|
|
25
|
+
del(key: string): Promise<void>;
|
|
26
|
+
/** Remaining time to live in ms; -1 = no expiry, -2 = missing. */
|
|
27
|
+
pttl(key: string): Promise<number>;
|
|
28
|
+
/** Health check (resolves when reachable). */
|
|
29
|
+
ping(): Promise<void>;
|
|
30
|
+
close(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
/** In-process store (default). */
|
|
33
|
+
export declare class MemoryStateStore implements StateStore {
|
|
34
|
+
private readonly now;
|
|
35
|
+
readonly kind = "memory";
|
|
36
|
+
private readonly data;
|
|
37
|
+
private readonly timer;
|
|
38
|
+
constructor(now?: () => number);
|
|
39
|
+
private live;
|
|
40
|
+
incr(key: string, ttlMs: number, by?: number): Promise<number>;
|
|
41
|
+
/** Synchronous variant (used by the in-memory fast paths). */
|
|
42
|
+
incrSync(key: string, ttlMs: number, by?: number): number;
|
|
43
|
+
get(key: string): Promise<string | undefined>;
|
|
44
|
+
set(key: string, value: string, ttlMs?: number): Promise<void>;
|
|
45
|
+
del(key: string): Promise<void>;
|
|
46
|
+
pttl(key: string): Promise<number>;
|
|
47
|
+
ping(): Promise<void>;
|
|
48
|
+
/** Number of live keys (tests / diagnostics). */
|
|
49
|
+
size(): number;
|
|
50
|
+
private sweep;
|
|
51
|
+
close(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
/** Prefixes every key (namespacing several gateways in one Redis). */
|
|
54
|
+
export declare class PrefixedStateStore implements StateStore {
|
|
55
|
+
private readonly inner;
|
|
56
|
+
private readonly prefix;
|
|
57
|
+
constructor(inner: StateStore, prefix: string);
|
|
58
|
+
get kind(): string;
|
|
59
|
+
incr(key: string, ttlMs: number, by?: number): Promise<number>;
|
|
60
|
+
get(key: string): Promise<string | undefined>;
|
|
61
|
+
set(key: string, value: string, ttlMs?: number): Promise<void>;
|
|
62
|
+
del(key: string): Promise<void>;
|
|
63
|
+
pttl(key: string): Promise<number>;
|
|
64
|
+
ping(): Promise<void>;
|
|
65
|
+
close(): Promise<void>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,qDAAqD;IACrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,kEAAkE;IAClE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,8CAA8C;IAC9C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAOD,kCAAkC;AAClC,qBAAa,gBAAiB,YAAW,UAAU;IAKrC,OAAO,CAAC,QAAQ,CAAC,GAAG;IAJhC,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;gBAEV,GAAG,GAAE,MAAM,MAAiB;IAKzD,OAAO,CAAC,IAAI;IAUN,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IAI/D,8DAA8D;IAC9D,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAI,GAAG,MAAM;IAW9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B,iDAAiD;IACjD,IAAI,IAAI,MAAM;IAKd,OAAO,CAAC,KAAK;IAKP,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAI7B;AAED,sEAAsE;AACtE,qBAAa,kBAAmB,YAAW,UAAU;IAEjD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM;IAEjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM;IAG5C,GAAG,CAAC,GAAG,EAAE,MAAM;IAGf,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAG9C,GAAG,CAAC,GAAG,EAAE,MAAM;IAGf,IAAI,CAAC,GAAG,EAAE,MAAM;IAGhB,IAAI;IAGJ,KAAK;CAGN"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pluggable shared state for multi-instance deployments.
|
|
3
|
+
*
|
|
4
|
+
* Rate-limit windows, brute-force lockouts and MCP session metadata go
|
|
5
|
+
* through a `StateStore`. The default `MemoryStateStore` keeps everything in
|
|
6
|
+
* the process (single instance, the pre-1.4 behaviour); `RedisStateStore`
|
|
7
|
+
* (see `./redis.ts`) shares it between gateway replicas behind a load
|
|
8
|
+
* balancer, so limits hold cluster-wide and an MCP session opened on one
|
|
9
|
+
* replica is accepted by the others.
|
|
10
|
+
*
|
|
11
|
+
* @module state/store
|
|
12
|
+
*/
|
|
13
|
+
/** In-process store (default). */
|
|
14
|
+
export class MemoryStateStore {
|
|
15
|
+
now;
|
|
16
|
+
kind = 'memory';
|
|
17
|
+
data = new Map();
|
|
18
|
+
timer;
|
|
19
|
+
constructor(now = Date.now) {
|
|
20
|
+
this.now = now;
|
|
21
|
+
this.timer = setInterval(() => this.sweep(), 30_000);
|
|
22
|
+
this.timer.unref();
|
|
23
|
+
}
|
|
24
|
+
live(key) {
|
|
25
|
+
const e = this.data.get(key);
|
|
26
|
+
if (!e)
|
|
27
|
+
return undefined;
|
|
28
|
+
if (e.expiresAt !== undefined && e.expiresAt <= this.now()) {
|
|
29
|
+
this.data.delete(key);
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
return e;
|
|
33
|
+
}
|
|
34
|
+
async incr(key, ttlMs, by = 1) {
|
|
35
|
+
return this.incrSync(key, ttlMs, by);
|
|
36
|
+
}
|
|
37
|
+
/** Synchronous variant (used by the in-memory fast paths). */
|
|
38
|
+
incrSync(key, ttlMs, by = 1) {
|
|
39
|
+
const e = this.live(key);
|
|
40
|
+
if (!e) {
|
|
41
|
+
this.data.set(key, { value: String(by), expiresAt: ttlMs > 0 ? this.now() + ttlMs : undefined });
|
|
42
|
+
return by;
|
|
43
|
+
}
|
|
44
|
+
const n = (Number.parseInt(e.value, 10) || 0) + by;
|
|
45
|
+
e.value = String(n);
|
|
46
|
+
return n;
|
|
47
|
+
}
|
|
48
|
+
async get(key) {
|
|
49
|
+
return this.live(key)?.value;
|
|
50
|
+
}
|
|
51
|
+
async set(key, value, ttlMs) {
|
|
52
|
+
this.data.set(key, { value, expiresAt: ttlMs && ttlMs > 0 ? this.now() + ttlMs : undefined });
|
|
53
|
+
}
|
|
54
|
+
async del(key) {
|
|
55
|
+
this.data.delete(key);
|
|
56
|
+
}
|
|
57
|
+
async pttl(key) {
|
|
58
|
+
const e = this.live(key);
|
|
59
|
+
if (!e)
|
|
60
|
+
return -2;
|
|
61
|
+
return e.expiresAt === undefined ? -1 : Math.max(0, e.expiresAt - this.now());
|
|
62
|
+
}
|
|
63
|
+
async ping() { }
|
|
64
|
+
/** Number of live keys (tests / diagnostics). */
|
|
65
|
+
size() {
|
|
66
|
+
this.sweep();
|
|
67
|
+
return this.data.size;
|
|
68
|
+
}
|
|
69
|
+
sweep() {
|
|
70
|
+
const t = this.now();
|
|
71
|
+
for (const [k, e] of this.data)
|
|
72
|
+
if (e.expiresAt !== undefined && e.expiresAt <= t)
|
|
73
|
+
this.data.delete(k);
|
|
74
|
+
}
|
|
75
|
+
async close() {
|
|
76
|
+
clearInterval(this.timer);
|
|
77
|
+
this.data.clear();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** Prefixes every key (namespacing several gateways in one Redis). */
|
|
81
|
+
export class PrefixedStateStore {
|
|
82
|
+
inner;
|
|
83
|
+
prefix;
|
|
84
|
+
constructor(inner, prefix) {
|
|
85
|
+
this.inner = inner;
|
|
86
|
+
this.prefix = prefix;
|
|
87
|
+
}
|
|
88
|
+
get kind() {
|
|
89
|
+
return this.inner.kind;
|
|
90
|
+
}
|
|
91
|
+
incr(key, ttlMs, by) {
|
|
92
|
+
return this.inner.incr(this.prefix + key, ttlMs, by);
|
|
93
|
+
}
|
|
94
|
+
get(key) {
|
|
95
|
+
return this.inner.get(this.prefix + key);
|
|
96
|
+
}
|
|
97
|
+
set(key, value, ttlMs) {
|
|
98
|
+
return this.inner.set(this.prefix + key, value, ttlMs);
|
|
99
|
+
}
|
|
100
|
+
del(key) {
|
|
101
|
+
return this.inner.del(this.prefix + key);
|
|
102
|
+
}
|
|
103
|
+
pttl(key) {
|
|
104
|
+
return this.inner.pttl(this.prefix + key);
|
|
105
|
+
}
|
|
106
|
+
ping() {
|
|
107
|
+
return this.inner.ping();
|
|
108
|
+
}
|
|
109
|
+
close() {
|
|
110
|
+
return this.inner.close();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/state/store.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/types.d.ts
CHANGED
|
@@ -116,6 +116,23 @@ export interface GatewayConfig {
|
|
|
116
116
|
audit?: AuditConfig;
|
|
117
117
|
/** Hardening options (headers, body limits, IP allowlist, DNS-rebinding protection, lockout, redaction). */
|
|
118
118
|
security?: SecurityConfig;
|
|
119
|
+
/** Shared state for multi-instance deployments (rate limits, lockouts, MCP sessions). */
|
|
120
|
+
state?: StateConfig;
|
|
121
|
+
}
|
|
122
|
+
/** `state` — where rate-limit windows, lockouts and MCP session metadata live. */
|
|
123
|
+
export interface StateConfig {
|
|
124
|
+
/** `memory` (default, single instance) or `redis` (shared between instances). */
|
|
125
|
+
store?: 'memory' | 'redis';
|
|
126
|
+
redis?: {
|
|
127
|
+
/** `redis://[user:password@]host:port/db` or `rediss://…` (TLS). */
|
|
128
|
+
url: string;
|
|
129
|
+
/** Prefix for every key (default `mcp-gateway:`). */
|
|
130
|
+
keyPrefix?: string;
|
|
131
|
+
connectTimeoutMs?: number;
|
|
132
|
+
commandTimeoutMs?: number;
|
|
133
|
+
};
|
|
134
|
+
/** When the store is unreachable: `open` (default) lets requests through, `closed` rejects them. */
|
|
135
|
+
failureMode?: 'open' | 'closed';
|
|
119
136
|
}
|
|
120
137
|
export interface AuthLockoutConfig {
|
|
121
138
|
/** Failed authentications from one IP within `windowSeconds` that trigger a lockout (default 10). */
|
|
@@ -185,6 +202,8 @@ export interface McpEndpointConfig {
|
|
|
185
202
|
allowedOrigins?: string[];
|
|
186
203
|
/** Optional `instructions` returned from `initialize`. */
|
|
187
204
|
instructions?: string;
|
|
205
|
+
/** Events kept per session for `Last-Event-ID` resumability (default 256, 0 = off). */
|
|
206
|
+
eventBufferSize?: number;
|
|
188
207
|
}
|
|
189
208
|
export type AuthStrategy = 'none' | 'api-key' | 'jwt' | 'oauth2';
|
|
190
209
|
export interface AuthConfig {
|
|
@@ -209,11 +228,43 @@ export interface AuthConfig {
|
|
|
209
228
|
/** Require auth for GET /api/v1/metrics, incl. Prometheus scrapes (default false). */
|
|
210
229
|
metrics?: boolean;
|
|
211
230
|
};
|
|
212
|
-
/** For oauth2:
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
231
|
+
/** For oauth2: OAuth 2.1 resource-server settings (MCP authorization spec). */
|
|
232
|
+
oauth?: OAuthConfig;
|
|
233
|
+
}
|
|
234
|
+
/** `auth.oauth` — the gateway as an OAuth 2.1 protected resource (RFC 9728 / RFC 8707 / RFC 7662). */
|
|
235
|
+
export interface OAuthConfig {
|
|
236
|
+
/** Authorization server issuer URLs advertised in the protected-resource metadata. */
|
|
237
|
+
authorizationServers: string[];
|
|
238
|
+
/** Canonical resource URI (default: `<scheme>://<host><mcp.path>` of the request). */
|
|
239
|
+
resource?: string;
|
|
240
|
+
/** Accepted `iss` values (default: `authorizationServers`). */
|
|
241
|
+
issuer?: string | string[];
|
|
242
|
+
/** Accepted `aud` values (default: the resource URI). */
|
|
243
|
+
audience?: string | string[];
|
|
244
|
+
/** JWKS for JWT access tokens (default: `jwks_uri` discovered from the issuer metadata). */
|
|
245
|
+
jwksUrl?: string;
|
|
246
|
+
jwksCacheSeconds?: number;
|
|
247
|
+
/** Accepted JWT algorithms (asymmetric only; default RS/PS/ES/EdDSA). */
|
|
248
|
+
algorithms?: string[];
|
|
249
|
+
clockToleranceSeconds?: number;
|
|
250
|
+
/** RFC 7662 token introspection for opaque tokens. */
|
|
251
|
+
introspection?: {
|
|
252
|
+
url: string;
|
|
253
|
+
clientId?: string;
|
|
254
|
+
clientSecret?: string;
|
|
255
|
+
/** Cache active results (seconds, default 60, capped at token expiry). */
|
|
256
|
+
cacheSeconds?: number;
|
|
257
|
+
/** Reject introspected tokens without `aud` (default true). */
|
|
258
|
+
requireAudience?: boolean;
|
|
259
|
+
/** Introspect JWTs too instead of verifying them locally. */
|
|
260
|
+
preferForJwt?: boolean;
|
|
216
261
|
};
|
|
262
|
+
/** `scopes_supported` in the metadata. */
|
|
263
|
+
scopesSupported?: string[];
|
|
264
|
+
/** Scopes every token must carry (else 403 insufficient_scope). */
|
|
265
|
+
requiredScopes?: string[];
|
|
266
|
+
resourceName?: string;
|
|
267
|
+
documentation?: string;
|
|
217
268
|
}
|
|
218
269
|
export interface JwtConfig {
|
|
219
270
|
/** Required `iss` claim (string or list). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/utils/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED