@n24q02m/mcp-core 1.16.0 → 1.17.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/build/auth/delegated-oauth-app.d.ts.map +1 -1
- package/build/auth/delegated-oauth-app.js +54 -6
- package/build/auth/delegated-oauth-app.js.map +1 -1
- package/build/auth/local-oauth-app.d.ts.map +1 -1
- package/build/auth/local-oauth-app.js +52 -6
- package/build/auth/local-oauth-app.js.map +1 -1
- package/build/auth/relay-login.d.ts.map +1 -1
- package/build/auth/relay-login.js +19 -7
- package/build/auth/relay-login.js.map +1 -1
- package/build/auth/well-known.d.ts.map +1 -1
- package/build/auth/well-known.js +3 -2
- package/build/auth/well-known.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -0
- package/build/index.js.map +1 -1
- package/build/oauth/cache.d.ts +22 -0
- package/build/oauth/cache.d.ts.map +1 -0
- package/build/oauth/cache.js +24 -0
- package/build/oauth/cache.js.map +1 -0
- package/build/oauth/index.d.ts +3 -1
- package/build/oauth/index.d.ts.map +1 -1
- package/build/oauth/index.js +3 -1
- package/build/oauth/index.js.map +1 -1
- package/build/oauth/jwt-issuer.d.ts +31 -2
- package/build/oauth/jwt-issuer.d.ts.map +1 -1
- package/build/oauth/jwt-issuer.js +56 -3
- package/build/oauth/jwt-issuer.js.map +1 -1
- package/build/oauth/pkce.d.ts +10 -0
- package/build/oauth/pkce.d.ts.map +1 -0
- package/build/oauth/pkce.js +34 -0
- package/build/oauth/pkce.js.map +1 -0
- package/build/oauth/provider.d.ts +6 -21
- package/build/oauth/provider.d.ts.map +1 -1
- package/build/oauth/provider.js +20 -55
- package/build/oauth/provider.js.map +1 -1
- package/build/relay/browser.d.ts.map +1 -1
- package/build/relay/browser.js +5 -10
- package/build/relay/browser.js.map +1 -1
- package/build/storage/config-file.d.ts.map +1 -1
- package/build/storage/config-file.js +72 -20
- package/build/storage/config-file.js.map +1 -1
- package/build/storage/encryption.d.ts +4 -2
- package/build/storage/encryption.d.ts.map +1 -1
- package/build/storage/encryption.js +6 -5
- package/build/storage/encryption.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,10 +2,11 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { dirname, join } from 'node:path';
|
|
4
4
|
import envPaths from 'env-paths';
|
|
5
|
-
import { decryptData, deriveFileKey, derivePassphraseKey, encryptData, LEGACY_PBKDF2_ITERATIONS, PBKDF2_ITERATIONS } from './encryption.js';
|
|
5
|
+
import { decryptData, deriveFileKey, derivePassphraseKey, encryptData, LEGACY_EXPORT_SALT, LEGACY_PBKDF2_ITERATIONS, LEGACY_SALT, PBKDF2_ITERATIONS } from './encryption.js';
|
|
6
6
|
import { getMachineId, getUsername } from './machine-id.js';
|
|
7
7
|
const paths = envPaths('mcp', { suffix: '' });
|
|
8
8
|
const DEFAULT_CONFIG_PATH = join(paths.config, 'config.enc');
|
|
9
|
+
const SALT_SIZE = 16;
|
|
9
10
|
function validateAuth(config) {
|
|
10
11
|
return Object.values(config).every((value) => typeof value === 'string');
|
|
11
12
|
}
|
|
@@ -57,14 +58,17 @@ async function withRetry(fn) {
|
|
|
57
58
|
// Cache the derived file key to avoid expensive PBKDF2 iterations on every config read/write.
|
|
58
59
|
// This significantly speeds up successive configuration accesses within the same process.
|
|
59
60
|
let cachedKey = null;
|
|
61
|
+
let cachedSalt = null;
|
|
60
62
|
export function clearKeyCacheForTesting() {
|
|
61
63
|
cachedKey = null;
|
|
64
|
+
cachedSalt = null;
|
|
62
65
|
}
|
|
63
|
-
async function getKey() {
|
|
64
|
-
if (cachedKey)
|
|
66
|
+
async function getKey(salt) {
|
|
67
|
+
if (cachedKey && cachedSalt && Buffer.from(cachedSalt).equals(salt))
|
|
65
68
|
return cachedKey;
|
|
66
69
|
const [machineId, username] = await Promise.all([getMachineId(), getUsername()]);
|
|
67
|
-
cachedKey = await deriveFileKey(machineId, username);
|
|
70
|
+
cachedKey = await deriveFileKey(machineId, username, salt);
|
|
71
|
+
cachedSalt = new Uint8Array(salt);
|
|
68
72
|
return cachedKey;
|
|
69
73
|
}
|
|
70
74
|
async function loadStore() {
|
|
@@ -74,24 +78,44 @@ async function loadStore() {
|
|
|
74
78
|
}
|
|
75
79
|
const [machineId, username] = await Promise.all([getMachineId(), getUsername()]);
|
|
76
80
|
const data = await readFile(configPath);
|
|
81
|
+
// Try new format: [16-byte salt][iv][ciphertext]
|
|
82
|
+
if (data.length >= SALT_SIZE + 12) {
|
|
83
|
+
const salt = data.subarray(0, SALT_SIZE);
|
|
84
|
+
const payload = data.subarray(SALT_SIZE);
|
|
85
|
+
try {
|
|
86
|
+
const key = await getKey(salt);
|
|
87
|
+
const json = await decryptData(key, payload);
|
|
88
|
+
const store = JSON.parse(json);
|
|
89
|
+
if (!validateSchema(store)) {
|
|
90
|
+
throw new Error('Invalid config schema');
|
|
91
|
+
}
|
|
92
|
+
return store;
|
|
93
|
+
}
|
|
94
|
+
catch (_err) {
|
|
95
|
+
// Fall through to legacy check
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Try legacy format: [iv][ciphertext] using LEGACY_SALT
|
|
77
99
|
try {
|
|
78
|
-
const
|
|
79
|
-
const json = await decryptData(
|
|
100
|
+
const legacyKey = await deriveFileKey(machineId, username, LEGACY_SALT, PBKDF2_ITERATIONS);
|
|
101
|
+
const json = await decryptData(legacyKey, data);
|
|
80
102
|
const store = JSON.parse(json);
|
|
81
103
|
if (!validateSchema(store)) {
|
|
82
104
|
throw new Error('Invalid config schema');
|
|
83
105
|
}
|
|
106
|
+
// Auto-migrate to current iterations AND new salted format
|
|
107
|
+
await saveStore(store);
|
|
84
108
|
return store;
|
|
85
109
|
}
|
|
86
110
|
catch (err) {
|
|
87
111
|
try {
|
|
88
|
-
const legacyKey = await deriveFileKey(machineId, username, LEGACY_PBKDF2_ITERATIONS);
|
|
112
|
+
const legacyKey = await deriveFileKey(machineId, username, LEGACY_SALT, LEGACY_PBKDF2_ITERATIONS);
|
|
89
113
|
const json = await decryptData(legacyKey, data);
|
|
90
114
|
const store = JSON.parse(json);
|
|
91
115
|
if (!validateSchema(store)) {
|
|
92
116
|
throw new Error('Invalid config schema');
|
|
93
117
|
}
|
|
94
|
-
// Auto-migrate
|
|
118
|
+
// Auto-migrate
|
|
95
119
|
await saveStore(store);
|
|
96
120
|
return store;
|
|
97
121
|
}
|
|
@@ -106,9 +130,14 @@ async function saveStore(store) {
|
|
|
106
130
|
if (!existsSync(dir)) {
|
|
107
131
|
await mkdir(dir, { recursive: true, mode: 0o700 });
|
|
108
132
|
}
|
|
109
|
-
|
|
133
|
+
let salt = cachedSalt;
|
|
134
|
+
if (!salt) {
|
|
135
|
+
salt = crypto.getRandomValues(new Uint8Array(SALT_SIZE));
|
|
136
|
+
}
|
|
137
|
+
const key = await getKey(salt);
|
|
110
138
|
const encrypted = await encryptData(key, JSON.stringify(store));
|
|
111
|
-
|
|
139
|
+
const finalData = Buffer.concat([Buffer.from(salt), encrypted]);
|
|
140
|
+
await withRetry(() => writeFile(configPath, finalData, { mode: 0o600 }));
|
|
112
141
|
}
|
|
113
142
|
/**
|
|
114
143
|
* Schedule a process exit so an MCP client can respawn the server and pick up
|
|
@@ -172,22 +201,45 @@ export async function listConfigs() {
|
|
|
172
201
|
}
|
|
173
202
|
export async function exportConfig(passphrase) {
|
|
174
203
|
const store = await loadStore();
|
|
175
|
-
const
|
|
176
|
-
|
|
204
|
+
const salt = crypto.getRandomValues(new Uint8Array(SALT_SIZE));
|
|
205
|
+
const key = await derivePassphraseKey(passphrase, salt);
|
|
206
|
+
const encrypted = await encryptData(key, JSON.stringify(store));
|
|
207
|
+
return Buffer.concat([Buffer.from(salt), encrypted]);
|
|
177
208
|
}
|
|
178
209
|
export async function importConfig(passphrase, data) {
|
|
179
210
|
let json;
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
211
|
+
// Try new format: [16-byte salt][iv][ciphertext]
|
|
212
|
+
if (data.length >= SALT_SIZE + 12) {
|
|
213
|
+
const salt = data.subarray(0, SALT_SIZE);
|
|
214
|
+
const payload = data.subarray(SALT_SIZE);
|
|
215
|
+
try {
|
|
216
|
+
const key = await derivePassphraseKey(passphrase, salt, PBKDF2_ITERATIONS);
|
|
217
|
+
json = await decryptData(key, payload);
|
|
218
|
+
}
|
|
219
|
+
catch (_err) {
|
|
220
|
+
try {
|
|
221
|
+
const legacyKey = await derivePassphraseKey(passphrase, salt, LEGACY_PBKDF2_ITERATIONS);
|
|
222
|
+
json = await decryptData(legacyKey, payload);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Fall through to legacy format check
|
|
226
|
+
}
|
|
227
|
+
}
|
|
183
228
|
}
|
|
184
|
-
|
|
229
|
+
if (!json) {
|
|
230
|
+
// Try legacy format: [iv][ciphertext] using LEGACY_EXPORT_SALT
|
|
185
231
|
try {
|
|
186
|
-
const
|
|
187
|
-
json = await decryptData(
|
|
232
|
+
const key = await derivePassphraseKey(passphrase, LEGACY_EXPORT_SALT, PBKDF2_ITERATIONS);
|
|
233
|
+
json = await decryptData(key, data);
|
|
188
234
|
}
|
|
189
|
-
catch {
|
|
190
|
-
|
|
235
|
+
catch (err) {
|
|
236
|
+
try {
|
|
237
|
+
const legacyKey = await derivePassphraseKey(passphrase, LEGACY_EXPORT_SALT, LEGACY_PBKDF2_ITERATIONS);
|
|
238
|
+
json = await decryptData(legacyKey, data);
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
throw err;
|
|
242
|
+
}
|
|
191
243
|
}
|
|
192
244
|
}
|
|
193
245
|
const imported = JSON.parse(json);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/storage/config-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EACL,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE3D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;AAC7C,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../../src/storage/config-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
export declare const LEGACY_SALT: Uint8Array<ArrayBuffer>;
|
|
2
|
+
export declare const LEGACY_EXPORT_SALT: Uint8Array<ArrayBuffer>;
|
|
1
3
|
export declare const PBKDF2_ITERATIONS = 600000;
|
|
2
4
|
export declare const LEGACY_PBKDF2_ITERATIONS = 100000;
|
|
3
|
-
export declare function deriveFileKey(machineId: string, username: string, iterations?: number): Promise<CryptoKey>;
|
|
4
|
-
export declare function derivePassphraseKey(passphrase: string, iterations?: number): Promise<CryptoKey>;
|
|
5
|
+
export declare function deriveFileKey(machineId: string, username: string, salt: Uint8Array, iterations?: number): Promise<CryptoKey>;
|
|
6
|
+
export declare function derivePassphraseKey(passphrase: string, salt: Uint8Array, iterations?: number): Promise<CryptoKey>;
|
|
5
7
|
export declare function encryptData(key: CryptoKey, plaintext: string): Promise<Buffer>;
|
|
6
8
|
export declare function decryptData(key: CryptoKey, data: Buffer): Promise<string>;
|
|
7
9
|
//# sourceMappingURL=encryption.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../src/storage/encryption.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encryption.d.ts","sourceRoot":"","sources":["../../src/storage/encryption.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,yBAAqC,CAAA;AAC7D,eAAO,MAAM,kBAAkB,yBAAqC,CAAA;AACpE,eAAO,MAAM,iBAAiB,SAAU,CAAA;AACxC,eAAO,MAAM,wBAAwB,SAAU,CAAA;AAE/C,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,UAAU,GAAE,MAA0B,GACrC,OAAO,CAAC,SAAS,CAAC,CAepB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,UAAU,EAChB,UAAU,GAAE,MAA0B,GACrC,OAAO,CAAC,SAAS,CAAC,CASpB;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAKpF;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
const encoder = new TextEncoder();
|
|
2
2
|
const decoder = new TextDecoder();
|
|
3
|
-
const
|
|
3
|
+
export const LEGACY_SALT = encoder.encode('mcp-relay-config');
|
|
4
|
+
export const LEGACY_EXPORT_SALT = encoder.encode('mcp-relay-export');
|
|
4
5
|
export const PBKDF2_ITERATIONS = 600_000;
|
|
5
6
|
export const LEGACY_PBKDF2_ITERATIONS = 100_000;
|
|
6
|
-
export async function deriveFileKey(machineId, username, iterations = PBKDF2_ITERATIONS) {
|
|
7
|
+
export async function deriveFileKey(machineId, username, salt, iterations = PBKDF2_ITERATIONS) {
|
|
7
8
|
const keyMaterial = await crypto.subtle.importKey('raw', encoder.encode(`${machineId}:${username}`), 'PBKDF2', false, ['deriveKey']);
|
|
8
|
-
return crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt:
|
|
9
|
+
return crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt: salt, iterations }, keyMaterial, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);
|
|
9
10
|
}
|
|
10
|
-
export async function derivePassphraseKey(passphrase, iterations = PBKDF2_ITERATIONS) {
|
|
11
|
+
export async function derivePassphraseKey(passphrase, salt, iterations = PBKDF2_ITERATIONS) {
|
|
11
12
|
const keyMaterial = await crypto.subtle.importKey('raw', encoder.encode(passphrase), 'PBKDF2', false, ['deriveKey']);
|
|
12
|
-
return crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt:
|
|
13
|
+
return crypto.subtle.deriveKey({ name: 'PBKDF2', hash: 'SHA-256', salt: salt, iterations }, keyMaterial, { name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt']);
|
|
13
14
|
}
|
|
14
15
|
export async function encryptData(key, plaintext) {
|
|
15
16
|
const iv = crypto.getRandomValues(new Uint8Array(12));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/storage/encryption.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;AACjC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAA;AAEjC,MAAM,
|
|
1
|
+
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/storage/encryption.ts"],"names":[],"mappings":"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"}
|