@plurnk/plurnk-mcp 1.7.0 → 1.9.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/.env.defaults +25 -0
- package/README.md +85 -27
- package/SPEC.md +317 -69
- package/dist/McpExecutor.d.ts +28 -3
- package/dist/McpExecutor.d.ts.map +1 -1
- package/dist/McpExecutor.js +50 -6
- package/dist/McpExecutor.js.map +1 -1
- package/dist/Module.d.ts +68 -11
- package/dist/Module.d.ts.map +1 -1
- package/dist/Module.js +393 -482
- package/dist/Module.js.map +1 -1
- package/dist/ToolPresentation.d.ts +3 -1
- package/dist/ToolPresentation.d.ts.map +1 -1
- package/dist/ToolPresentation.js +145 -55
- package/dist/ToolPresentation.js.map +1 -1
- package/dist/capabilityMatrix.d.ts +23 -0
- package/dist/capabilityMatrix.d.ts.map +1 -0
- package/dist/capabilityMatrix.js +403 -0
- package/dist/capabilityMatrix.js.map +1 -0
- package/dist/client.d.ts +3 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +105 -43
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +8 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +169 -32
- package/dist/config.js.map +1 -1
- package/dist/extensionChannel.d.ts.map +1 -1
- package/dist/extensionChannel.js +18 -4
- package/dist/extensionChannel.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-watchdog.mjs +106 -0
- package/dist/protocol.d.ts +1 -0
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +1 -0
- package/dist/protocol.js.map +1 -1
- package/package.json +6 -5
package/dist/config.js
CHANGED
|
@@ -6,21 +6,29 @@ const COMPANION_SUFFIXES = [
|
|
|
6
6
|
"_cwd",
|
|
7
7
|
"_env",
|
|
8
8
|
"_headers",
|
|
9
|
+
"_summary",
|
|
9
10
|
"_tools",
|
|
10
11
|
"_read",
|
|
11
12
|
];
|
|
12
13
|
const CONTROL_KEYS = new Map([
|
|
13
14
|
["connect_timeout", `${PREFIX}CONNECT_TIMEOUT`],
|
|
14
15
|
["request_timeout", `${PREFIX}REQUEST_TIMEOUT`],
|
|
16
|
+
["enabled", `${PREFIX}ENABLED`],
|
|
17
|
+
["expanded", `${PREFIX}EXPANDED`],
|
|
15
18
|
]);
|
|
16
19
|
const SERVER_NAME = /^[a-z][a-z0-9-]*$/;
|
|
20
|
+
// {§mcp-summary-derivation} — a _SUMMARY companion may extend a server name
|
|
21
|
+
// with one tool name (PLURNK_MCP_<server>_<tool>_SUMMARY); tool names legally
|
|
22
|
+
// contain underscores, so summary keys admit them and bind to the declared
|
|
23
|
+
// server in summaryOverrides.
|
|
24
|
+
const SUMMARY_KEY_NAME = /^[a-z][a-z0-9_-]*$/;
|
|
17
25
|
const ENV_REFERENCE = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/gu;
|
|
18
26
|
const assertServerName = (name, variable) => {
|
|
19
27
|
if (!SERVER_NAME.test(name)) {
|
|
20
28
|
throw new Error(`${variable} derives invalid MCP server name '${name}'; names must match [a-z][a-z0-9-]*.`);
|
|
21
29
|
}
|
|
22
30
|
};
|
|
23
|
-
const parseEnvironment = (environ) => {
|
|
31
|
+
const parseEnvironment = (environ, allowOrphanCompanions = false) => {
|
|
24
32
|
const targets = new Map();
|
|
25
33
|
const companions = new Map();
|
|
26
34
|
for (const [key, value] of Object.entries(environ)) {
|
|
@@ -44,7 +52,14 @@ const parseEnvironment = (environ) => {
|
|
|
44
52
|
if (reservedGlobal !== undefined) {
|
|
45
53
|
throw new Error(`${key} uses ${reservedGlobal} as a server name; reserved globals cannot have server companions.`);
|
|
46
54
|
}
|
|
47
|
-
|
|
55
|
+
if (companion === "_summary") {
|
|
56
|
+
if (!SUMMARY_KEY_NAME.test(name)) {
|
|
57
|
+
throw new Error(`${key} derives invalid MCP summary name '${name}'; names must match [a-z][a-z0-9_-]*.`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
assertServerName(name, key);
|
|
62
|
+
}
|
|
48
63
|
const bySuffix = companions.get(name) ?? new Map();
|
|
49
64
|
const existing = bySuffix.get(companion);
|
|
50
65
|
if (existing !== undefined) {
|
|
@@ -61,11 +76,18 @@ const parseEnvironment = (environ) => {
|
|
|
61
76
|
}
|
|
62
77
|
targets.set(folded, { key, value });
|
|
63
78
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
79
|
+
if (!allowOrphanCompanions) {
|
|
80
|
+
for (const [name, fields] of companions) {
|
|
81
|
+
if (targets.has(name))
|
|
82
|
+
continue;
|
|
83
|
+
// A _SUMMARY companion may address one tool of a declared server:
|
|
84
|
+
// PLURNK_MCP_<SERVER>_<TOOL>_SUMMARY ({§mcp-summary-derivation}).
|
|
85
|
+
const toolSummaryOf = [...targets.keys()].find((target) => name.startsWith(`${target}_`));
|
|
86
|
+
if (fields.get("_summary") !== undefined && toolSummaryOf !== undefined)
|
|
87
|
+
continue;
|
|
88
|
+
const variables = [...fields.values()].map(({ key }) => key).join(", ");
|
|
89
|
+
throw new Error(`${variables} has no MCP server target ${PREFIX}${name.toUpperCase()}.`);
|
|
90
|
+
}
|
|
69
91
|
}
|
|
70
92
|
return { targets, companions };
|
|
71
93
|
};
|
|
@@ -121,69 +143,184 @@ const jsonRecord = (raw, field) => {
|
|
|
121
143
|
return parsed;
|
|
122
144
|
};
|
|
123
145
|
export const serverNames = (environ = process.env) => [...parseEnvironment(environ).targets.keys()].toSorted();
|
|
124
|
-
|
|
125
|
-
const { targets, companions } = parseEnvironment(environ);
|
|
146
|
+
const definitionFromEnvironment = (name, parsed, base) => {
|
|
126
147
|
const folded = name.toLowerCase();
|
|
127
|
-
const target = targets.get(folded);
|
|
128
|
-
if (target === undefined)
|
|
129
|
-
|
|
130
|
-
|
|
148
|
+
const target = parsed.targets.get(folded);
|
|
149
|
+
if (target === undefined && base === undefined) {
|
|
150
|
+
const orphaned = parsed.companions.get(folded);
|
|
151
|
+
if (orphaned === undefined)
|
|
152
|
+
return null;
|
|
153
|
+
const variables = [...orphaned.values()].map(({ key }) => key).join(", ");
|
|
154
|
+
throw new Error(`${variables} has no MCP server target ${PREFIX}${folded.toUpperCase()}.`);
|
|
155
|
+
}
|
|
156
|
+
if (base !== undefined && base.name !== folded) {
|
|
157
|
+
throw new Error(`MCP base definition '${base.name}' cannot configure alias '${folded}'.`);
|
|
158
|
+
}
|
|
159
|
+
if (target?.value.length === 0)
|
|
131
160
|
throw new Error(`${target.key} must not be empty.`);
|
|
132
|
-
const
|
|
161
|
+
const lower = target === undefined ? base : undefined;
|
|
162
|
+
const fields = parsed.companions.get(folded);
|
|
133
163
|
const fieldName = (suffix) => fields?.get(suffix)?.key ?? `${PREFIX}${folded.toUpperCase()}${suffix.toUpperCase()}`;
|
|
134
164
|
const configuredTools = fields?.get("_tools");
|
|
165
|
+
const inheritedTools = lower?.tools;
|
|
166
|
+
const tools = configuredTools === undefined
|
|
167
|
+
? structuredClone(inheritedTools)
|
|
168
|
+
: toolNames(configuredTools.value, configuredTools.key);
|
|
135
169
|
const policy = {
|
|
136
|
-
...(
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
170
|
+
...(tools === undefined ? {} : { tools }),
|
|
171
|
+
read: fields?.has("_read")
|
|
172
|
+
? toolNames(fields.get("_read")?.value, fieldName("_read"))
|
|
173
|
+
: structuredClone(lower?.read ?? []),
|
|
140
174
|
};
|
|
141
|
-
|
|
175
|
+
const transport = target === undefined
|
|
176
|
+
? lower?.transport
|
|
177
|
+
: /^https?:\/\//iu.test(target.value) ? "http" : "stdio";
|
|
178
|
+
if (transport === "http") {
|
|
142
179
|
const invalid = ["_args", "_cwd", "_env"]
|
|
143
180
|
.flatMap((suffix) => fields?.get(suffix)?.key ?? []);
|
|
144
181
|
if (invalid.length > 0) {
|
|
145
|
-
throw new Error(`${invalid.join(", ")} cannot accompany HTTP MCP server target ${target
|
|
182
|
+
throw new Error(`${invalid.join(", ")} cannot accompany HTTP MCP server target ${target?.key ?? folded}; transport-neutral _TOOLS/_READ and HTTP _HEADERS are valid.`);
|
|
146
183
|
}
|
|
147
|
-
const
|
|
184
|
+
const inheritedHeaders = lower?.transport === "http"
|
|
185
|
+
? structuredClone(lower.headers)
|
|
186
|
+
: undefined;
|
|
187
|
+
const headers = fields?.has("_headers")
|
|
188
|
+
? jsonRecord(fields.get("_headers")?.value, fieldName("_headers"))
|
|
189
|
+
: inheritedHeaders;
|
|
148
190
|
const bearer = fields?.get("_bearer");
|
|
191
|
+
const inheritedAuthorization = lower?.transport === "http"
|
|
192
|
+
? structuredClone(lower.authorization)
|
|
193
|
+
: undefined;
|
|
194
|
+
const authorization = bearer === undefined
|
|
195
|
+
? inheritedAuthorization
|
|
196
|
+
: { type: "bearer", token: bearer.value };
|
|
149
197
|
const authorizationHeader = Object.keys(headers ?? {}).find((key) => key.toLowerCase() === "authorization");
|
|
150
|
-
if (
|
|
151
|
-
throw new Error(`${bearer
|
|
198
|
+
if (authorization?.type === "bearer" && authorizationHeader !== undefined) {
|
|
199
|
+
throw new Error(`${bearer?.key ?? "Bearer authorization"} conflicts with Authorization in the server's _HEADERS map.`);
|
|
152
200
|
}
|
|
201
|
+
const url = target?.value ?? (lower?.transport === "http" ? lower.url : undefined);
|
|
202
|
+
if (url === undefined)
|
|
203
|
+
throw new Error(`HTTP MCP server '${folded}' has no target.`);
|
|
153
204
|
return Validator.assertMcpServerDefinition({
|
|
154
205
|
name: folded,
|
|
155
206
|
transport: "http",
|
|
156
|
-
url
|
|
207
|
+
url,
|
|
157
208
|
...(headers === undefined ? {} : { headers }),
|
|
158
|
-
...(
|
|
159
|
-
? {}
|
|
160
|
-
: { authorization: { type: "bearer", token: bearer.value } }),
|
|
209
|
+
...(authorization === undefined ? {} : { authorization }),
|
|
161
210
|
...policy,
|
|
162
211
|
});
|
|
163
212
|
}
|
|
164
213
|
const httpOnly = ["_headers", "_bearer"]
|
|
165
214
|
.flatMap((suffix) => fields?.get(suffix)?.key ?? []);
|
|
166
215
|
if (httpOnly.length > 0) {
|
|
167
|
-
throw new Error(`${httpOnly.join(", ")} cannot accompany stdio MCP server target ${target
|
|
216
|
+
throw new Error(`${httpOnly.join(", ")} cannot accompany stdio MCP server target ${target?.key ?? folded}.`);
|
|
168
217
|
}
|
|
169
|
-
const
|
|
170
|
-
const
|
|
218
|
+
const inheritedStdio = lower?.transport === "stdio" ? lower : undefined;
|
|
219
|
+
const cwd = fields?.has("_cwd")
|
|
220
|
+
? fields.get("_cwd")?.value
|
|
221
|
+
: inheritedStdio?.cwd;
|
|
222
|
+
const stdioEnvironment = fields?.has("_env")
|
|
223
|
+
? jsonRecord(fields.get("_env")?.value, fieldName("_env"))
|
|
224
|
+
: structuredClone(inheritedStdio?.env);
|
|
225
|
+
const args = fields?.has("_args")
|
|
226
|
+
? jsonStrings(fields.get("_args")?.value, fieldName("_args"))
|
|
227
|
+
: structuredClone(inheritedStdio?.args ?? []);
|
|
228
|
+
const command = target?.value ?? inheritedStdio?.command;
|
|
229
|
+
if (command === undefined)
|
|
230
|
+
throw new Error(`Stdio MCP server '${folded}' has no target.`);
|
|
171
231
|
return Validator.assertMcpServerDefinition({
|
|
172
232
|
name: folded,
|
|
173
233
|
transport: "stdio",
|
|
174
|
-
command
|
|
175
|
-
args
|
|
234
|
+
command,
|
|
235
|
+
args,
|
|
176
236
|
...(cwd === undefined ? {} : { cwd }),
|
|
177
237
|
...(stdioEnvironment === undefined ? {} : { env: stdioEnvironment }),
|
|
178
238
|
...policy,
|
|
179
239
|
});
|
|
180
240
|
};
|
|
241
|
+
export const serverDefinition = (name, environ = process.env) => definitionFromEnvironment(name, parseEnvironment(environ));
|
|
242
|
+
export const overlayServerDefinitions = (overlay, bases = new Map()) => {
|
|
243
|
+
const validated = Validator.assertMcpConfigurationOverlay(structuredClone(overlay));
|
|
244
|
+
const parsed = parseEnvironment(validated, true);
|
|
245
|
+
const names = new Set([...parsed.targets.keys(), ...parsed.companions.keys()]);
|
|
246
|
+
return new Map([...names]
|
|
247
|
+
.toSorted()
|
|
248
|
+
.map((name) => {
|
|
249
|
+
const definition = definitionFromEnvironment(name, parsed, bases.get(name));
|
|
250
|
+
if (definition === null)
|
|
251
|
+
throw new Error(`MCP overlay server '${name}' disappeared.`);
|
|
252
|
+
return [name, definition];
|
|
253
|
+
}));
|
|
254
|
+
};
|
|
181
255
|
export const serviceDefinitions = (environ = process.env) => serverNames(environ).map((name) => {
|
|
182
256
|
const definition = serverDefinition(name, environ);
|
|
183
257
|
if (definition === null)
|
|
184
258
|
throw new Error(`MCP server '${name}' disappeared during configuration.`);
|
|
185
259
|
return definition;
|
|
186
260
|
});
|
|
261
|
+
// {§mcp-summary-derivation} — authored orientation lines. A _SUMMARY companion
|
|
262
|
+
// names either the whole server (PLURNK_MCP_<SERVER>_SUMMARY) or one tool
|
|
263
|
+
// (PLURNK_MCP_<SERVER>_<TOOL>_SUMMARY). Values expand ${NAME} references like
|
|
264
|
+
// every other companion.
|
|
265
|
+
// {§tools-resource-materialization} — the turn-0 tools survey lists server
|
|
266
|
+
// families; servers named here also expand their complete tool tree into the
|
|
267
|
+
// turn-0 survey.
|
|
268
|
+
export const expandedServerNames = (environ = process.env) => {
|
|
269
|
+
const field = `${PREFIX}EXPANDED`;
|
|
270
|
+
const configured = jsonStrings(environ[field], field);
|
|
271
|
+
const available = new Set(serverNames(environ));
|
|
272
|
+
const expanded = new Set();
|
|
273
|
+
for (const name of configured) {
|
|
274
|
+
assertServerName(name, field);
|
|
275
|
+
if (!available.has(name)) {
|
|
276
|
+
throw new Error(`${field} contains unknown MCP server '${name}'.`);
|
|
277
|
+
}
|
|
278
|
+
if (expanded.has(name)) {
|
|
279
|
+
throw new Error(`${field} contains duplicate MCP server '${name}'.`);
|
|
280
|
+
}
|
|
281
|
+
expanded.add(name);
|
|
282
|
+
}
|
|
283
|
+
return [...expanded].toSorted();
|
|
284
|
+
};
|
|
285
|
+
export const summaryOverrides = (environ = process.env) => {
|
|
286
|
+
const { targets, companions } = parseEnvironment(environ);
|
|
287
|
+
const servers = new Map();
|
|
288
|
+
const tools = new Map();
|
|
289
|
+
for (const [name, fields] of companions) {
|
|
290
|
+
const summary = fields.get("_summary");
|
|
291
|
+
if (summary === undefined)
|
|
292
|
+
continue;
|
|
293
|
+
const value = expandReferences(summary.value, environ, summary.key);
|
|
294
|
+
if (targets.has(name)) {
|
|
295
|
+
servers.set(name, value);
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
const server = [...targets.keys()].find((target) => name.startsWith(`${target}_`));
|
|
299
|
+
if (server === undefined) {
|
|
300
|
+
throw new Error(`${summary.key} has no MCP server target ${PREFIX}${name.toUpperCase()}.`);
|
|
301
|
+
}
|
|
302
|
+
const tool = name.slice(server.length + 1);
|
|
303
|
+
tools.set(`${server}/${tool}`, value);
|
|
304
|
+
}
|
|
305
|
+
return { servers, tools };
|
|
306
|
+
};
|
|
307
|
+
export const serviceEnabledNames = (environ = process.env) => {
|
|
308
|
+
const field = `${PREFIX}ENABLED`;
|
|
309
|
+
const configured = jsonStrings(environ[field], field);
|
|
310
|
+
const available = new Set(serverNames(environ));
|
|
311
|
+
const enabled = new Set();
|
|
312
|
+
for (const name of configured) {
|
|
313
|
+
assertServerName(name, field);
|
|
314
|
+
if (!available.has(name)) {
|
|
315
|
+
throw new Error(`${field} contains unknown MCP server '${name}'.`);
|
|
316
|
+
}
|
|
317
|
+
if (enabled.has(name)) {
|
|
318
|
+
throw new Error(`${field} contains duplicate MCP server '${name}'.`);
|
|
319
|
+
}
|
|
320
|
+
enabled.add(name);
|
|
321
|
+
}
|
|
322
|
+
return [...enabled].toSorted();
|
|
323
|
+
};
|
|
187
324
|
export const connectTimeoutMs = (environ = process.env) => {
|
|
188
325
|
const raw = environ.PLURNK_MCP_CONNECT_TIMEOUT;
|
|
189
326
|
const value = Number(raw);
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensionChannel.d.ts","sourceRoot":"","sources":["../src/extensionChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAOH,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACb,KAAK,SAAS,EACjB,MAAM,8BAA8B,CAAC;AAItC,UAAU,cAAc;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtD;AAYD,UAAU,uBAAuB;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7C;AAED,KAAK,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"extensionChannel.d.ts","sourceRoot":"","sources":["../src/extensionChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAOH,KAAK,kBAAkB,EACvB,KAAK,cAAc,EAEnB,KAAK,QAAQ,EACb,KAAK,SAAS,EACjB,MAAM,8BAA8B,CAAC;AAItC,UAAU,cAAc;IACpB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IAClD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtD;AAYD,UAAU,uBAAuB;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAC7C;AAED,KAAK,uBAAuB,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAYzD,MAAM,CAAC,OAAO,OAAO,gBAAgB;;IAYjC,YAAY,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,uBAAuB,EAYjE;IAED,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,IAAI,CAI/D;IAEK,OAAO,CACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,OAAO,EAAE,cAAc,GACxB,OAAO,CAAC,OAAO,CAAC,CAwElB;IAgGD,KAAK,IAAI,IAAI,CAWZ;CACJ"}
|
package/dist/extensionChannel.js
CHANGED
|
@@ -22,7 +22,7 @@ export default class ExtensionChannel {
|
|
|
22
22
|
this.#options = options;
|
|
23
23
|
this.#priorMessage = transport.onmessage;
|
|
24
24
|
this.#priorClose = transport.onclose;
|
|
25
|
-
this.#messageHandler = (message) => this.#receive(message);
|
|
25
|
+
this.#messageHandler = (message, extra) => this.#receive(message, extra);
|
|
26
26
|
this.#closeHandler = () => {
|
|
27
27
|
this.#rejectAll(new SdkError(SdkErrorCode.ConnectionClosed, "MCP extension channel closed."));
|
|
28
28
|
this.#priorClose?.();
|
|
@@ -104,10 +104,10 @@ export default class ExtensionChannel {
|
|
|
104
104
|
this.#options.onError?.(asError(cause));
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
#receive(message) {
|
|
107
|
+
#receive(message, extra) {
|
|
108
108
|
const record = asRecord(message);
|
|
109
109
|
if (record === undefined) {
|
|
110
|
-
this.#priorMessage?.(message);
|
|
110
|
+
this.#priorMessage?.(message, extra);
|
|
111
111
|
return;
|
|
112
112
|
}
|
|
113
113
|
const id = record.id;
|
|
@@ -158,7 +158,21 @@ export default class ExtensionChannel {
|
|
|
158
158
|
return;
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
|
-
|
|
161
|
+
if (record.id !== undefined && ("result" in record || "error" in record)) {
|
|
162
|
+
// {§mcp-core-matrix} The SDK defers notification callbacks but
|
|
163
|
+
// settles responses synchronously. A microtask checkpoint keeps
|
|
164
|
+
// coalesced notification/response frames in their wire order.
|
|
165
|
+
queueMicrotask(() => {
|
|
166
|
+
try {
|
|
167
|
+
this.#priorMessage?.(message, extra);
|
|
168
|
+
}
|
|
169
|
+
catch (cause) {
|
|
170
|
+
this.#options.onError?.(asError(cause));
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
this.#priorMessage?.(message, extra);
|
|
162
176
|
}
|
|
163
177
|
#settle(id, error, value) {
|
|
164
178
|
const pending = this.#pending.get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensionChannel.js","sourceRoot":"","sources":["../src/extensionChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,4BAA4B,EAC5B,oBAAoB,EACpB,yBAAyB,EACzB,aAAa,EACb,QAAQ,EACR,YAAY,GAMf,MAAM,8BAA8B,CAAC;AAEtC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"extensionChannel.js","sourceRoot":"","sources":["../src/extensionChannel.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { default as Module } from "./Module.ts";
|
|
2
2
|
export { default } from "./Module.ts";
|
|
3
3
|
export { MCP_CLIENT_VERSION, MCP_CONFORMANCE_VERSION, MCP_PROTOCOL_VERSION, MCP_SPECIFICATION_COMMIT, MCP_TASKS_EXTENSION_ID, MCP_TASKS_SPECIFICATION_COMMIT, } from "./protocol.ts";
|
|
4
|
-
export { connectTimeoutMs, expandReferences, requestTimeoutMs, serverDefinition, serverNames, serviceDefinitions, } from "./config.ts";
|
|
4
|
+
export { connectTimeoutMs, expandReferences, requestTimeoutMs, serverDefinition, serverNames, serviceDefinitions, serviceEnabledNames, } from "./config.ts";
|
|
5
5
|
export type { ToolPolicy } from "./config.ts";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { default as Module } from "./Module.js";
|
|
2
2
|
export { default } from "./Module.js";
|
|
3
3
|
export { MCP_CLIENT_VERSION, MCP_CONFORMANCE_VERSION, MCP_PROTOCOL_VERSION, MCP_SPECIFICATION_COMMIT, MCP_TASKS_EXTENSION_ID, MCP_TASKS_SPECIFICATION_COMMIT, } from "./protocol.js";
|
|
4
|
-
export { connectTimeoutMs, expandReferences, requestTimeoutMs, serverDefinition, serverNames, serviceDefinitions, } from "./config.js";
|
|
4
|
+
export { connectTimeoutMs, expandReferences, requestTimeoutMs, serverDefinition, serverNames, serviceDefinitions, serviceEnabledNames, } from "./config.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EACH,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,8BAA8B,GACjC,MAAM,eAAe,CAAC;AACvB,OAAO,EACH,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// {§mcp-stdio-process-ownership} — the parent-death watchdog wrapper.
|
|
3
|
+
// plurnk-mcp spawns stdio servers through this wrapper so no server (or its
|
|
4
|
+
// grandchildren, e.g. chromium) can outlive the daemon:
|
|
5
|
+
//
|
|
6
|
+
// - the real server is spawned DETACHED (its own process group), so the
|
|
7
|
+
// wrapper can group-kill the whole tree, grandchildren included;
|
|
8
|
+
// - ordinary transport closure forwards EOF and gives the server a bounded
|
|
9
|
+
// graceful exit; parent death or an expired grace group-SIGKILLs the tree;
|
|
10
|
+
// - a ppid poll covers SIGKILL of the daemon, where close() never runs;
|
|
11
|
+
// - stdio is forwarded verbatim, so the MCP protocol is untouched.
|
|
12
|
+
//
|
|
13
|
+
// Usage (internal): mcp-watchdog.mjs <ppid> -- <command> [args...]
|
|
14
|
+
// The wrapper is a process-lifecycle tool, not a protocol participant.
|
|
15
|
+
import { spawn } from "node:child_process";
|
|
16
|
+
|
|
17
|
+
const args = process.argv.slice(2);
|
|
18
|
+
const sep = args.indexOf("--");
|
|
19
|
+
if (sep < 1) {
|
|
20
|
+
process.stderr.write("mcp-watchdog: usage: mcp-watchdog.mjs <ppid> -- <command> [args...]\n");
|
|
21
|
+
process.exit(64);
|
|
22
|
+
}
|
|
23
|
+
const parentPid = Number(args[0]);
|
|
24
|
+
const command = args[sep + 1];
|
|
25
|
+
const rest = args.slice(sep + 2);
|
|
26
|
+
if (!Number.isSafeInteger(parentPid) || parentPid <= 1 || typeof command !== "string" || command.length === 0) {
|
|
27
|
+
process.stderr.write("mcp-watchdog: invalid invocation\n");
|
|
28
|
+
process.exit(64);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const SHUTDOWN_GRACE_MS = 2_000;
|
|
32
|
+
|
|
33
|
+
const child = spawn(command, rest, {
|
|
34
|
+
stdio: ["pipe", "pipe", "inherit"],
|
|
35
|
+
env: process.env,
|
|
36
|
+
detached: true, // own process group: kill(-pid) reaches grandchildren
|
|
37
|
+
});
|
|
38
|
+
const killChildGroup = () => {
|
|
39
|
+
if (child.pid === undefined) return;
|
|
40
|
+
try { process.kill(-child.pid, "SIGKILL"); } catch { /* already gone */ }
|
|
41
|
+
};
|
|
42
|
+
let state = "running";
|
|
43
|
+
let grace;
|
|
44
|
+
const die = (reason, code = 0) => {
|
|
45
|
+
if (state === "exited") return;
|
|
46
|
+
state = "exited";
|
|
47
|
+
clearTimeout(grace);
|
|
48
|
+
killChildGroup();
|
|
49
|
+
process.stderr.write(`mcp-watchdog: exiting (${reason})\n`);
|
|
50
|
+
process.exit(code);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const alive = () => {
|
|
54
|
+
try { process.kill(parentPid, 0); return true; } catch { return false; }
|
|
55
|
+
};
|
|
56
|
+
const closeInput = () => {
|
|
57
|
+
if (state !== "running") return;
|
|
58
|
+
if (!alive()) {
|
|
59
|
+
die("parent gone");
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
state = "closing";
|
|
63
|
+
child.stdin.end();
|
|
64
|
+
grace = setTimeout(() => die("graceful shutdown deadline"), SHUTDOWN_GRACE_MS);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// The daemon owns our stdin. Ordinary transport shutdown closes it while the
|
|
68
|
+
// daemon remains alive; parent death closes it after the owner disappears.
|
|
69
|
+
process.stdin.on("end", closeInput);
|
|
70
|
+
process.stdin.on("close", closeInput);
|
|
71
|
+
process.stdin.resume();
|
|
72
|
+
|
|
73
|
+
// Parent-death signal 2: poll the ppid. Covers a reparented-but-open-fd edge
|
|
74
|
+
// (e.g. a grandchild accidentally inheriting our stdin) at 2s granularity.
|
|
75
|
+
const poll = setInterval(() => {
|
|
76
|
+
if (!alive()) die("parent gone");
|
|
77
|
+
}, 2_000);
|
|
78
|
+
poll.unref();
|
|
79
|
+
|
|
80
|
+
// Forward the protocol verbatim.
|
|
81
|
+
process.stdin.on("data", (chunk) => {
|
|
82
|
+
if (state === "running") child.stdin.write(chunk);
|
|
83
|
+
});
|
|
84
|
+
child.stdout.on("data", (chunk) => process.stdout.write(chunk));
|
|
85
|
+
child.stdout.on("end", () => { if (state !== "exited") process.stdout.end(); });
|
|
86
|
+
child.stdin.on("error", (error) => {
|
|
87
|
+
if (state === "closing" && error.code === "EPIPE") return;
|
|
88
|
+
die(`server stdin failed: ${error.message}`, 66);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
child.on("exit", (code, signal) => {
|
|
92
|
+
clearInterval(poll);
|
|
93
|
+
if (state === "exited") return;
|
|
94
|
+
state = "exited";
|
|
95
|
+
clearTimeout(grace);
|
|
96
|
+
// A server that exits does not get to strand descendants in its group.
|
|
97
|
+
killChildGroup();
|
|
98
|
+
process.exit(code ?? (signal === null ? 0 : 1));
|
|
99
|
+
});
|
|
100
|
+
child.on("error", (error) => {
|
|
101
|
+
die(`spawn failed: ${error.message}`, 66);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
for (const signal of ["SIGINT", "SIGHUP", "SIGTERM"]) {
|
|
105
|
+
process.on(signal, () => die(`received ${signal}`, 128));
|
|
106
|
+
}
|
package/dist/protocol.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const MCP_PROTOCOL_VERSION = "2026-07-28";
|
|
2
2
|
export declare const MCP_SPECIFICATION_COMMIT = "5f5440bb26a62e2cf3440b92da5a667efa03b267";
|
|
3
3
|
export declare const MCP_TASKS_EXTENSION_ID = "io.modelcontextprotocol/tasks";
|
|
4
|
+
export declare const MCP_OAUTH_CLIENT_CREDENTIALS_EXTENSION_ID = "io.modelcontextprotocol/oauth-client-credentials";
|
|
4
5
|
export declare const MCP_TASKS_SPECIFICATION_COMMIT = "2c1425d9a288b9b1f489430fe1e00bb392b47e48";
|
|
5
6
|
export declare const MCP_CLIENT_VERSION = "2.0.0";
|
|
6
7
|
export declare const MCP_CONFORMANCE_VERSION = "0.2.0-alpha.11";
|
package/dist/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AACnF,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AACtE,eAAO,MAAM,8BAA8B,6CAA6C,CAAC;AACzF,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,eAAe,CAAC;AACjD,eAAO,MAAM,wBAAwB,6CAA6C,CAAC;AACnF,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AACtE,eAAO,MAAM,yCAAyC,qDAAqD,CAAC;AAC5G,eAAO,MAAM,8BAA8B,6CAA6C,CAAC;AACzF,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,uBAAuB,mBAAmB,CAAC"}
|
package/dist/protocol.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export const MCP_PROTOCOL_VERSION = "2026-07-28";
|
|
2
2
|
export const MCP_SPECIFICATION_COMMIT = "5f5440bb26a62e2cf3440b92da5a667efa03b267";
|
|
3
3
|
export const MCP_TASKS_EXTENSION_ID = "io.modelcontextprotocol/tasks";
|
|
4
|
+
export const MCP_OAUTH_CLIENT_CREDENTIALS_EXTENSION_ID = "io.modelcontextprotocol/oauth-client-credentials";
|
|
4
5
|
export const MCP_TASKS_SPECIFICATION_COMMIT = "2c1425d9a288b9b1f489430fe1e00bb392b47e48";
|
|
5
6
|
export const MCP_CLIENT_VERSION = "2.0.0";
|
|
6
7
|
export const MCP_CONFORMANCE_VERSION = "0.2.0-alpha.11";
|
package/dist/protocol.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,+BAA+B,CAAC;AACtE,MAAM,CAAC,MAAM,8BAA8B,GAAG,0CAA0C,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AACjD,MAAM,CAAC,MAAM,wBAAwB,GAAG,0CAA0C,CAAC;AACnF,MAAM,CAAC,MAAM,sBAAsB,GAAG,+BAA+B,CAAC;AACtE,MAAM,CAAC,MAAM,yCAAyC,GAAG,kDAAkD,CAAC;AAC5G,MAAM,CAAC,MAAM,8BAA8B,GAAG,0CAA0C,CAAC;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Current Model Context Protocol host module for Plurnk.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -50,13 +50,14 @@
|
|
|
50
50
|
"test": "npm run test:lint && npm run test:unit && npm run test:intg",
|
|
51
51
|
"build:clean": "rm -rf dist",
|
|
52
52
|
"build:dist": "tsc -p tsconfig.build.json",
|
|
53
|
-
"build": "
|
|
53
|
+
"build:assets": "node scripts/copy-assets.mjs",
|
|
54
|
+
"build": "npm run build:clean && npm run build:dist && npm run build:assets",
|
|
54
55
|
"prepack": "npm run build",
|
|
55
56
|
"prepublishOnly": "npm audit --audit-level=moderate && npm test"
|
|
56
57
|
},
|
|
57
58
|
"dependencies": {
|
|
58
59
|
"@modelcontextprotocol/client": "2.0.0",
|
|
59
|
-
"@plurnk/plurnk-contracts": "1.
|
|
60
|
+
"@plurnk/plurnk-contracts": "1.9.0"
|
|
60
61
|
},
|
|
61
62
|
"devDependencies": {
|
|
62
63
|
"@modelcontextprotocol/conformance": "0.2.0-alpha.11",
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
"zod": "4.4.3"
|
|
65
66
|
},
|
|
66
67
|
"peerDependencies": {
|
|
67
|
-
"@plurnk/plurnk-execs": "^1.
|
|
68
|
-
"@plurnk/plurnk-schemes": "^1.
|
|
68
|
+
"@plurnk/plurnk-execs": "^1.9.0",
|
|
69
|
+
"@plurnk/plurnk-schemes": "^1.9.0"
|
|
69
70
|
}
|
|
70
71
|
}
|