lazy-mcp 2.6.0 → 2.6.6
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 +43 -618
- package/dist/cli.js +7 -8
- package/dist/cli.js.map +1 -1
- package/dist/multi-proxy.js +1 -1
- package/dist/multi-proxy.js.map +1 -1
- package/dist/oauth-manager.d.ts +44 -4
- package/dist/oauth-manager.d.ts.map +1 -1
- package/dist/oauth-manager.js +125 -39
- package/dist/oauth-manager.js.map +1 -1
- package/dist/paths.d.ts +26 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +76 -0
- package/dist/paths.js.map +1 -0
- package/dist/pid-lock.d.ts +3 -2
- package/dist/pid-lock.d.ts.map +1 -1
- package/dist/pid-lock.js +8 -7
- package/dist/pid-lock.js.map +1 -1
- package/dist/server-manager.d.ts +7 -0
- package/dist/server-manager.d.ts.map +1 -1
- package/dist/server-manager.js +17 -2
- package/dist/server-manager.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -34,16 +34,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
};
|
|
35
35
|
})();
|
|
36
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
-
const os = __importStar(require("os"));
|
|
38
37
|
const fs = __importStar(require("fs"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
38
|
const server_1 = require("./server");
|
|
41
39
|
const config_1 = require("./config");
|
|
42
40
|
const server_manager_1 = require("./server-manager");
|
|
43
41
|
const version_1 = require("./version");
|
|
44
42
|
const oauth_manager_1 = require("./oauth-manager");
|
|
45
43
|
const logger_1 = require("./logger");
|
|
46
|
-
const
|
|
44
|
+
const paths_1 = require("./paths");
|
|
47
45
|
/**
|
|
48
46
|
* Known CLI flags and their value types.
|
|
49
47
|
* Flags not in this set are rejected as unexpected positional args.
|
|
@@ -234,11 +232,12 @@ async function main() {
|
|
|
234
232
|
process.exit(0);
|
|
235
233
|
}
|
|
236
234
|
const { flags, unexpected } = parseArgs(args);
|
|
235
|
+
const defaultConfigPath = (0, paths_1.getDefaultConfigPath)();
|
|
237
236
|
if (unexpected.length > 0) {
|
|
238
237
|
console.error(`Error: Unexpected arguments: ${unexpected.join(' ')}`);
|
|
239
238
|
console.error('');
|
|
240
239
|
console.error('Single-server mode has been removed. Use a config file instead:');
|
|
241
|
-
console.error(` 1. Create ${
|
|
240
|
+
console.error(` 1. Create ${defaultConfigPath} with your server(s)`);
|
|
242
241
|
console.error(' 2. Run: lazy-mcp');
|
|
243
242
|
console.error('');
|
|
244
243
|
console.error('See https://gitlab.com/gitlab-org/ai/lazy-mcp#usage');
|
|
@@ -270,15 +269,15 @@ async function main() {
|
|
|
270
269
|
else if (process.env.LAZY_MCP_CONFIG) {
|
|
271
270
|
configPath = process.env.LAZY_MCP_CONFIG;
|
|
272
271
|
}
|
|
273
|
-
else if (fs.existsSync(
|
|
274
|
-
configPath =
|
|
272
|
+
else if (fs.existsSync(defaultConfigPath)) {
|
|
273
|
+
configPath = defaultConfigPath;
|
|
275
274
|
}
|
|
276
275
|
if (!configPath) {
|
|
277
276
|
console.error('Error: No config file found.');
|
|
278
|
-
console.error(`Default location: ${
|
|
277
|
+
console.error(`Default location: ${defaultConfigPath}`);
|
|
279
278
|
console.error('');
|
|
280
279
|
console.error('Options:');
|
|
281
|
-
console.error(` 1. Create ${
|
|
280
|
+
console.error(` 1. Create ${defaultConfigPath}`);
|
|
282
281
|
console.error(' 2. lazy-mcp --config <path-to-config>');
|
|
283
282
|
console.error(' 3. LAZY_MCP_CONFIG=<path> lazy-mcp');
|
|
284
283
|
process.exit(1);
|
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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"}
|
package/dist/multi-proxy.js
CHANGED
|
@@ -69,7 +69,7 @@ class MultiServerProxyImpl {
|
|
|
69
69
|
message: decision.message,
|
|
70
70
|
});
|
|
71
71
|
throw new types_1.MCPException(types_1.MCPErrorCode.POLICY_BLOCKED, `Tool '${server}:${commandName}' is blocked by lazy-mcp policy`, server, decision.message ?? 'No additional details.', `To allow this, remove the matching deny rule from your lazy-mcp config ` +
|
|
72
|
-
`(
|
|
72
|
+
`(${this.serverManager.getConfigFile()}) and reload with: kill -HUP ${process.pid}`);
|
|
73
73
|
}
|
|
74
74
|
// decision.action === 'allow' — original path.
|
|
75
75
|
try {
|
package/dist/multi-proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-proxy.js","sourceRoot":"","sources":["../src/multi-proxy.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"multi-proxy.js","sourceRoot":"","sources":["../src/multi-proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/oauth-manager.d.ts
CHANGED
|
@@ -3,6 +3,16 @@ import { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
|
3
3
|
import { OAuthClientInformationFull, OAuthClientMetadata, OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
4
4
|
import { OAuthConfig } from './types';
|
|
5
5
|
declare const DEFAULT_CALLBACK_ADDRESS = "127.0.0.1:0";
|
|
6
|
+
/**
|
|
7
|
+
* Computes a stable storage key from the server identity (name + URL).
|
|
8
|
+
*
|
|
9
|
+
* Used to key OAuth tokens, client info, and code verifiers so that two MCP
|
|
10
|
+
* servers configured with the same name but different URLs don't collide.
|
|
11
|
+
* The key is the first 32 hex characters of sha256(name + '\0' + url) —
|
|
12
|
+
* short enough to keep storage files readable, long enough (128 bits) to
|
|
13
|
+
* make birthday-bound collisions astronomically unlikely.
|
|
14
|
+
*/
|
|
15
|
+
export declare function computeStorageKey(serverName: string, serverUrl: string): string;
|
|
6
16
|
/**
|
|
7
17
|
* Implements OAuthClientProvider from the MCP SDK.
|
|
8
18
|
*
|
|
@@ -15,15 +25,31 @@ declare const DEFAULT_CALLBACK_ADDRESS = "127.0.0.1:0";
|
|
|
15
25
|
* SDK's `auth()` / lower-level functions. OAuth server endpoints are discovered
|
|
16
26
|
* automatically via RFC 8414 (/.well-known/oauth-authorization-server).
|
|
17
27
|
*
|
|
18
|
-
* Storage layout in ~/.config/lazy-mcp
|
|
19
|
-
* tokens.json
|
|
20
|
-
* client-info.json
|
|
21
|
-
*
|
|
28
|
+
* Storage layout in $XDG_CONFIG_HOME/lazy-mcp/ (defaults to ~/.config/lazy-mcp/):
|
|
29
|
+
* tokens.json — { [storageKey]: OAuthTokens }
|
|
30
|
+
* client-info.json — { [storageKey]: OAuthClientInformationFull }
|
|
31
|
+
* code-verifier.json — { [storageKey]: string } (PKCE verifier for the
|
|
32
|
+
* current in-flight flow; cleared after callback)
|
|
33
|
+
*
|
|
34
|
+
* The `storageKey` is a stable hash of `serverName + serverUrl` so that two
|
|
35
|
+
* MCP servers configured with the same name but different URLs (e.g. two
|
|
36
|
+
* projects each defining a `"gitlab"` server pointing at different instances)
|
|
37
|
+
* get distinct token slots and don't clobber each other.
|
|
38
|
+
*
|
|
39
|
+
* For backward compatibility with installations that stored credentials under
|
|
40
|
+
* the plain server name, reads fall back to the legacy key and migrate the
|
|
41
|
+
* entry to the hashed key on the next write.
|
|
22
42
|
*/
|
|
23
43
|
export declare class OAuthManager implements OAuthClientProvider {
|
|
24
44
|
private readonly serverName;
|
|
25
45
|
private readonly serverUrl;
|
|
26
46
|
private readonly config;
|
|
47
|
+
/**
|
|
48
|
+
* Hashed key used in storage files. Derived from `serverName + serverUrl`
|
|
49
|
+
* so that servers sharing a name but pointing at different URLs get
|
|
50
|
+
* distinct token slots.
|
|
51
|
+
*/
|
|
52
|
+
private readonly storageKey;
|
|
27
53
|
/** In-memory cache of the PKCE code verifier for the current in-flight flow. */
|
|
28
54
|
private _codeVerifier;
|
|
29
55
|
/** The authorization URL captured inside redirectToAuthorization(). */
|
|
@@ -42,6 +68,20 @@ export declare class OAuthManager implements OAuthClientProvider {
|
|
|
42
68
|
*/
|
|
43
69
|
private _startingFlow;
|
|
44
70
|
constructor(serverName: string, serverUrl: string, config: OAuthConfig);
|
|
71
|
+
/**
|
|
72
|
+
* Reads an entry from a keyed JSON store. Prefers the hashed `storageKey`.
|
|
73
|
+
* Falls back to the legacy plain-name key for backward compatibility with
|
|
74
|
+
* tokens written before the hashed-key migration. Callers that subsequently
|
|
75
|
+
* write the entry use the hashed key, so the next save effectively migrates
|
|
76
|
+
* the entry without the user having to re-authenticate.
|
|
77
|
+
*/
|
|
78
|
+
private readKeyed;
|
|
79
|
+
/**
|
|
80
|
+
* Deletes an entry from a keyed JSON store. Removes both the hashed key and
|
|
81
|
+
* the legacy plain-name key so stale legacy entries don't linger after an
|
|
82
|
+
* invalidation.
|
|
83
|
+
*/
|
|
84
|
+
private deleteKeyed;
|
|
45
85
|
/** Parsed host and port from callbackAddress (or legacy callbackPort fallback). */
|
|
46
86
|
private get callbackAddressParts();
|
|
47
87
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth-manager.d.ts","sourceRoot":"","sources":["../src/oauth-manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth-manager.d.ts","sourceRoot":"","sources":["../src/oauth-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/oauth-manager.js
CHANGED
|
@@ -34,15 +34,17 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.DEFAULT_CALLBACK_ADDRESS = exports.OAuthManager = void 0;
|
|
37
|
+
exports.computeStorageKey = computeStorageKey;
|
|
37
38
|
exports.releaseCallbackLock = releaseCallbackLock;
|
|
39
|
+
const crypto = __importStar(require("crypto"));
|
|
38
40
|
const fs = __importStar(require("fs"));
|
|
39
41
|
const http = __importStar(require("http"));
|
|
40
|
-
const os = __importStar(require("os"));
|
|
41
42
|
const path = __importStar(require("path"));
|
|
42
43
|
const url = __importStar(require("url"));
|
|
43
44
|
const auth_js_1 = require("@modelcontextprotocol/sdk/client/auth.js");
|
|
44
45
|
const types_1 = require("./types");
|
|
45
46
|
const pid_lock_1 = require("./pid-lock");
|
|
47
|
+
const paths_1 = require("./paths");
|
|
46
48
|
// ─── Constants ────────────────────────────────────────────────────────────────
|
|
47
49
|
// Port 0 tells the OS to pick an ephemeral port. This prevents port conflicts
|
|
48
50
|
// between multiple lazy-mcp instances (e.g. from previous crashed sessions).
|
|
@@ -50,11 +52,13 @@ const pid_lock_1 = require("./pid-lock");
|
|
|
50
52
|
// that read it — the host is still 127.0.0.1 but the port is now 0.
|
|
51
53
|
const DEFAULT_CALLBACK_ADDRESS = '127.0.0.1:0';
|
|
52
54
|
exports.DEFAULT_CALLBACK_ADDRESS = DEFAULT_CALLBACK_ADDRESS;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const
|
|
57
|
-
const
|
|
55
|
+
// Storage paths are resolved lazily so that `XDG_CONFIG_HOME` (and the home
|
|
56
|
+
// directory) can be overridden at runtime — useful for tests and for users
|
|
57
|
+
// who want per-project token isolation via direnv/mise.
|
|
58
|
+
const tokensFile = () => path.join((0, paths_1.getConfigDir)(), 'tokens.json');
|
|
59
|
+
const clientInfoFile = () => path.join((0, paths_1.getConfigDir)(), 'client-info.json');
|
|
60
|
+
const codeVerifierFile = () => path.join((0, paths_1.getConfigDir)(), 'code-verifier.json');
|
|
61
|
+
const pendingFlowFile = () => path.join((0, paths_1.getConfigDir)(), 'pending-oauth-flows.json');
|
|
58
62
|
class OAuthCallbackServer {
|
|
59
63
|
constructor() {
|
|
60
64
|
this.server = null;
|
|
@@ -152,7 +156,7 @@ class OAuthCallbackServer {
|
|
|
152
156
|
const state = query.state ?? '';
|
|
153
157
|
const handler = this.handlers.get(state);
|
|
154
158
|
if (!handler) {
|
|
155
|
-
const pendingFlows = readJsonFile(
|
|
159
|
+
const pendingFlows = readJsonFile(pendingFlowFile()) ?? {};
|
|
156
160
|
const pendingFlow = pendingFlows[state];
|
|
157
161
|
if (!pendingFlow) {
|
|
158
162
|
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
@@ -244,6 +248,23 @@ function writeJsonFile(filePath, data) {
|
|
|
244
248
|
}
|
|
245
249
|
fs.writeFileSync(filePath, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
246
250
|
}
|
|
251
|
+
// ─── Storage key helper ───────────────────────────────────────────────────────
|
|
252
|
+
/**
|
|
253
|
+
* Computes a stable storage key from the server identity (name + URL).
|
|
254
|
+
*
|
|
255
|
+
* Used to key OAuth tokens, client info, and code verifiers so that two MCP
|
|
256
|
+
* servers configured with the same name but different URLs don't collide.
|
|
257
|
+
* The key is the first 32 hex characters of sha256(name + '\0' + url) —
|
|
258
|
+
* short enough to keep storage files readable, long enough (128 bits) to
|
|
259
|
+
* make birthday-bound collisions astronomically unlikely.
|
|
260
|
+
*/
|
|
261
|
+
function computeStorageKey(serverName, serverUrl) {
|
|
262
|
+
return crypto
|
|
263
|
+
.createHash('sha256')
|
|
264
|
+
.update(`${serverName}\0${serverUrl}`)
|
|
265
|
+
.digest('hex')
|
|
266
|
+
.slice(0, 32);
|
|
267
|
+
}
|
|
247
268
|
// ─── OAuthManager ─────────────────────────────────────────────────────────────
|
|
248
269
|
/**
|
|
249
270
|
* Implements OAuthClientProvider from the MCP SDK.
|
|
@@ -257,10 +278,20 @@ function writeJsonFile(filePath, data) {
|
|
|
257
278
|
* SDK's `auth()` / lower-level functions. OAuth server endpoints are discovered
|
|
258
279
|
* automatically via RFC 8414 (/.well-known/oauth-authorization-server).
|
|
259
280
|
*
|
|
260
|
-
* Storage layout in ~/.config/lazy-mcp
|
|
261
|
-
* tokens.json
|
|
262
|
-
* client-info.json
|
|
263
|
-
*
|
|
281
|
+
* Storage layout in $XDG_CONFIG_HOME/lazy-mcp/ (defaults to ~/.config/lazy-mcp/):
|
|
282
|
+
* tokens.json — { [storageKey]: OAuthTokens }
|
|
283
|
+
* client-info.json — { [storageKey]: OAuthClientInformationFull }
|
|
284
|
+
* code-verifier.json — { [storageKey]: string } (PKCE verifier for the
|
|
285
|
+
* current in-flight flow; cleared after callback)
|
|
286
|
+
*
|
|
287
|
+
* The `storageKey` is a stable hash of `serverName + serverUrl` so that two
|
|
288
|
+
* MCP servers configured with the same name but different URLs (e.g. two
|
|
289
|
+
* projects each defining a `"gitlab"` server pointing at different instances)
|
|
290
|
+
* get distinct token slots and don't clobber each other.
|
|
291
|
+
*
|
|
292
|
+
* For backward compatibility with installations that stored credentials under
|
|
293
|
+
* the plain server name, reads fall back to the legacy key and migrate the
|
|
294
|
+
* entry to the hashed key on the next write.
|
|
264
295
|
*/
|
|
265
296
|
class OAuthManager {
|
|
266
297
|
constructor(serverName, serverUrl, config) {
|
|
@@ -284,6 +315,29 @@ class OAuthManager {
|
|
|
284
315
|
this.serverName = serverName;
|
|
285
316
|
this.serverUrl = serverUrl;
|
|
286
317
|
this.config = config;
|
|
318
|
+
this.storageKey = computeStorageKey(serverName, serverUrl);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Reads an entry from a keyed JSON store. Prefers the hashed `storageKey`.
|
|
322
|
+
* Falls back to the legacy plain-name key for backward compatibility with
|
|
323
|
+
* tokens written before the hashed-key migration. Callers that subsequently
|
|
324
|
+
* write the entry use the hashed key, so the next save effectively migrates
|
|
325
|
+
* the entry without the user having to re-authenticate.
|
|
326
|
+
*/
|
|
327
|
+
readKeyed(store) {
|
|
328
|
+
if (store[this.storageKey] !== undefined) {
|
|
329
|
+
return store[this.storageKey];
|
|
330
|
+
}
|
|
331
|
+
return store[this.serverName];
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Deletes an entry from a keyed JSON store. Removes both the hashed key and
|
|
335
|
+
* the legacy plain-name key so stale legacy entries don't linger after an
|
|
336
|
+
* invalidation.
|
|
337
|
+
*/
|
|
338
|
+
deleteKeyed(store) {
|
|
339
|
+
delete store[this.storageKey];
|
|
340
|
+
delete store[this.serverName];
|
|
287
341
|
}
|
|
288
342
|
// ─── Public API ─────────────────────────────────────────────────────────────
|
|
289
343
|
/** Parsed host and port from callbackAddress (or legacy callbackPort fallback). */
|
|
@@ -353,6 +407,7 @@ class OAuthManager {
|
|
|
353
407
|
const done = new Promise((resolve, reject) => {
|
|
354
408
|
this._waiters.push({ resolve, reject });
|
|
355
409
|
});
|
|
410
|
+
done.catch(() => undefined);
|
|
356
411
|
return { authUrl: this._pendingAuthUrl.toString(), done };
|
|
357
412
|
}
|
|
358
413
|
// Registration with the callback server happens inside redirectToAuthorization(),
|
|
@@ -360,6 +415,7 @@ class OAuthManager {
|
|
|
360
415
|
const done = new Promise((resolve, reject) => {
|
|
361
416
|
this._waiters.push({ resolve, reject });
|
|
362
417
|
});
|
|
418
|
+
done.catch(() => undefined);
|
|
363
419
|
// Run the SDK auth flow asynchronously — it will call redirectToAuthorization()
|
|
364
420
|
// which registers the callback handler, sets _pendingAuthUrl, and throws AUTH_REQUIRED.
|
|
365
421
|
this._runAuthFlow().catch((err) => {
|
|
@@ -432,6 +488,7 @@ class OAuthManager {
|
|
|
432
488
|
const done = new Promise((resolve, reject) => {
|
|
433
489
|
this._waiters.push({ resolve, reject });
|
|
434
490
|
});
|
|
491
|
+
done.catch(() => undefined);
|
|
435
492
|
// If a flow is already starting or running, reuse it
|
|
436
493
|
if (this._startingFlow) {
|
|
437
494
|
const authUrl = await this._startingFlow;
|
|
@@ -463,15 +520,16 @@ class OAuthManager {
|
|
|
463
520
|
/** Cancel any in-flight flow and shut down the callback server. */
|
|
464
521
|
cancelFlow() {
|
|
465
522
|
this._startingFlow = null;
|
|
523
|
+
this.invalidateCredentials('verifier');
|
|
466
524
|
this._rejectAll(new Error('OAuth flow cancelled'));
|
|
467
525
|
this._closeCallbackServer();
|
|
468
526
|
this._pendingAuthUrl = null;
|
|
469
527
|
}
|
|
470
528
|
/** Delete stored tokens for this server (e.g. after a confirmed 401). */
|
|
471
529
|
deleteTokens() {
|
|
472
|
-
const store = readJsonFile(
|
|
473
|
-
|
|
474
|
-
writeJsonFile(
|
|
530
|
+
const store = readJsonFile(tokensFile()) ?? {};
|
|
531
|
+
this.deleteKeyed(store);
|
|
532
|
+
writeJsonFile(tokensFile(), store);
|
|
475
533
|
}
|
|
476
534
|
// ─── OAuthClientProvider implementation ─────────────────────────────────────
|
|
477
535
|
get redirectUrl() {
|
|
@@ -499,8 +557,8 @@ class OAuthManager {
|
|
|
499
557
|
};
|
|
500
558
|
}
|
|
501
559
|
clientInformation() {
|
|
502
|
-
const store = readJsonFile(
|
|
503
|
-
const info =
|
|
560
|
+
const store = readJsonFile(clientInfoFile()) ?? {};
|
|
561
|
+
const info = this.readKeyed(store);
|
|
504
562
|
// If a clientId is explicitly configured, always use that (skip dynamic registration)
|
|
505
563
|
if (!info && this.config.clientId) {
|
|
506
564
|
return {
|
|
@@ -512,17 +570,23 @@ class OAuthManager {
|
|
|
512
570
|
return info;
|
|
513
571
|
}
|
|
514
572
|
saveClientInformation(info) {
|
|
515
|
-
const store = readJsonFile(
|
|
516
|
-
|
|
517
|
-
|
|
573
|
+
const store = readJsonFile(clientInfoFile()) ?? {};
|
|
574
|
+
// Migrate any legacy plain-name entry by removing it before writing the
|
|
575
|
+
// hashed key. This keeps the file clean and avoids two parallel entries.
|
|
576
|
+
delete store[this.serverName];
|
|
577
|
+
store[this.storageKey] = info;
|
|
578
|
+
writeJsonFile(clientInfoFile(), store);
|
|
518
579
|
}
|
|
519
580
|
tokens() {
|
|
520
581
|
return this.loadTokens() ?? undefined;
|
|
521
582
|
}
|
|
522
583
|
saveTokens(tokens) {
|
|
523
|
-
const store = readJsonFile(
|
|
524
|
-
|
|
525
|
-
|
|
584
|
+
const store = readJsonFile(tokensFile()) ?? {};
|
|
585
|
+
// Migrate any legacy plain-name entry by removing it before writing the
|
|
586
|
+
// hashed key. This keeps the file clean and avoids two parallel entries.
|
|
587
|
+
delete store[this.serverName];
|
|
588
|
+
store[this.storageKey] = tokens;
|
|
589
|
+
writeJsonFile(tokensFile(), store);
|
|
526
590
|
}
|
|
527
591
|
/**
|
|
528
592
|
* Called by the SDK instead of opening a browser.
|
|
@@ -530,18 +594,31 @@ class OAuthManager {
|
|
|
530
594
|
* the URL for dispatch), captures the URL, and throws AUTH_REQUIRED.
|
|
531
595
|
*/
|
|
532
596
|
redirectToAuthorization(authorizationUrl) {
|
|
597
|
+
// Some authorization servers (e.g. incident.io) require the `state`
|
|
598
|
+
// parameter and reject the request with a 422 if it's missing. The MCP SDK
|
|
599
|
+
// only includes `state` when it's explicitly provided, so inject a random
|
|
600
|
+
// one here when absent. Using a real value (instead of the previous empty
|
|
601
|
+
// string) also makes the callback dispatch keyed correctly per-flow.
|
|
602
|
+
//
|
|
603
|
+
// CSRF protection: this 128-bit random `state` doubles as the callback
|
|
604
|
+
// dispatch key (see `handlers.get(query.state)` below). A forged or unknown
|
|
605
|
+
// `state` on the callback matches no pending handler and is rejected, so
|
|
606
|
+
// dispatch-by-random-state *is* the CSRF guarantee for this flow.
|
|
607
|
+
if (!authorizationUrl.searchParams.get('state')) {
|
|
608
|
+
authorizationUrl.searchParams.set('state', crypto.randomBytes(16).toString('hex'));
|
|
609
|
+
}
|
|
533
610
|
this._pendingAuthUrl = authorizationUrl;
|
|
534
611
|
// Register this manager's handler with the singleton callback server,
|
|
535
612
|
// keyed by the state param so callbacks are dispatched correctly.
|
|
536
613
|
const state = authorizationUrl.searchParams.get('state') ?? '';
|
|
537
614
|
this._pendingState = state;
|
|
538
|
-
const pendingFlows = readJsonFile(
|
|
615
|
+
const pendingFlows = readJsonFile(pendingFlowFile()) ?? {};
|
|
539
616
|
pendingFlows[state] = {
|
|
540
617
|
serverName: this.serverName,
|
|
541
618
|
serverUrl: this.serverUrl,
|
|
542
619
|
state,
|
|
543
620
|
};
|
|
544
|
-
writeJsonFile(
|
|
621
|
+
writeJsonFile(pendingFlowFile(), pendingFlows);
|
|
545
622
|
const { host, port } = this.callbackAddressParts;
|
|
546
623
|
globalCallbackServer.setAddress(host, port);
|
|
547
624
|
this._unregisterCallback = globalCallbackServer.register(state, {
|
|
@@ -560,38 +637,39 @@ class OAuthManager {
|
|
|
560
637
|
// verifier with a new one, causing a PKCE mismatch at the token endpoint.
|
|
561
638
|
if (!this._codeVerifier) {
|
|
562
639
|
this._codeVerifier = codeVerifier;
|
|
563
|
-
const store = readJsonFile(
|
|
564
|
-
store[this.serverName]
|
|
565
|
-
|
|
640
|
+
const store = readJsonFile(codeVerifierFile()) ?? {};
|
|
641
|
+
delete store[this.serverName];
|
|
642
|
+
store[this.storageKey] = codeVerifier;
|
|
643
|
+
writeJsonFile(codeVerifierFile(), store);
|
|
566
644
|
}
|
|
567
645
|
}
|
|
568
646
|
codeVerifier() {
|
|
569
647
|
if (this._codeVerifier) {
|
|
570
648
|
return this._codeVerifier;
|
|
571
649
|
}
|
|
572
|
-
const store = readJsonFile(
|
|
573
|
-
return
|
|
650
|
+
const store = readJsonFile(codeVerifierFile()) ?? {};
|
|
651
|
+
return this.readKeyed(store) ?? '';
|
|
574
652
|
}
|
|
575
653
|
invalidateCredentials(scope) {
|
|
576
654
|
if (scope === 'all' || scope === 'tokens') {
|
|
577
655
|
this.deleteTokens();
|
|
578
656
|
}
|
|
579
657
|
if (scope === 'all' || scope === 'client') {
|
|
580
|
-
const store = readJsonFile(
|
|
581
|
-
|
|
582
|
-
writeJsonFile(
|
|
658
|
+
const store = readJsonFile(clientInfoFile()) ?? {};
|
|
659
|
+
this.deleteKeyed(store);
|
|
660
|
+
writeJsonFile(clientInfoFile(), store);
|
|
583
661
|
}
|
|
584
662
|
if (scope === 'all' || scope === 'verifier') {
|
|
585
663
|
this._codeVerifier = '';
|
|
586
|
-
const store = readJsonFile(
|
|
587
|
-
|
|
588
|
-
writeJsonFile(
|
|
664
|
+
const store = readJsonFile(codeVerifierFile()) ?? {};
|
|
665
|
+
this.deleteKeyed(store);
|
|
666
|
+
writeJsonFile(codeVerifierFile(), store);
|
|
589
667
|
}
|
|
590
668
|
}
|
|
591
669
|
// ─── Private helpers ────────────────────────────────────────────────────────
|
|
592
670
|
loadTokens() {
|
|
593
|
-
const store = readJsonFile(
|
|
594
|
-
return
|
|
671
|
+
const store = readJsonFile(tokensFile()) ?? {};
|
|
672
|
+
return this.readKeyed(store) ?? null;
|
|
595
673
|
}
|
|
596
674
|
isExpired(tokens) {
|
|
597
675
|
if (!tokens.expires_in)
|
|
@@ -625,14 +703,18 @@ class OAuthManager {
|
|
|
625
703
|
const msg = `OAuth error: ${error}${error_description ? ` — ${error_description}` : ''}`;
|
|
626
704
|
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
627
705
|
res.end(htmlPage('Authorization Failed', `<p>${msg}</p>`));
|
|
706
|
+
this.invalidateCredentials('verifier');
|
|
628
707
|
this._closeCallbackServer();
|
|
708
|
+
this._pendingAuthUrl = null;
|
|
629
709
|
this._rejectAll(new Error(msg));
|
|
630
710
|
return;
|
|
631
711
|
}
|
|
632
712
|
if (!code) {
|
|
633
713
|
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
634
714
|
res.end(htmlPage('Authorization Failed', '<p>No authorization code received.</p>'));
|
|
715
|
+
this.invalidateCredentials('verifier');
|
|
635
716
|
this._closeCallbackServer();
|
|
717
|
+
this._pendingAuthUrl = null;
|
|
636
718
|
this._rejectAll(new Error('No authorization code in callback'));
|
|
637
719
|
return;
|
|
638
720
|
}
|
|
@@ -659,7 +741,9 @@ class OAuthManager {
|
|
|
659
741
|
else {
|
|
660
742
|
res.writeHead(400, { 'Content-Type': 'text/html' });
|
|
661
743
|
res.end(htmlPage('Authorization Failed', '<p>Unexpected auth result. Please retry.</p>'));
|
|
744
|
+
this.invalidateCredentials('verifier');
|
|
662
745
|
this._closeCallbackServer();
|
|
746
|
+
this._pendingAuthUrl = null;
|
|
663
747
|
this._rejectAll(new Error('Unexpected auth result after code exchange'));
|
|
664
748
|
}
|
|
665
749
|
}
|
|
@@ -667,7 +751,9 @@ class OAuthManager {
|
|
|
667
751
|
const msg = err instanceof Error ? err.message : String(err);
|
|
668
752
|
res.writeHead(500, { 'Content-Type': 'text/html' });
|
|
669
753
|
res.end(htmlPage('Token Exchange Failed', `<p>${msg}</p>`));
|
|
754
|
+
this.invalidateCredentials('verifier');
|
|
670
755
|
this._closeCallbackServer();
|
|
756
|
+
this._pendingAuthUrl = null;
|
|
671
757
|
this._rejectAll(err instanceof Error ? err : new Error(msg));
|
|
672
758
|
}
|
|
673
759
|
}
|
|
@@ -677,9 +763,9 @@ class OAuthManager {
|
|
|
677
763
|
deletePendingFlow(state) {
|
|
678
764
|
if (!state)
|
|
679
765
|
return;
|
|
680
|
-
const pendingFlows = readJsonFile(
|
|
766
|
+
const pendingFlows = readJsonFile(pendingFlowFile()) ?? {};
|
|
681
767
|
delete pendingFlows[state];
|
|
682
|
-
writeJsonFile(
|
|
768
|
+
writeJsonFile(pendingFlowFile(), pendingFlows);
|
|
683
769
|
}
|
|
684
770
|
_closeCallbackServer() {
|
|
685
771
|
this._startingFlow = null;
|