@plurnk/plurnk-execs-mcp 0.1.0 → 0.2.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/README.md +5 -5
- package/dist/Mcp.d.ts.map +1 -1
- package/dist/Mcp.js +7 -1
- package/dist/Mcp.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +42 -11
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/runtimes.d.ts +1 -0
- package/dist/runtimes.d.ts.map +1 -1
- package/dist/runtimes.js +16 -11
- package/dist/runtimes.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -49,20 +49,20 @@ PLURNK_MCP_FIGMA_ENV='{"FIGMA_API_KEY":"…"}'
|
|
|
49
49
|
## Calling tools
|
|
50
50
|
|
|
51
51
|
```
|
|
52
|
-
EXEC[<server>]:<tool_name> <json-arguments>:EXEC
|
|
52
|
+
<<EXEC[<server>]:<tool_name> <json-arguments>:EXEC
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
`<json-arguments>` is a single JSON object; omit it for a no-argument tool.
|
|
56
56
|
|
|
57
57
|
```
|
|
58
|
-
EXEC[github]:create_issue {"title":"Bug","body":"…"}:EXEC
|
|
59
|
-
EXEC[github]:list_repos:EXEC
|
|
58
|
+
<<EXEC[github]:create_issue {"title":"Bug","body":"…"}:EXEC
|
|
59
|
+
<<EXEC[github]:list_repos:EXEC
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
Run a tag with
|
|
62
|
+
Run a tag with `?` (or `help`, or an empty body) to write the server's live tool catalog — names, descriptions, input JSON schemas — to the `results` stream:
|
|
63
63
|
|
|
64
64
|
```
|
|
65
|
-
EXEC[github]
|
|
65
|
+
<<EXEC[github]:?:EXEC
|
|
66
66
|
```
|
|
67
67
|
|
|
68
68
|
## Output & gating
|
package/dist/Mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mcp.d.ts","sourceRoot":"","sources":["../src/Mcp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiC3G,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAI9C;AAUD,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,YAAY;IACzC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAEpD;IAKc,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAkB3C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAIzC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Mcp.d.ts","sourceRoot":"","sources":["../src/Mcp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAiC3G,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAI9C;AAUD,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,YAAY;IACzC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAEpD;IAKc,KAAK,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAkB3C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAIzC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;CAgEhG"}
|
package/dist/Mcp.js
CHANGED
|
@@ -2,7 +2,7 @@ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
|
2
2
|
import { StdioClientTransport, getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
3
3
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
4
4
|
import { BaseExecutor } from "@plurnk/plurnk-execs";
|
|
5
|
-
import { serverConfig } from "./config.js";
|
|
5
|
+
import { serverConfig, isInjected, installAllowed } from "./config.js";
|
|
6
6
|
const CLIENT_VERSION = "0.1.0";
|
|
7
7
|
// MCP connections are long-lived: open one Client per server, lazily, and reuse
|
|
8
8
|
// it across runs (the wasm `wabtPromise` singleton precedent). Keyed by tag
|
|
@@ -80,6 +80,12 @@ export default class Mcp extends BaseExecutor {
|
|
|
80
80
|
};
|
|
81
81
|
if (cfg === null)
|
|
82
82
|
return fail("mcp_not_configured", `MCP server '${runtime}' is not configured`);
|
|
83
|
+
// Defense in depth behind the consumer's route gate (#240): a runtime-injected
|
|
84
|
+
// server is honored only while PLURNK_MCP_INSTALL permits added tooling. An
|
|
85
|
+
// env-declared server is never gated (isInjected is false for it).
|
|
86
|
+
if (isInjected(runtime) && !installAllowed()) {
|
|
87
|
+
return fail("mcp_install_disabled", `MCP server '${runtime}' was added at runtime but PLURNK_MCP_INSTALL is off`, 501);
|
|
88
|
+
}
|
|
83
89
|
let client;
|
|
84
90
|
try {
|
|
85
91
|
client = await connect(runtime, cfg);
|
package/dist/Mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Mcp.js","sourceRoot":"","sources":["../src/Mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACxG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAqB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Mcp.js","sourceRoot":"","sources":["../src/Mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACxG,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAqB,MAAM,aAAa,CAAC;AAE1F,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,gFAAgF;AAChF,4EAA4E;AAC5E,iFAAiF;AACjF,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAC;AAEnD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,GAAiB,EAAmB,EAAE;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,GAAG,CAAC;IACd,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,IAAI,GAAG,KAAK,EAAE,GAAiB,EAAmB,EAAE;IACtD,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,KAAK,OAAO;QACvC,CAAC,CAAC,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,qBAAqB,EAAE,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;QACtH,CAAC,CAAC,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAI,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAChI,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IACjF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,+EAA+E;AAC/E,6EAA6E;AAC7E,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC1B,MAAM,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,KAAK,EAAE,CAAC;IAChB,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,GAAY,EAAU,EAAE,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAEzF,6EAA6E;AAC7E,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,iFAAiF;AACjF,2CAA2C;AAC3C,MAAM,CAAC,OAAO,OAAO,GAAI,SAAQ,YAAY;IACzC,IAAI,QAAQ;QACR,OAAO,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,EAAE,CAAC;IACzD,CAAC;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IACjE,KAAK,CAAC,KAAK;QAChB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,IAAI,CAAC,OAAO,oCAAoC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,oBAAoB,EAAE,CAAC;QACvJ,CAAC;QACD,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9E,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,KAAK,KAAK,CAAC,MAAM,QAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACjH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,IAAI,CAAC,OAAO,kBAAkB,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1F,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,kEAAkE;IAClE,mEAAmE;IACnE,6CAA6C;IACpC,MAAM,CAAC,OAAsB;QAClC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAY;QACnE,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,MAAM,GAAG,GAAG,EAAc,EAAE;YACrE,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACnD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC/B,OAAO,EAAE,MAAM,EAAE,CAAC;QACtB,CAAC,CAAC;QACF,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,oBAAoB,EAAE,eAAe,OAAO,qBAAqB,CAAC,CAAC;QACjG,+EAA+E;QAC/E,4EAA4E;QAC5E,mEAAmE;QACnE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,sBAAsB,EAAE,eAAe,OAAO,sDAAsD,EAAE,GAAG,CAAC,CAAC;QAC3H,CAAC;QAED,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACD,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAAC,CAAC;YAC/E,OAAO,IAAI,CAAC,iBAAiB,EAAE,QAAQ,OAAO,qBAAqB,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAE5B,qDAAqD;QACrD,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACjD,IAAI,CAAC;gBACD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBAChE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBAC5D,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC9B,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;oBAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;gBAAC,CAAC;gBAC/E,OAAO,IAAI,CAAC,iBAAiB,EAAE,sBAAsB,OAAO,aAAa,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzF,CAAC;QACL,CAAC;QAED,iEAAiE;QACjE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,QAAQ,GAA4B,EAAE,CAAC;QAC3C,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACjB,IAAI,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,OAAO,IAAI,CAAC,mBAAmB,EAAE,uBAAuB,IAAI,4BAA4B,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC7G,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACjG,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAC7D,gEAAgE;YAChE,qDAAqD;YACrD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC;YACxC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YACpD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;YAAC,CAAC;YAC/E,OAAO,IAAI,CAAC,gBAAgB,EAAE,SAAS,IAAI,SAAS,OAAO,aAAa,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxF,CAAC;IACL,CAAC;CACJ"}
|
package/dist/config.d.ts
CHANGED
|
@@ -7,6 +7,12 @@ export interface ServerConfig {
|
|
|
7
7
|
headers?: Record<string, string>;
|
|
8
8
|
}
|
|
9
9
|
export declare const installAllowed: (env?: NodeJS.ProcessEnv) => boolean;
|
|
10
|
+
export declare const registerServer: (name: string, config: ServerConfig) => void;
|
|
11
|
+
export declare const isInjected: (name: string, env?: NodeJS.ProcessEnv) => boolean;
|
|
12
|
+
export declare const parseTarget: (target: string, { env, headers }?: {
|
|
13
|
+
env?: Record<string, string>;
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
}) => ServerConfig;
|
|
10
16
|
export declare const serverNames: (env?: NodeJS.ProcessEnv) => string[];
|
|
11
17
|
export declare const serverConfig: (name: string, env?: NodeJS.ProcessEnv) => ServerConfig | null;
|
|
12
18
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAmDD,eAAO,MAAM,cAAc,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,OAGrE,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA+BA,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAmDD,eAAO,MAAM,cAAc,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,OAGrE,CAAC;AAWF,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,QAAQ,YAAY,KAAG,IAInE,CAAC;AAMF,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,MAAK,MAAM,CAAC,UAAwB,KAAG,OAG/E,CAAC;AAKF,eAAO,MAAM,WAAW,GACpB,QAAQ,MAAM,EACd,mBAAkB;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAO,KAC1F,YAIF,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,MAAK,MAAM,CAAC,UAAwB,KAAG,MAAM,EACE,CAAC;AAI5E,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,MAAK,MAAM,CAAC,UAAwB,KAAG,YAAY,GAAG,IAWhG,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -82,21 +82,52 @@ export const installAllowed = (env = process.env) => {
|
|
|
82
82
|
const gate = env.PLURNK_MCP_INSTALL;
|
|
83
83
|
return !(gate === undefined || gate === "" || gate === "0");
|
|
84
84
|
};
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
//
|
|
89
|
-
//
|
|
85
|
+
// Runtime-injected servers — the `/mcp` hotload route (plurnk-execs#13). The
|
|
86
|
+
// consumer gates registration with installAllowed() then calls registerServer();
|
|
87
|
+
// the injected set supplements env discovery so the executor's run()/probe()
|
|
88
|
+
// resolve the new tag. Env-declared servers always take precedence (the locked
|
|
89
|
+
// #240 rule: they're operator-vetted, never shadowed by a runtime add).
|
|
90
|
+
const injected = new Map();
|
|
91
|
+
// Register a runtime-injected server under a tag. The consumer's route MUST gate
|
|
92
|
+
// this behind installAllowed(); the executor re-checks at connect (isInjected).
|
|
93
|
+
export const registerServer = (name, config) => {
|
|
94
|
+
const key = name.toLowerCase();
|
|
95
|
+
if (CONTROL_KEYS.has(key))
|
|
96
|
+
throw new Error(`"${key}" is a reserved control key, not a server name`);
|
|
97
|
+
injected.set(key, config);
|
|
98
|
+
};
|
|
99
|
+
// Whether `name` resolves to a runtime-injected server that env does NOT also
|
|
100
|
+
// claim — the executor gates exactly these on installAllowed() at connect
|
|
101
|
+
// (defense in depth behind the consumer's route gate). An env-declared server is
|
|
102
|
+
// never gated, even if a name was also injected, since env always wins.
|
|
103
|
+
export const isInjected = (name, env = process.env) => {
|
|
104
|
+
const key = name.toLowerCase();
|
|
105
|
+
return !parse(env).targets.has(key) && injected.has(key);
|
|
106
|
+
};
|
|
107
|
+
// Parse a server target string into transport config. An http(s) URL → http;
|
|
108
|
+
// anything else → a stdio command line. Shared by env resolution and the hotload
|
|
109
|
+
// route, which turns an operator-supplied `<address>` into a ServerConfig.
|
|
110
|
+
export const parseTarget = (target, { env, headers } = {}) => {
|
|
111
|
+
if (/^https?:\/\//i.test(target))
|
|
112
|
+
return { transport: "http", url: target, headers };
|
|
113
|
+
const [command, ...args] = target.split(/\s+/);
|
|
114
|
+
return { transport: "stdio", command, args, env };
|
|
115
|
+
};
|
|
116
|
+
// The configured server names (= the tags), case-folded and sorted: env-declared
|
|
117
|
+
// unioned with runtime-injected. Empty when none are set.
|
|
118
|
+
export const serverNames = (env = process.env) => [...new Set([...parse(env).targets.keys(), ...injected.keys()])].sort();
|
|
119
|
+
// Resolve a server's transport config. Env-declared wins; a runtime-injected
|
|
120
|
+
// server resolves only when no env target claims the name. null when neither does.
|
|
90
121
|
export const serverConfig = (name, env = process.env) => {
|
|
91
122
|
const { targets, envs, headers } = parse(env);
|
|
92
123
|
const key = name.toLowerCase();
|
|
93
124
|
const target = targets.get(key);
|
|
94
|
-
if (target
|
|
95
|
-
return
|
|
96
|
-
|
|
97
|
-
|
|
125
|
+
if (target !== undefined) {
|
|
126
|
+
return parseTarget(target, {
|
|
127
|
+
env: jsonRecord(envs.get(key), `${PREFIX}${key.toUpperCase()}_ENV`),
|
|
128
|
+
headers: jsonRecord(headers.get(key), `${PREFIX}${key.toUpperCase()}_HEADERS`),
|
|
129
|
+
});
|
|
98
130
|
}
|
|
99
|
-
|
|
100
|
-
return { transport: "stdio", command, args, env: jsonRecord(envs.get(key), `${PREFIX}${key.toUpperCase()}_ENV`) };
|
|
131
|
+
return injected.get(key) ?? null;
|
|
101
132
|
};
|
|
102
133
|
//# sourceMappingURL=config.js.map
|
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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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { default as Mcp } from "./Mcp.ts";
|
|
2
2
|
export { default } from "./Mcp.ts";
|
|
3
|
-
export {
|
|
3
|
+
export { closeAll } from "./Mcp.ts";
|
|
4
|
+
export { runtimes, runtimeDecl } from "./runtimes.ts";
|
|
5
|
+
export { installAllowed, registerServer, isInjected, parseTarget, serverConfig, serverNames, } from "./config.ts";
|
|
6
|
+
export type { ServerConfig } from "./config.ts";
|
|
4
7
|
//# 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,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,EACH,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,GACd,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { default as Mcp } from "./Mcp.js";
|
|
2
2
|
export { default } from "./Mcp.js";
|
|
3
|
-
export {
|
|
3
|
+
export { closeAll } from "./Mcp.js";
|
|
4
|
+
export { runtimes, runtimeDecl } from "./runtimes.js";
|
|
5
|
+
// Runtime surface for the consumer's `/mcp` hotload route + boot config:
|
|
6
|
+
export { installAllowed, registerServer, isInjected, parseTarget, serverConfig, serverNames, } from "./config.js";
|
|
4
7
|
//# 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,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtD,yEAAyE;AACzE,OAAO,EACH,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,GACd,MAAM,aAAa,CAAC"}
|
package/dist/runtimes.d.ts
CHANGED
package/dist/runtimes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimes.d.ts","sourceRoot":"","sources":["../src/runtimes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAexD,wBAAgB,QAAQ,IAAI,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"runtimes.d.ts","sourceRoot":"","sources":["../src/runtimes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAexD,wBAAgB,QAAQ,IAAI,WAAW,EAAE,CAExC;AAMD,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,KAAG,WAKzC,CAAC"}
|
package/dist/runtimes.js
CHANGED
|
@@ -11,13 +11,18 @@ const GLYPH = "🔌";
|
|
|
11
11
|
// discovery stays cheap and offline; reachability and the live tool catalog are
|
|
12
12
|
// probe()/run()'s job at boot/call.
|
|
13
13
|
export function runtimes() {
|
|
14
|
-
return serverNames().map(
|
|
15
|
-
name,
|
|
16
|
-
glyph: GLYPH,
|
|
17
|
-
example: `EXEC[${name}]:tool_name {"arg":"value"}:EXEC`,
|
|
18
|
-
documentation: doc(name),
|
|
19
|
-
}));
|
|
14
|
+
return serverNames().map(runtimeDecl);
|
|
20
15
|
}
|
|
16
|
+
// The decl for one server tag. Exported so the `/mcp` hotload route can mint the
|
|
17
|
+
// same decl for a runtime-injected server that boot discovery mints for an
|
|
18
|
+
// env-declared one — example is the server-agnostic `?` (lists tools, since no
|
|
19
|
+
// real tool name is universally correct), the full canonical `<<`-delimited op.
|
|
20
|
+
export const runtimeDecl = (name) => ({
|
|
21
|
+
name,
|
|
22
|
+
glyph: GLYPH,
|
|
23
|
+
example: `<<EXEC[${name}]:?:EXEC`,
|
|
24
|
+
documentation: doc(name),
|
|
25
|
+
});
|
|
21
26
|
// Per-tag documentation served on demand. Static usage — the *live* tool
|
|
22
27
|
// catalog is fetched by running the tag with an empty (or `?`) body, since
|
|
23
28
|
// listing tools requires a connection we deliberately don't open at scan time.
|
|
@@ -29,24 +34,24 @@ is READ back slice-wise — never dumped inline.
|
|
|
29
34
|
## Calling a tool
|
|
30
35
|
|
|
31
36
|
\`\`\`
|
|
32
|
-
EXEC[${name}]:<tool_name> <json-arguments>:EXEC
|
|
37
|
+
<<EXEC[${name}]:<tool_name> <json-arguments>:EXEC
|
|
33
38
|
\`\`\`
|
|
34
39
|
|
|
35
40
|
\`<json-arguments>\` is a single JSON object (omit it for a no-argument tool):
|
|
36
41
|
|
|
37
42
|
\`\`\`
|
|
38
|
-
EXEC[${name}]:create_issue {"title":"Bug","body":"…"}:EXEC
|
|
39
|
-
EXEC[${name}]:list_repos:EXEC
|
|
43
|
+
<<EXEC[${name}]:create_issue {"title":"Bug","body":"…"}:EXEC
|
|
44
|
+
<<EXEC[${name}]:list_repos:EXEC
|
|
40
45
|
\`\`\`
|
|
41
46
|
|
|
42
47
|
## Discovering tools
|
|
43
48
|
|
|
44
|
-
Run the tag with
|
|
49
|
+
Run the tag with \`?\` (or \`help\`, or an empty body) to write the server's live
|
|
45
50
|
tool catalog — names, descriptions, and input JSON schemas — to the results
|
|
46
51
|
stream:
|
|
47
52
|
|
|
48
53
|
\`\`\`
|
|
49
|
-
EXEC[${name}]
|
|
54
|
+
<<EXEC[${name}]:?:EXEC
|
|
50
55
|
\`\`\`
|
|
51
56
|
|
|
52
57
|
## Output & gating
|
package/dist/runtimes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtimes.js","sourceRoot":"","sources":["../src/runtimes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,KAAK,GAAG,IAAI,CAAC;AAEnB,4EAA4E;AAC5E,gFAAgF;AAChF,iFAAiF;AACjF,mDAAmD;AACnD,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAChF,oCAAoC;AACpC,MAAM,UAAU,QAAQ;IACpB,OAAO,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"runtimes.js","sourceRoot":"","sources":["../src/runtimes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,KAAK,GAAG,IAAI,CAAC;AAEnB,4EAA4E;AAC5E,gFAAgF;AAChF,iFAAiF;AACjF,mDAAmD;AACnD,EAAE;AACF,iFAAiF;AACjF,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAChF,oCAAoC;AACpC,MAAM,UAAU,QAAQ;IACpB,OAAO,WAAW,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AAC1C,CAAC;AAED,iFAAiF;AACjF,2EAA2E;AAC3E,+EAA+E;AAC/E,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAe,EAAE,CAAC,CAAC;IACvD,IAAI;IACJ,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,UAAU,IAAI,UAAU;IACjC,aAAa,EAAE,GAAG,CAAC,IAAI,CAAC;CAC3B,CAAC,CAAC;AAEH,yEAAyE;AACzE,2EAA2E;AAC3E,+EAA+E;AAC/E,MAAM,GAAG,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,IAAI;;kEAEmB,IAAI;;;;;;SAM7D,IAAI;;;;;;SAMJ,IAAI;SACJ,IAAI;;;;;;;;;;SAUJ,IAAI;;;;;;;;CAQZ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plurnk/plurnk-execs-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "MCP-bridge runtime executor for plurnk-service's exec scheme — exposes each configured MCP server as its own EXEC tag, its tools called from the body, output contained behind the server's address.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"plurnk",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"url": "git+https://github.com/plurnk/plurnk-execs-mcp.git"
|
|
20
20
|
},
|
|
21
21
|
"engines": {
|
|
22
|
-
"node": ">=
|
|
22
|
+
"node": ">=26"
|
|
23
23
|
},
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"author": "@wikitopian",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@modelcontextprotocol/sdk": "^1.29.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@types/node": "^
|
|
58
|
+
"@types/node": "^26.0.0",
|
|
59
59
|
"typescript": "^6.0.3",
|
|
60
60
|
"@plurnk/plurnk-execs": "^0.4.16"
|
|
61
61
|
},
|