@wunderio/wdrmcp 0.1.10 → 0.1.11
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 +15 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +29 -1
- package/dist/config.js.map +1 -1
- package/dist/executors/command.d.ts +4 -0
- package/dist/executors/command.d.ts.map +1 -1
- package/dist/executors/command.js +59 -14
- package/dist/executors/command.js.map +1 -1
- package/dist/executors/mcp-proxy.d.ts +1 -1
- package/dist/executors/mcp-proxy.d.ts.map +1 -1
- package/dist/executors/mcp-proxy.js +3 -1
- package/dist/executors/mcp-proxy.js.map +1 -1
- package/dist/executors/ssh.d.ts +6 -1
- package/dist/executors/ssh.d.ts.map +1 -1
- package/dist/executors/ssh.js +36 -20
- package/dist/executors/ssh.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +4 -2
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +8 -3
- package/dist/logger.js.map +1 -1
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +136 -17
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +15 -7
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -5
package/README.md
CHANGED
|
@@ -40,6 +40,7 @@ wdrmcp --tools-config /path/to/tools-config [options]
|
|
|
40
40
|
| `--tools-config <path>` | Path to YAML tool config directory | *(required)* |
|
|
41
41
|
| `--log-level <level>` | Log level (debug, info, warn, error) | `info` |
|
|
42
42
|
| `--log-file <path>` | Log file path | `/tmp/wdrmcp.log` |
|
|
43
|
+
| `--strict-host-key-checking` | Enforce SSH host key verification | `false` |
|
|
43
44
|
|
|
44
45
|
**Environment variables:**
|
|
45
46
|
|
|
@@ -48,6 +49,7 @@ wdrmcp --tools-config /path/to/tools-config [options]
|
|
|
48
49
|
| `DDEV_PROJECT` | DDEV project name | `default-project` |
|
|
49
50
|
| `HOST_PROJECT_ROOT` | Host filesystem project root | `/workspace` |
|
|
50
51
|
| `CONTAINER_PROJECT_ROOT` | Container filesystem project root | `/var/www/html` |
|
|
52
|
+
| `SSH_STRICT_HOST_KEY_CHECKING` | Enforce SSH host key verification (`true`/`false`) | `false` |
|
|
51
53
|
|
|
52
54
|
### VS Code / GitHub Copilot Configuration
|
|
53
55
|
|
|
@@ -71,7 +73,7 @@ Tools are defined in YAML files within the tools-config directory. Each file mus
|
|
|
71
73
|
|
|
72
74
|
### Command Tool
|
|
73
75
|
|
|
74
|
-
Executes shell commands
|
|
76
|
+
Executes shell commands over SSH:
|
|
75
77
|
|
|
76
78
|
```yaml
|
|
77
79
|
tools:
|
|
@@ -80,8 +82,9 @@ tools:
|
|
|
80
82
|
description: "What this tool does"
|
|
81
83
|
type: command
|
|
82
84
|
command_template: "my-command {arg1} {arg2}"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
ssh_target: "web"
|
|
86
|
+
ssh_user: "${DDEV_SSH_USER}"
|
|
87
|
+
working_dir: "/var/www/html"
|
|
85
88
|
shell: "/bin/bash"
|
|
86
89
|
default_args:
|
|
87
90
|
arg2: "default-value"
|
|
@@ -91,6 +94,7 @@ tools:
|
|
|
91
94
|
validation_rules:
|
|
92
95
|
- pattern: "dangerous-pattern"
|
|
93
96
|
message: "This pattern is not allowed"
|
|
97
|
+
max_arg_length: 4096
|
|
94
98
|
input_schema:
|
|
95
99
|
type: object
|
|
96
100
|
properties:
|
|
@@ -115,8 +119,7 @@ tools:
|
|
|
115
119
|
expose_remote_tools: true
|
|
116
120
|
tool_prefix: "remote_"
|
|
117
121
|
timeout: 30
|
|
118
|
-
auth_token: "
|
|
119
|
-
verify_ssl: true
|
|
122
|
+
auth_token: "${REMOTE_MCP_TOKEN}"
|
|
120
123
|
```
|
|
121
124
|
|
|
122
125
|
## Architecture
|
|
@@ -139,3 +142,10 @@ src/
|
|
|
139
142
|
## License
|
|
140
143
|
|
|
141
144
|
MIT
|
|
145
|
+
|
|
146
|
+
## Security Notes
|
|
147
|
+
|
|
148
|
+
- Argument placeholders in `command_template` are shell-escaped per argument before execution.
|
|
149
|
+
- `disallowed_commands` are matched against both argument values and rendered command strings.
|
|
150
|
+
- Host key verification is configurable; set `--strict-host-key-checking` (or `SSH_STRICT_HOST_KEY_CHECKING=true`) for production-like environments.
|
|
151
|
+
- Use environment placeholders for credentials (`${VAR}`) instead of literal secrets in YAML.
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAwD/C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,CA2EtD"}
|
package/dist/config.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* CLI argument parsing and configuration loading.
|
|
3
3
|
*/
|
|
4
4
|
import { existsSync, readFileSync } from "node:fs";
|
|
5
|
-
|
|
5
|
+
import { resolve } from "node:path";
|
|
6
|
+
import dotenv from "dotenv";
|
|
7
|
+
const DEFAULT_SSH_USER_FILE = "/workspace/.ddev/.agents/.runtime.env";
|
|
6
8
|
function readSshUserFromFile(filePath) {
|
|
7
9
|
if (!existsSync(filePath)) {
|
|
8
10
|
return undefined;
|
|
@@ -17,6 +19,16 @@ function readSshUserFromFile(filePath) {
|
|
|
17
19
|
}
|
|
18
20
|
return undefined;
|
|
19
21
|
}
|
|
22
|
+
function loadEnvFileIfExists(filePath) {
|
|
23
|
+
if (!existsSync(filePath)) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
dotenv.config({ path: filePath, override: false });
|
|
27
|
+
}
|
|
28
|
+
function loadProjectEnvFromToolsConfigPath(toolsConfigPath) {
|
|
29
|
+
const toolsConfigEnv = resolve(toolsConfigPath, ".env");
|
|
30
|
+
loadEnvFileIfExists(toolsConfigEnv);
|
|
31
|
+
}
|
|
20
32
|
function printUsage() {
|
|
21
33
|
console.error(`
|
|
22
34
|
Usage: wdrmcp --tools-config <path> [options]
|
|
@@ -25,6 +37,8 @@ Options:
|
|
|
25
37
|
--tools-config <path> Path to directory containing YAML tool configuration files (required)
|
|
26
38
|
--log-level <level> Log level: debug, info, warn, error (default: info)
|
|
27
39
|
--log-file <path> Path to log file (default: /tmp/wdrmcp.log)
|
|
40
|
+
--strict-host-key-checking Enforce SSH host key verification (default: false)
|
|
41
|
+
--verbose Enable extensive logging (full outputs, command details, debug info)
|
|
28
42
|
--help Show this help message
|
|
29
43
|
|
|
30
44
|
Environment variables:
|
|
@@ -34,6 +48,7 @@ Environment variables:
|
|
|
34
48
|
DDEV_SSH_USER SSH user for container connections (preferred)
|
|
35
49
|
DDEV_SSH_USER_FILE Path to a file containing SSH user (fallback)
|
|
36
50
|
SSH_USER SSH user for container connections (fallback, default: $USER)
|
|
51
|
+
SSH_STRICT_HOST_KEY_CHECKING true/false toggle for SSH host key checking
|
|
37
52
|
`);
|
|
38
53
|
}
|
|
39
54
|
export function parseArgs(argv) {
|
|
@@ -41,6 +56,8 @@ export function parseArgs(argv) {
|
|
|
41
56
|
let toolsConfigPath;
|
|
42
57
|
let logLevel = "info";
|
|
43
58
|
let logFile = "/tmp/wdrmcp.log";
|
|
59
|
+
let verboseLogging = false;
|
|
60
|
+
let strictHostKeyChecking = (process.env.SSH_STRICT_HOST_KEY_CHECKING ?? "false").toLowerCase() === "true";
|
|
44
61
|
for (let i = 0; i < args.length; i++) {
|
|
45
62
|
switch (args[i]) {
|
|
46
63
|
case "--tools-config":
|
|
@@ -52,6 +69,12 @@ export function parseArgs(argv) {
|
|
|
52
69
|
case "--log-file":
|
|
53
70
|
logFile = args[++i];
|
|
54
71
|
break;
|
|
72
|
+
case "--verbose":
|
|
73
|
+
verboseLogging = true;
|
|
74
|
+
break;
|
|
75
|
+
case "--strict-host-key-checking":
|
|
76
|
+
strictHostKeyChecking = true;
|
|
77
|
+
break;
|
|
55
78
|
case "--help":
|
|
56
79
|
printUsage();
|
|
57
80
|
process.exit(0);
|
|
@@ -66,6 +89,9 @@ export function parseArgs(argv) {
|
|
|
66
89
|
printUsage();
|
|
67
90
|
process.exit(1);
|
|
68
91
|
}
|
|
92
|
+
// Load project .env early so placeholders in tools config can resolve
|
|
93
|
+
// without requiring shell-level exports.
|
|
94
|
+
loadProjectEnvFromToolsConfigPath(toolsConfigPath);
|
|
69
95
|
// SSH user resolution strategy:
|
|
70
96
|
// 1. Primary: DDEV_SSH_USER env var (explicit override)
|
|
71
97
|
// 2. Secondary: Read from .env file (auto-detected in container)
|
|
@@ -83,9 +109,11 @@ export function parseArgs(argv) {
|
|
|
83
109
|
ddevProject: process.env.DDEV_PROJECT ?? "default-project",
|
|
84
110
|
logLevel,
|
|
85
111
|
logFile,
|
|
112
|
+
verboseLogging,
|
|
86
113
|
hostProjectRoot: process.env.HOST_PROJECT_ROOT ?? "/workspace",
|
|
87
114
|
containerProjectRoot: process.env.CONTAINER_PROJECT_ROOT ?? "/var/www/html",
|
|
88
115
|
sshUser,
|
|
116
|
+
strictHostKeyChecking,
|
|
89
117
|
};
|
|
90
118
|
}
|
|
91
119
|
//# 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":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ export interface CommandExecutorOptions {
|
|
|
13
13
|
defaultArgs?: Record<string, string>;
|
|
14
14
|
disallowedCommands?: string[];
|
|
15
15
|
validationRules?: ValidationRule[];
|
|
16
|
+
maxArgLength?: number;
|
|
16
17
|
}
|
|
17
18
|
export declare class CommandToolExecutor implements ToolExecutor {
|
|
18
19
|
private readonly commandTemplate;
|
|
@@ -24,10 +25,13 @@ export declare class CommandToolExecutor implements ToolExecutor {
|
|
|
24
25
|
private readonly defaultArgs;
|
|
25
26
|
private readonly disallowedCommands;
|
|
26
27
|
private readonly validationRules;
|
|
28
|
+
private readonly maxArgLength;
|
|
27
29
|
constructor(options: CommandExecutorOptions);
|
|
28
30
|
execute(args: Record<string, unknown>): Promise<ToolExecutionResult>;
|
|
29
31
|
validateArguments(args: Record<string, unknown>): void;
|
|
30
32
|
/** Check validation rules against a value. Returns error message or null. */
|
|
31
33
|
private checkRules;
|
|
34
|
+
private escapeShellArg;
|
|
35
|
+
private matchesDisallowed;
|
|
32
36
|
}
|
|
33
37
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExG,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAExG,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,mBAAoB,YAAW,YAAY;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAc;IACjD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,EAAE,sBAAsB;IAarC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAkF1E,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IA6BtD,6EAA6E;IAC7E,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;CAmB1B"}
|
|
@@ -13,6 +13,7 @@ export class CommandToolExecutor {
|
|
|
13
13
|
defaultArgs;
|
|
14
14
|
disallowedCommands;
|
|
15
15
|
validationRules;
|
|
16
|
+
maxArgLength;
|
|
16
17
|
constructor(options) {
|
|
17
18
|
this.commandTemplate = options.commandTemplate;
|
|
18
19
|
this.host = options.host;
|
|
@@ -23,28 +24,37 @@ export class CommandToolExecutor {
|
|
|
23
24
|
this.defaultArgs = options.defaultArgs ?? {};
|
|
24
25
|
this.disallowedCommands = new Set(options.disallowedCommands ?? []);
|
|
25
26
|
this.validationRules = options.validationRules ?? [];
|
|
27
|
+
this.maxArgLength = options.maxArgLength ?? 4096;
|
|
26
28
|
}
|
|
27
29
|
async execute(args) {
|
|
28
30
|
const log = getLogger();
|
|
29
31
|
const startTime = Date.now();
|
|
30
32
|
// Merge with defaults.
|
|
31
33
|
const mergedArgs = { ...this.defaultArgs, ...args };
|
|
32
|
-
log.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
if (log.isVerbose()) {
|
|
35
|
+
log.debug(`Executing with args:`, mergedArgs);
|
|
36
|
+
}
|
|
37
|
+
// Check disallowed patterns against all provided string arguments.
|
|
38
|
+
for (const value of Object.values(mergedArgs)) {
|
|
39
|
+
if (typeof value === "string" && this.matchesDisallowed(value)) {
|
|
40
|
+
log.warn(`Blocked disallowed command in arguments`);
|
|
41
|
+
return { content: "Error: Command contains blocked pattern", isError: true };
|
|
42
|
+
}
|
|
37
43
|
}
|
|
38
44
|
// Substitute arguments into template.
|
|
39
45
|
let cmdStr;
|
|
40
46
|
try {
|
|
41
|
-
log.
|
|
47
|
+
if (log.isVerbose()) {
|
|
48
|
+
log.debug(`Command template: ${this.commandTemplate}`);
|
|
49
|
+
}
|
|
42
50
|
cmdStr = this.commandTemplate.replace(/\{(\w+)\}/g, (_match, key) => {
|
|
43
51
|
if (key in mergedArgs)
|
|
44
|
-
return String(mergedArgs[key]);
|
|
52
|
+
return this.escapeShellArg(String(mergedArgs[key]));
|
|
45
53
|
throw new Error(`Missing required argument: ${key}`);
|
|
46
54
|
});
|
|
47
|
-
log.
|
|
55
|
+
if (log.isVerbose()) {
|
|
56
|
+
log.debug(`Rendered command: ${cmdStr}`);
|
|
57
|
+
}
|
|
48
58
|
}
|
|
49
59
|
catch (e) {
|
|
50
60
|
log.warn(`Argument substitution failed: ${e.message}`);
|
|
@@ -56,6 +66,10 @@ export class CommandToolExecutor {
|
|
|
56
66
|
log.warn(`Validation failed: ${ruleError}`);
|
|
57
67
|
return { content: `Validation error: ${ruleError}`, isError: true };
|
|
58
68
|
}
|
|
69
|
+
if (this.matchesDisallowed(cmdStr)) {
|
|
70
|
+
log.warn(`Blocked disallowed command in rendered template`);
|
|
71
|
+
return { content: "Error: Command contains blocked pattern", isError: true };
|
|
72
|
+
}
|
|
59
73
|
// Execute via injected executor (SSH or other).
|
|
60
74
|
try {
|
|
61
75
|
log.info(`EXEC: ${this.host} via ${this.executor.constructor.name}, shell: ${this.shell}, workdir: ${this.workingDir || "default"}`);
|
|
@@ -79,18 +93,29 @@ export class CommandToolExecutor {
|
|
|
79
93
|
const duration = Date.now() - startTime;
|
|
80
94
|
const errorMsg = e.message;
|
|
81
95
|
log.error(`EXEC FAILED: ${this.host} (${duration}ms), error: ${errorMsg}`);
|
|
82
|
-
log.
|
|
96
|
+
if (log.isVerbose()) {
|
|
97
|
+
log.debug(`Failed command: ${cmdStr}`);
|
|
98
|
+
}
|
|
83
99
|
return {
|
|
84
|
-
content: `Command failed: ${
|
|
100
|
+
content: `Command failed: ${errorMsg}`,
|
|
85
101
|
isError: true
|
|
86
102
|
};
|
|
87
103
|
}
|
|
88
104
|
}
|
|
89
105
|
validateArguments(args) {
|
|
90
|
-
// Check validation rules against
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
106
|
+
// Check validation rules and max-length against each string argument value.
|
|
107
|
+
for (const [key, value] of Object.entries(args)) {
|
|
108
|
+
if (typeof value !== "string") {
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (value.length > this.maxArgLength) {
|
|
112
|
+
throw new Error(`Argument '${key}' exceeds max length of ${this.maxArgLength}`);
|
|
113
|
+
}
|
|
114
|
+
const ruleError = this.checkRules(value);
|
|
115
|
+
if (ruleError) {
|
|
116
|
+
throw new Error(ruleError);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
94
119
|
// Verify required placeholders are provided.
|
|
95
120
|
const placeholders = new Set([...this.commandTemplate.matchAll(/\{(\w+)\}/g)].map((m) => m[1]));
|
|
96
121
|
const provided = new Set([...Object.keys(this.defaultArgs), ...Object.keys(args)]);
|
|
@@ -108,5 +133,25 @@ export class CommandToolExecutor {
|
|
|
108
133
|
}
|
|
109
134
|
return null;
|
|
110
135
|
}
|
|
136
|
+
escapeShellArg(value) {
|
|
137
|
+
return `'${value.replace(/'/g, `'"'"'`)}'`;
|
|
138
|
+
}
|
|
139
|
+
matchesDisallowed(value) {
|
|
140
|
+
for (const disallowed of this.disallowedCommands) {
|
|
141
|
+
if (!disallowed) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const trimmed = disallowed.trim();
|
|
145
|
+
if (!trimmed) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const escaped = trimmed.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
149
|
+
const pattern = new RegExp(`(?:^|[\\s;&|()])${escaped}(?:$|[\\s;&|()])`, "i");
|
|
150
|
+
if (pattern.test(value)) {
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
111
156
|
}
|
|
112
157
|
//# sourceMappingURL=command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/executors/command.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAgBzC,MAAM,OAAO,mBAAmB;IACb,eAAe,CAAS;IACxB,IAAI,CAAS;IACb,QAAQ,CAAoB;IAC5B,OAAO,CAAU;IACjB,KAAK,CAAS;IACd,UAAU,CAAU;IACpB,WAAW,CAAyB;IACpC,kBAAkB,CAAc;IAChC,eAAe,CAAmB;IAClC,YAAY,CAAS;IAEtC,YAAY,OAA+B;QACzC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,uBAAuB;QACvB,MAAM,UAAU,GAA4B,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;QAC7E,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC;QAED,mEAAmE;QACnE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/D,GAAG,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;gBACpD,OAAO,EAAE,OAAO,EAAE,yCAAyC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAClE,IAAI,GAAG,IAAI,UAAU;oBAAE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,CAAC,iCAAkC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,OAAO,EAAE,OAAO,EAAE,UAAW,CAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;QAED,2CAA2C;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;YAC5C,OAAO,EAAE,OAAO,EAAE,qBAAqB,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;YAC5D,OAAO,EAAE,OAAO,EAAE,yCAAyC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,YAAY,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;YACrI,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,IAAI,CAAC,OAAO;gBAClB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,KAAK,QAAQ,KAAK,CAAC,CAAC;YAEvD,wCAAwC;YACxC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,OAAO,EAAE,4CAA4C,EAAE,CAAC;YACnE,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACxC,MAAM,QAAQ,GAAI,CAAW,CAAC,OAAO,CAAC;YACtC,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,KAAK,QAAQ,eAAe,QAAQ,EAAE,CAAC,CAAC;YAC3E,IAAI,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC;gBACpB,GAAG,CAAC,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;YACzC,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,mBAAmB,QAAQ,EAAE;gBACtC,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,IAA6B;QAC7C,4EAA4E;QAC5E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,2BAA2B,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAClF,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,6CAA6C;QAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAClE,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,OAAO,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAElE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,6EAA6E;IACrE,UAAU,CAAC,KAAa;QAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACxC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzD,OAAO,IAAI,CAAC,OAAO,IAAI,kCAAkC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1E,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc,CAAC,KAAa;QAClC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;IAC7C,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,mBAAmB,OAAO,kBAAkB,EAAE,GAAG,CAAC,CAAC;YAC9E,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -20,13 +20,13 @@ export interface McpProxyOptions {
|
|
|
20
20
|
authPassword?: string;
|
|
21
21
|
authToken?: string;
|
|
22
22
|
authTokenBasic?: boolean;
|
|
23
|
-
verifySsl?: boolean;
|
|
24
23
|
}
|
|
25
24
|
export declare class McpProxyExecutor implements ToolExecutor {
|
|
26
25
|
private readonly serverUrl;
|
|
27
26
|
private readonly forwardArgs;
|
|
28
27
|
private readonly timeout;
|
|
29
28
|
private readonly headers;
|
|
29
|
+
private requestId;
|
|
30
30
|
constructor(options: McpProxyOptions);
|
|
31
31
|
/** Fetch available tools from the remote MCP server via tools/list. */
|
|
32
32
|
fetchRemoteTools(): Promise<RemoteToolDefinition[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../src/executors/mcp-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErE,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../src/executors/mcp-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAErE,wDAAwD;AACxD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,gBAAiB,YAAW,YAAY;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,SAAS,CAAK;gBAEV,OAAO,EAAE,eAAe;IAqBpC,uEAAuE;IACjE,gBAAgB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA2BzD,gDAAgD;IAC1C,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1E;;;OAGG;IACG,QAAQ,CACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC;IA0B/B,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIvD,oDAAoD;YACtC,GAAG;IAqBjB,4DAA4D;IAC5D,OAAO,CAAC,aAAa;CA2CtB;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,YAAW,YAAY;IAExD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,KAAK,EAAE,gBAAgB,EACvB,cAAc,EAAE,MAAM;IAGnC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAI1E,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGxD"}
|
|
@@ -11,6 +11,7 @@ export class McpProxyExecutor {
|
|
|
11
11
|
forwardArgs;
|
|
12
12
|
timeout;
|
|
13
13
|
headers;
|
|
14
|
+
requestId = 1;
|
|
14
15
|
constructor(options) {
|
|
15
16
|
this.serverUrl = options.serverUrl;
|
|
16
17
|
this.forwardArgs = options.forwardArgs ?? true;
|
|
@@ -95,11 +96,12 @@ export class McpProxyExecutor {
|
|
|
95
96
|
async rpc(method, params) {
|
|
96
97
|
const controller = new AbortController();
|
|
97
98
|
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
99
|
+
const id = this.requestId++;
|
|
98
100
|
try {
|
|
99
101
|
const response = await fetch(this.serverUrl, {
|
|
100
102
|
method: "POST",
|
|
101
103
|
headers: this.headers,
|
|
102
|
-
body: JSON.stringify({ jsonrpc: "2.0", method, params, id
|
|
104
|
+
body: JSON.stringify({ jsonrpc: "2.0", method, params, id }),
|
|
103
105
|
signal: controller.signal,
|
|
104
106
|
});
|
|
105
107
|
if (!response.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-proxy.js","sourceRoot":"","sources":["../../src/executors/mcp-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-proxy.js","sourceRoot":"","sources":["../../src/executors/mcp-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAoBzC,MAAM,OAAO,gBAAgB;IACV,SAAS,CAAS;IAClB,WAAW,CAAU;IACrB,OAAO,CAAS;IAChB,OAAO,CAAyB;IACzC,SAAS,GAAG,CAAC,CAAC;IAEtB,YAAY,OAAwB;QAClC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAEtD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAClE,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,OAAO,EAAE,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,OAAO,CAAC,SAAS,EAAE,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CACzB,GAAG,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAClD,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,SAAS,OAAO,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,KAAK,CAAC,gBAAgB;QACpB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,8BAA8B,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAEhD,IAAI,KAA6B,CAAC;YAClC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1B,KAAK,GAAG,MAAM,CAAC;YACjB,CAAC;iBAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACzD,MAAM,CAAC,GAAG,MAAiC,CAAC;gBAC5C,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,IAAK,CAAC,CAAC,MAAkC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC1E,KAAK,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAA2B,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC9D,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CACZ,IAA6B,EAC7B,QAAiB;QAEjB,IAAI,CAAC;YACH,IAAI,OAAgC,CAAC;YACrC,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAClF,CAAC;iBAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC3C,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAG,IAAI,CAAC,MAAkC,IAAI,EAAE,EAAE,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,OAAO,CAAC,MAAgB,EACxB,OAAO,CAAC,MAAiC,CAC1C,CAAC;YAEF,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvC,OAAO,EAAE,OAAO,EAAE,yBAAyB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;YACrF,CAAC;YACD,SAAS,EAAE,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,EAAE,OAAO,EAAE,UAAW,CAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IAED,iBAAiB,CAAC,KAA8B;QAC9C,8CAA8C;IAChD,CAAC;IAED,oDAAoD;IAC5C,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,MAA+B;QAC/D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE;gBAC3C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;gBAC5D,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,4DAA4D;IACpD,aAAa,CAAC,MAAe;QACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACnF,CAAC;QAED,MAAM,CAAC,GAAG,MAAiC,CAAC;QAE5C,kEAAkE;QAClE,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACrB,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1E,CAAC;QAED,iCAAiC;QACjC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,WAAW,GAAI,OAAO,CAAC,CAAC,CAA6B,CAAC,IAAc,CAAC;YAE3E,oCAAoC;YACpC,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACnD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACvC,OAAO,EAAE,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnF,CAAC;gBAAC,MAAM,CAAC;oBACP,yBAAyB;oBACzB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;gBAClC,CAAC;YACH,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,CAAC;QAED,8BAA8B;QAC9B,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,CAAC,CAAC,KAAgC,CAAC;YAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrD,CAAC;QAED,kCAAkC;QAClC,OAAO,EAAE,OAAO,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;IACnF,CAAC;CAEF;AAED;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IAEf;IACA;IAFnB,YACmB,KAAuB,EACvB,cAAsB;QADtB,UAAK,GAAL,KAAK,CAAkB;QACvB,mBAAc,GAAd,cAAc,CAAQ;IACtC,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,IAA6B;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACxD,CAAC;IAED,iBAAiB,CAAC,KAA8B;QAC9C,oCAAoC;IACtC,CAAC;CACF"}
|
package/dist/executors/ssh.d.ts
CHANGED
|
@@ -5,7 +5,11 @@ import type { ContainerExecutor } from "../types.js";
|
|
|
5
5
|
*/
|
|
6
6
|
export declare class SshExecutor implements ContainerExecutor {
|
|
7
7
|
private readonly defaultUser;
|
|
8
|
-
|
|
8
|
+
private readonly strictHostKeyChecking;
|
|
9
|
+
constructor(options?: {
|
|
10
|
+
defaultUser?: string;
|
|
11
|
+
strictHostKeyChecking?: boolean;
|
|
12
|
+
});
|
|
9
13
|
execute(options: {
|
|
10
14
|
host: string;
|
|
11
15
|
command: string[];
|
|
@@ -24,6 +28,7 @@ export declare class SshExecutor implements ContainerExecutor {
|
|
|
24
28
|
* Wraps the entire command in single quotes and escapes any embedded single quotes.
|
|
25
29
|
*/
|
|
26
30
|
private escapeShellCommand;
|
|
31
|
+
private escapeShellArg;
|
|
27
32
|
private buildDdevEnvPrelude;
|
|
28
33
|
}
|
|
29
34
|
//# sourceMappingURL=ssh.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/executors/ssh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;GAGG;AACH,qBAAa,WAAY,YAAW,iBAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;
|
|
1
|
+
{"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../src/executors/ssh.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;GAGG;AACH,qBAAa,WAAY,YAAW,iBAAiB;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IACjD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;gBAEpC,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;KAAE;IAKzE,OAAO,CAAC,OAAO,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,MAAM,CAAC;IA8EnB;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAOtB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,mBAAmB;CAU5B"}
|
package/dist/executors/ssh.js
CHANGED
|
@@ -6,50 +6,63 @@ import { getLogger } from "../logger.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export class SshExecutor {
|
|
8
8
|
defaultUser;
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
strictHostKeyChecking;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.defaultUser = options?.defaultUser ?? process.env.USER;
|
|
12
|
+
this.strictHostKeyChecking = options?.strictHostKeyChecking ?? false;
|
|
11
13
|
}
|
|
12
14
|
async execute(options) {
|
|
13
15
|
const { host, command, user, shell = "/bin/bash", workingDir } = options;
|
|
14
16
|
const log = getLogger();
|
|
15
17
|
const startTime = Date.now();
|
|
16
|
-
log.
|
|
18
|
+
if (log.isVerbose()) {
|
|
19
|
+
log.debug(`SSH: Connecting to ${host}, workingDir=${workingDir || "/"}, shell=${shell}`);
|
|
20
|
+
}
|
|
17
21
|
// Determine the SSH user to connect as
|
|
18
22
|
const sshUser = this.resolveSshUser(user);
|
|
19
|
-
log.
|
|
23
|
+
if (log.isVerbose()) {
|
|
24
|
+
log.debug(`SSH: User resolved to: ${sshUser || "default"}`);
|
|
25
|
+
}
|
|
20
26
|
// Build the full command, optionally with working directory change
|
|
21
27
|
let remoteCmd = command.join(" ");
|
|
22
28
|
if (workingDir) {
|
|
23
|
-
remoteCmd = `cd ${workingDir} && ${remoteCmd}`;
|
|
29
|
+
remoteCmd = `cd ${this.escapeShellArg(workingDir)} && ${remoteCmd}`;
|
|
24
30
|
}
|
|
25
31
|
const envPrelude = this.buildDdevEnvPrelude(workingDir);
|
|
26
32
|
if (envPrelude) {
|
|
27
33
|
remoteCmd = `${envPrelude}${remoteCmd}`;
|
|
28
|
-
log.
|
|
34
|
+
if (log.isVerbose()) {
|
|
35
|
+
log.debug(`SSH: Adding DDEV env prelude`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (log.isVerbose()) {
|
|
39
|
+
log.debug(`SSH: Full remote command: ${remoteCmd.substring(0, 200)}${remoteCmd.length > 200 ? "..." : ""}`);
|
|
29
40
|
}
|
|
30
|
-
log.debug(`SSH: Full remote command: ${remoteCmd.substring(0, 200)}${remoteCmd.length > 200 ? "..." : ""}`);
|
|
31
41
|
// Quote the full command so bash -c receives it as a single string
|
|
32
42
|
const escapedCmd = this.escapeShellCommand(remoteCmd);
|
|
33
43
|
// Build SSH destination: "user@hostname" or just "hostname"
|
|
34
44
|
const sshDestination = sshUser ? `${sshUser}@${host}` : host;
|
|
35
45
|
const shellFlag = "-c";
|
|
36
|
-
const sshArgs = [
|
|
37
|
-
|
|
38
|
-
"-o", "
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
const sshArgs = ["-o", "LogLevel=ERROR"];
|
|
47
|
+
if (this.strictHostKeyChecking) {
|
|
48
|
+
sshArgs.push("-o", "StrictHostKeyChecking=yes");
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
sshArgs.push("-o", "StrictHostKeyChecking=no", "-o", "UserKnownHostsFile=/dev/null");
|
|
52
|
+
}
|
|
53
|
+
sshArgs.push(sshDestination, shell, shellFlag, escapedCmd);
|
|
54
|
+
if (log.isVerbose()) {
|
|
55
|
+
log.debug(`SSH: Executing ssh ${sshDestination} ${shell} -c '<command>'`);
|
|
56
|
+
}
|
|
46
57
|
return new Promise((resolve, reject) => {
|
|
47
58
|
execFile("ssh", sshArgs, { maxBuffer: 10 * 1024 * 1024, timeout: 120_000 }, (error, stdout, stderr) => {
|
|
48
59
|
const duration = Date.now() - startTime;
|
|
49
60
|
if (error) {
|
|
50
61
|
const cleanedError = (stderr?.trim() || error.message).trim();
|
|
51
62
|
log.error(`SSH: Command failed on ${host} (${duration}ms): ${cleanedError}`);
|
|
52
|
-
log.
|
|
63
|
+
if (log.isVerbose()) {
|
|
64
|
+
log.debug(`SSH: Raw stderr: ${stderr}`);
|
|
65
|
+
}
|
|
53
66
|
reject(new Error(cleanedError));
|
|
54
67
|
return;
|
|
55
68
|
}
|
|
@@ -78,13 +91,16 @@ export class SshExecutor {
|
|
|
78
91
|
const escaped = cmd.replace(/'/g, "'\\''");
|
|
79
92
|
return `'${escaped}'`;
|
|
80
93
|
}
|
|
94
|
+
escapeShellArg(value) {
|
|
95
|
+
return `'${value.replace(/'/g, `'"'"'`)}'`;
|
|
96
|
+
}
|
|
81
97
|
buildDdevEnvPrelude(workingDir) {
|
|
82
98
|
if (!workingDir) {
|
|
83
99
|
return "";
|
|
84
100
|
}
|
|
85
101
|
const baseDir = workingDir.replace(/\/$/, "");
|
|
86
|
-
const configPath = this.
|
|
87
|
-
return `if [ -f ${configPath} ]; then
|
|
102
|
+
const configPath = this.escapeShellArg(`${baseDir}/.ddev/config.yaml`);
|
|
103
|
+
return `if [ -f ${configPath} ]; then awk -F'- ' '/- (DB_(HOST|NAME|USER|PASS)|HASH_SALT|ENVIRONMENT_NAME)=/ {print $2}' ${configPath} | while IFS= read -r kv; do [ -n "$kv" ] && export "$kv"; done; fi; `;
|
|
88
104
|
}
|
|
89
105
|
}
|
|
90
106
|
//# sourceMappingURL=ssh.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/executors/ssh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC;;;GAGG;AACH,MAAM,OAAO,WAAW;IACL,WAAW,CAAqB;
|
|
1
|
+
{"version":3,"file":"ssh.js","sourceRoot":"","sources":["../../src/executors/ssh.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ async function main() {
|
|
|
19
19
|
// Parse CLI arguments.
|
|
20
20
|
const config = parseArgs(process.argv);
|
|
21
21
|
// Initialize logger (stderr only — stdout is reserved for JSON-RPC).
|
|
22
|
-
initLogger(config.logLevel, config.logFile);
|
|
22
|
+
initLogger(config.logLevel, config.logFile, config.verboseLogging);
|
|
23
23
|
const log = getLogger();
|
|
24
24
|
try {
|
|
25
25
|
log.info("Starting WDRMCP (YAML Configuration MCP Server)");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,uBAAuB;IACvB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,qEAAqE;IACrE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,UAAU,IAAI;IACjB,uBAAuB;IACvB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC,qEAAqE;IACrE,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IAExB,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAEhD,4CAA4C;QAC5C,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;QAE7C,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACjE,CAAC;QAED,mCAAmC;QACnC,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,GAAG,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/dist/logger.d.ts
CHANGED
|
@@ -6,7 +6,9 @@ export type LogLevel = "debug" | "info" | "warn" | "error";
|
|
|
6
6
|
export declare class Logger {
|
|
7
7
|
private level;
|
|
8
8
|
private logFile?;
|
|
9
|
-
|
|
9
|
+
private verboseLogging;
|
|
10
|
+
constructor(level?: LogLevel, logFile?: string, verboseLogging?: boolean);
|
|
11
|
+
isVerbose(): boolean;
|
|
10
12
|
private formatArgs;
|
|
11
13
|
private log;
|
|
12
14
|
debug(message: string, ...args: unknown[]): void;
|
|
@@ -14,6 +16,6 @@ export declare class Logger {
|
|
|
14
16
|
warn(message: string, ...args: unknown[]): void;
|
|
15
17
|
error(message: string, ...args: unknown[]): void;
|
|
16
18
|
}
|
|
17
|
-
export declare function initLogger(level?: LogLevel, logFile?: string): Logger;
|
|
19
|
+
export declare function initLogger(level?: LogLevel, logFile?: string, verboseLogging?: boolean): Logger;
|
|
18
20
|
export declare function getLogger(): Logger;
|
|
19
21
|
//# sourceMappingURL=logger.d.ts.map
|
package/dist/logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAS3D,qBAAa,MAAM;IACf,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAC,CAAS;
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAS3D,qBAAa,MAAM;IACf,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,cAAc,CAAU;gBAEpB,KAAK,GAAE,QAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,UAAQ;IAe9E,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,GAAG;IAyBX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAGnD;AAKD,wBAAgB,UAAU,CAAC,KAAK,GAAE,QAAiB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,UAAQ,GAAG,MAAM,CAGrG;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
|
package/dist/logger.js
CHANGED
|
@@ -12,9 +12,11 @@ const LOG_LEVELS = {
|
|
|
12
12
|
export class Logger {
|
|
13
13
|
level;
|
|
14
14
|
logFile;
|
|
15
|
-
|
|
15
|
+
verboseLogging;
|
|
16
|
+
constructor(level = "info", logFile, verboseLogging = false) {
|
|
16
17
|
this.level = LOG_LEVELS[level];
|
|
17
18
|
this.logFile = logFile;
|
|
19
|
+
this.verboseLogging = verboseLogging;
|
|
18
20
|
// Truncate log file on start.
|
|
19
21
|
if (this.logFile) {
|
|
20
22
|
try {
|
|
@@ -25,6 +27,9 @@ export class Logger {
|
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
}
|
|
30
|
+
isVerbose() {
|
|
31
|
+
return this.verboseLogging;
|
|
32
|
+
}
|
|
28
33
|
formatArgs(args) {
|
|
29
34
|
if (args.length === 0)
|
|
30
35
|
return "";
|
|
@@ -68,8 +73,8 @@ export class Logger {
|
|
|
68
73
|
}
|
|
69
74
|
/** Singleton logger instance — call `initLogger()` to configure. */
|
|
70
75
|
let logger = new Logger();
|
|
71
|
-
export function initLogger(level = "info", logFile) {
|
|
72
|
-
logger = new Logger(level, logFile);
|
|
76
|
+
export function initLogger(level = "info", logFile, verboseLogging = false) {
|
|
77
|
+
logger = new Logger(level, logFile, verboseLogging);
|
|
73
78
|
return logger;
|
|
74
79
|
}
|
|
75
80
|
export function getLogger() {
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIxD,MAAM,UAAU,GAA6B;IACzC,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACX,CAAC;AAEF,MAAM,OAAO,MAAM;IACP,KAAK,CAAS;IACd,OAAO,CAAU;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/registry.d.ts
CHANGED
package/dist/registry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAYH,OAAO,KAAK,EACV,YAAY,EAIZ,mBAAmB,EACnB,cAAc,EAKf,MAAM,YAAY,CAAC;AAgEpB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0C;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;gBAE1C,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAkBxD;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;YAyDpB,cAAc;IAoB5B;;;OAGG;YACW,kBAAkB;IAoDhC,OAAO,CAAC,cAAc;IAsGtB,YAAY,IAAI,MAAM,EAAE;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IACjD,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC;IAE1C;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6C5F;;OAEG;IACH,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,iCAAiC;CAU1C"}
|
package/dist/registry.js
CHANGED
|
@@ -11,11 +11,67 @@ import { readFileSync, existsSync } from "node:fs";
|
|
|
11
11
|
import { resolve, join } from "node:path";
|
|
12
12
|
import { globSync } from "glob";
|
|
13
13
|
import yaml from "js-yaml";
|
|
14
|
+
import { z } from "zod";
|
|
14
15
|
import { getLogger } from "./logger.js";
|
|
15
16
|
import { resolveEnvVars } from "./env-resolve.js";
|
|
16
17
|
import { SshExecutor } from "./executors/ssh.js";
|
|
17
18
|
import { CommandToolExecutor } from "./executors/command.js";
|
|
18
19
|
import { McpProxyExecutor, BoundRemoteToolExecutor } from "./executors/mcp-proxy.js";
|
|
20
|
+
const ValidationRuleSchema = z.object({
|
|
21
|
+
pattern: z.string(),
|
|
22
|
+
message: z.string().optional(),
|
|
23
|
+
}).strict();
|
|
24
|
+
const JsonSchemaPropertySchema = z.lazy(() => z.object({
|
|
25
|
+
type: z.string(),
|
|
26
|
+
description: z.string().optional(),
|
|
27
|
+
enum: z.array(z.string()).optional(),
|
|
28
|
+
default: z.unknown().optional(),
|
|
29
|
+
}).strict());
|
|
30
|
+
const JsonSchemaSchema = z.lazy(() => z.object({
|
|
31
|
+
type: z.string(),
|
|
32
|
+
properties: z.record(JsonSchemaPropertySchema).optional(),
|
|
33
|
+
required: z.array(z.string()).optional(),
|
|
34
|
+
}).strict());
|
|
35
|
+
const CommandToolConfigSchema = z.object({
|
|
36
|
+
name: z.string(),
|
|
37
|
+
enabled: z.boolean().optional(),
|
|
38
|
+
description: z.string(),
|
|
39
|
+
type: z.literal("command"),
|
|
40
|
+
input_schema: JsonSchemaSchema.optional(),
|
|
41
|
+
command_template: z.string(),
|
|
42
|
+
ssh_target: z.string(),
|
|
43
|
+
ssh_user: z.string().optional(),
|
|
44
|
+
working_dir: z.string().optional(),
|
|
45
|
+
shell: z.string().optional(),
|
|
46
|
+
default_args: z.record(z.string()).optional(),
|
|
47
|
+
disallowed_commands: z.array(z.string()).optional(),
|
|
48
|
+
validation_rules: z.array(ValidationRuleSchema).optional(),
|
|
49
|
+
max_arg_length: z.number().int().positive().optional(),
|
|
50
|
+
}).strict();
|
|
51
|
+
const McpServerToolConfigSchema = z.object({
|
|
52
|
+
name: z.string(),
|
|
53
|
+
enabled: z.boolean().optional(),
|
|
54
|
+
description: z.string(),
|
|
55
|
+
type: z.literal("mcp_server"),
|
|
56
|
+
input_schema: JsonSchemaSchema.optional(),
|
|
57
|
+
server_url: z.string(),
|
|
58
|
+
tool_prefix: z.string().optional(),
|
|
59
|
+
forward_args: z.boolean().optional(),
|
|
60
|
+
timeout: z.number().int().positive().optional(),
|
|
61
|
+
auth_username: z.string().optional(),
|
|
62
|
+
auth_password: z.string().optional(),
|
|
63
|
+
auth_token: z.string().optional(),
|
|
64
|
+
auth_token_basic: z.boolean().optional(),
|
|
65
|
+
expose_remote_tools: z.boolean().optional(),
|
|
66
|
+
init_timeout: z.number().int().positive().optional(),
|
|
67
|
+
}).strict();
|
|
68
|
+
const ToolConfigSchema = z.discriminatedUnion("type", [
|
|
69
|
+
CommandToolConfigSchema,
|
|
70
|
+
McpServerToolConfigSchema,
|
|
71
|
+
]);
|
|
72
|
+
const ToolsFileSchemaValidator = z.object({
|
|
73
|
+
tools: z.array(ToolConfigSchema),
|
|
74
|
+
}).strict();
|
|
19
75
|
export class ToolRegistry {
|
|
20
76
|
toolsConfigDir;
|
|
21
77
|
config;
|
|
@@ -27,7 +83,10 @@ export class ToolRegistry {
|
|
|
27
83
|
this.config = config;
|
|
28
84
|
// Initialize standard container executor (now SSH based)
|
|
29
85
|
// Pass the configured SSH user or fall back to environment
|
|
30
|
-
this.containerExecutor = new SshExecutor(
|
|
86
|
+
this.containerExecutor = new SshExecutor({
|
|
87
|
+
defaultUser: config.sshUser,
|
|
88
|
+
strictHostKeyChecking: config.strictHostKeyChecking,
|
|
89
|
+
});
|
|
31
90
|
// Path normalization as a composable preprocessor.
|
|
32
91
|
// Converts devcontainer paths (e.g. /workspace/...) to container paths (/var/www/html/...).
|
|
33
92
|
const hostRoot = config.hostProjectRoot;
|
|
@@ -48,23 +107,34 @@ export class ToolRegistry {
|
|
|
48
107
|
if (configFiles.length === 0) {
|
|
49
108
|
log.warn(`No .yml files found in ${this.toolsConfigDir}`);
|
|
50
109
|
}
|
|
51
|
-
log.
|
|
110
|
+
if (log.isVerbose()) {
|
|
111
|
+
log.debug(`Found config files: ${configFiles.join(", ")}`);
|
|
112
|
+
}
|
|
52
113
|
let loadedCount = 0;
|
|
53
114
|
for (const file of configFiles) {
|
|
54
115
|
const filePath = join(this.toolsConfigDir, file);
|
|
55
116
|
try {
|
|
56
|
-
log.
|
|
117
|
+
if (log.isVerbose()) {
|
|
118
|
+
log.debug(`Loading config file: ${file}`);
|
|
119
|
+
}
|
|
57
120
|
const content = readFileSync(filePath, "utf-8");
|
|
58
|
-
const
|
|
59
|
-
if (!
|
|
121
|
+
const parsed = yaml.load(content);
|
|
122
|
+
if (!parsed) {
|
|
60
123
|
log.warn(`Empty config file: ${file}`);
|
|
61
124
|
continue;
|
|
62
125
|
}
|
|
63
|
-
|
|
64
|
-
|
|
126
|
+
const validation = ToolsFileSchemaValidator.safeParse(parsed);
|
|
127
|
+
if (!validation.success) {
|
|
128
|
+
const details = validation.error.issues
|
|
129
|
+
.map((issue) => `${issue.path.join(".") || "root"}: ${issue.message}`)
|
|
130
|
+
.join("; ");
|
|
131
|
+
log.error(`Invalid config schema in ${file}: ${details}`);
|
|
65
132
|
continue;
|
|
66
133
|
}
|
|
67
|
-
|
|
134
|
+
const fileConfig = validation.data;
|
|
135
|
+
if (log.isVerbose()) {
|
|
136
|
+
log.debug(`Found ${fileConfig.tools.length} tools in ${file}`);
|
|
137
|
+
}
|
|
68
138
|
for (const toolConfig of fileConfig.tools) {
|
|
69
139
|
loadedCount += await this.loadSingleTool(toolConfig);
|
|
70
140
|
}
|
|
@@ -168,8 +238,15 @@ export class ToolRegistry {
|
|
|
168
238
|
};
|
|
169
239
|
const bridgeVars = { DDEV_PROJECT: this.config.ddevProject };
|
|
170
240
|
const sshTarget = resolveEnvVars(cfg.ssh_target, envVars, bridgeVars);
|
|
241
|
+
this.ensureNoUnresolvedEnvPlaceholders(sshTarget, name, "ssh_target");
|
|
171
242
|
const sshUser = cfg.ssh_user ? resolveEnvVars(cfg.ssh_user, envVars, bridgeVars) : undefined;
|
|
243
|
+
if (sshUser) {
|
|
244
|
+
this.ensureNoUnresolvedEnvPlaceholders(sshUser, name, "ssh_user");
|
|
245
|
+
}
|
|
172
246
|
const workingDir = cfg.working_dir ? resolveEnvVars(cfg.working_dir, envVars, bridgeVars) : undefined;
|
|
247
|
+
if (workingDir) {
|
|
248
|
+
this.ensureNoUnresolvedEnvPlaceholders(workingDir, name, "working_dir");
|
|
249
|
+
}
|
|
173
250
|
return new CommandToolExecutor({
|
|
174
251
|
commandTemplate: cfg.command_template,
|
|
175
252
|
host: sshTarget,
|
|
@@ -180,6 +257,7 @@ export class ToolRegistry {
|
|
|
180
257
|
defaultArgs: cfg.default_args,
|
|
181
258
|
disallowedCommands: cfg.disallowed_commands,
|
|
182
259
|
validationRules: cfg.validation_rules,
|
|
260
|
+
maxArgLength: cfg.max_arg_length,
|
|
183
261
|
});
|
|
184
262
|
}
|
|
185
263
|
if (type === "mcp_server") {
|
|
@@ -188,15 +266,41 @@ export class ToolRegistry {
|
|
|
188
266
|
log.error(`Tool ${name}: missing server_url`);
|
|
189
267
|
return null;
|
|
190
268
|
}
|
|
269
|
+
const envVars = {
|
|
270
|
+
...process.env,
|
|
271
|
+
DDEV_SSH_USER: process.env.DDEV_SSH_USER ?? this.config.sshUser,
|
|
272
|
+
};
|
|
273
|
+
const bridgeVars = { DDEV_PROJECT: this.config.ddevProject };
|
|
274
|
+
const authUsername = cfg.auth_username
|
|
275
|
+
? resolveEnvVars(cfg.auth_username, envVars, bridgeVars)
|
|
276
|
+
: undefined;
|
|
277
|
+
if (authUsername) {
|
|
278
|
+
this.ensureNoUnresolvedEnvPlaceholders(authUsername, name, "auth_username");
|
|
279
|
+
}
|
|
280
|
+
const authPassword = cfg.auth_password
|
|
281
|
+
? resolveEnvVars(cfg.auth_password, envVars, bridgeVars)
|
|
282
|
+
: undefined;
|
|
283
|
+
if (authPassword) {
|
|
284
|
+
this.ensureNoUnresolvedEnvPlaceholders(authPassword, name, "auth_password");
|
|
285
|
+
}
|
|
286
|
+
const authToken = cfg.auth_token
|
|
287
|
+
? resolveEnvVars(cfg.auth_token, envVars, bridgeVars)
|
|
288
|
+
: undefined;
|
|
289
|
+
if (authToken) {
|
|
290
|
+
this.ensureNoUnresolvedEnvPlaceholders(authToken, name, "auth_token");
|
|
291
|
+
}
|
|
292
|
+
if ((cfg.auth_token && !cfg.auth_token.includes("${")) ||
|
|
293
|
+
(cfg.auth_password && !cfg.auth_password.includes("${"))) {
|
|
294
|
+
log.warn(`Tool ${name}: auth credentials appear to be literal values; prefer environment variable placeholders`);
|
|
295
|
+
}
|
|
191
296
|
return new McpProxyExecutor({
|
|
192
297
|
serverUrl: cfg.server_url,
|
|
193
298
|
forwardArgs: cfg.forward_args,
|
|
194
299
|
timeout: cfg.timeout,
|
|
195
|
-
authUsername
|
|
196
|
-
authPassword
|
|
197
|
-
authToken
|
|
300
|
+
authUsername,
|
|
301
|
+
authPassword,
|
|
302
|
+
authToken,
|
|
198
303
|
authTokenBasic: cfg.auth_token_basic,
|
|
199
|
-
verifySsl: cfg.verify_ssl,
|
|
200
304
|
});
|
|
201
305
|
}
|
|
202
306
|
log.error(`Unknown tool type: ${type}`);
|
|
@@ -223,11 +327,15 @@ export class ToolRegistry {
|
|
|
223
327
|
return { content: `Error: Unknown tool '${name}'`, isError: true };
|
|
224
328
|
}
|
|
225
329
|
const { executor, config } = registered;
|
|
226
|
-
log.
|
|
227
|
-
|
|
330
|
+
if (log.isVerbose()) {
|
|
331
|
+
log.debug(`Tool executor type: ${executor.constructor.name}`);
|
|
332
|
+
log.debug(`Tool config type: ${config.type || "command"}`);
|
|
333
|
+
}
|
|
228
334
|
try {
|
|
229
335
|
executor.validateArguments(args);
|
|
230
|
-
log.
|
|
336
|
+
if (log.isVerbose()) {
|
|
337
|
+
log.debug(`Tool arguments validated: ${JSON.stringify(args)}`);
|
|
338
|
+
}
|
|
231
339
|
}
|
|
232
340
|
catch (e) {
|
|
233
341
|
const validationError = e.message;
|
|
@@ -237,7 +345,9 @@ export class ToolRegistry {
|
|
|
237
345
|
// Apply preprocessor (path normalization).
|
|
238
346
|
const processedArgs = this.argPreprocessor(args);
|
|
239
347
|
if (JSON.stringify(args) !== JSON.stringify(processedArgs)) {
|
|
240
|
-
log.
|
|
348
|
+
if (log.isVerbose()) {
|
|
349
|
+
log.debug(`Path normalization applied: ${JSON.stringify(processedArgs)}`);
|
|
350
|
+
}
|
|
241
351
|
}
|
|
242
352
|
try {
|
|
243
353
|
return await executor.execute(processedArgs);
|
|
@@ -245,7 +355,9 @@ export class ToolRegistry {
|
|
|
245
355
|
catch (e) {
|
|
246
356
|
const execError = e.message;
|
|
247
357
|
log.error(`Tool execution error: ${execError}`);
|
|
248
|
-
log.
|
|
358
|
+
if (log.isVerbose()) {
|
|
359
|
+
log.debug(`Tool that failed: ${name}, executor: ${executor.constructor.name}`);
|
|
360
|
+
}
|
|
249
361
|
return { content: `Error: ${execError}`, isError: true };
|
|
250
362
|
}
|
|
251
363
|
}
|
|
@@ -271,5 +383,12 @@ export class ToolRegistry {
|
|
|
271
383
|
};
|
|
272
384
|
return normalize(value);
|
|
273
385
|
}
|
|
386
|
+
ensureNoUnresolvedEnvPlaceholders(value, toolName, fieldName) {
|
|
387
|
+
const unresolved = [...value.matchAll(/\$\{(\w+)\}/g)].map((match) => match[1]);
|
|
388
|
+
if (unresolved.length === 0) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
throw new Error(`Tool ${toolName}: missing required environment variable(s) for ${fieldName}: ${unresolved.join(", ")}`);
|
|
392
|
+
}
|
|
274
393
|
}
|
|
275
394
|
//# sourceMappingURL=registry.js.map
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAcrF,MAAM,OAAO,YAAY;IACN,cAAc,CAAS;IACvB,MAAM,CAAe;IACrB,KAAK,GAAgC,IAAI,GAAG,EAAE,CAAC;IAC/C,eAAe,CAAkB;IACjC,iBAAiB,CAAoB;IAEtD,YAAY,cAAsB,EAAE,MAAoB;QACtD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,yDAAyD;QACzD,2DAA2D;QAC3D,IAAI,CAAC,iBAAiB,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEzD,mDAAmD;QACnD,4FAA4F;QAC5F,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC;QACxC,MAAM,aAAa,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,KAAK,CAAC,qCAAqC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE3E,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,uBAAuB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,WAAW,GAAG,CAAC,CAAC;QAEpB,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC;gBACH,GAAG,CAAC,KAAK,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAA2B,CAAC;gBAEhE,IAAI,CAAC,UAAU,EAAE,CAAC;oBAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACtE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,IAAI,EAAE,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBAEnF,GAAG,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,KAAK,CAAC,MAAM,aAAa,IAAI,EAAE,CAAC,CAAC;gBAC/D,KAAK,MAAM,UAAU,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBAC1C,WAAW,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACzF,CAAC;QACH,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,UAAU,WAAW,cAAc,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,UAAsB;QACjD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAE7B,IAAI,CAAC,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAChE,IAAI,UAAU,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAEnF,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC;QAAC,CAAC;QAE5E,+EAA+E;QAC/E,IAAI,UAAU,CAAC,IAAI,KAAK,YAAY,IAAK,UAAkC,CAAC,mBAAmB,EAAE,CAAC;YAChG,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAiC,EAAE,QAA4B,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC9B,WAAgC,EAChC,KAAuB;QAEvB,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC;QACnC,GAAG,CAAC,IAAI,CAAC,+BAA+B,SAAS,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;YACnD,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACrC,KAAK,CAAC,gBAAgB,EAAE;gBACxB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,WAAW,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,CACzF;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;gBAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;gBAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAE/E,sDAAsD;YACtD,MAAM,MAAM,GAAG,GAAG,SAAS,GAAG,CAAC;YAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;YAEd,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI;oBAAE,SAAS;gBAE3B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAEnE,qFAAqF;gBACrF,MAAM,aAAa,GAAG,IAAI,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEtE,MAAM,aAAa,GAAwB;oBACzC,IAAI,EAAE,SAAS;oBACf,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE;oBACrC,IAAI,EAAE,YAAY;oBAClB,YAAY,EAAE,MAAM,CAAC,WAAyC;oBAC9D,UAAU,EAAE,WAAW,CAAC,UAAU;iBACnC,CAAC;gBAEF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC9E,GAAG,CAAC,IAAI,CAAC,uBAAuB,SAAS,UAAU,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;gBACnE,KAAK,EAAE,CAAC;YACV,CAAC;YAED,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,eAAe,SAAS,EAAE,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC;QACf,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,oCAAoC,SAAS,KAAK,CAAC,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,UAAsB;QAC3C,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC;QAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAE7B,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,UAA+B,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,4BAA4B,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAChG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAEpF,wDAAwD;gBACxD,MAAM,OAAO,GAAG;oBACd,GAAI,OAAO,CAAC,GAA0C;oBACtD,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO;iBAChE,CAAC;gBACF,MAAM,UAAU,GAAG,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAE7D,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;gBACtE,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7F,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAEtG,OAAO,IAAI,mBAAmB,CAAC;oBAC7B,eAAe,EAAE,GAAG,CAAC,gBAAgB;oBACrC,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI,CAAC,iBAAiB,EAAE,sBAAsB;oBACxD,OAAO;oBACP,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,UAAU;oBACV,WAAW,EAAE,GAAG,CAAC,YAAY;oBAC7B,kBAAkB,EAAE,GAAG,CAAC,mBAAmB;oBAC3C,eAAe,EAAE,GAAG,CAAC,gBAAgB;iBACtC,CAAC,CAAC;YACL,CAAC;YAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC1B,MAAM,GAAG,GAAG,UAAiC,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;oBAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,sBAAsB,CAAC,CAAC;oBAAC,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAEpF,OAAO,IAAI,gBAAgB,CAAC;oBAC1B,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,WAAW,EAAE,GAAG,CAAC,YAAY;oBAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,YAAY,EAAE,GAAG,CAAC,aAAa;oBAC/B,YAAY,EAAE,GAAG,CAAC,aAAa;oBAC/B,SAAS,EAAE,GAAG,CAAC,UAAU;oBACzB,cAAc,EAAE,GAAG,CAAC,gBAAgB;oBACpC,SAAS,EAAE,GAAG,CAAC,UAAU;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,GAAG,CAAC,KAAK,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,+BAA+B,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,qBAAqB;IAErB,YAAY,KAAe,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAY,IAAgC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClF,WAAW,KAAkC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEjE;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAA6B;QAC3D,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;YACpC,OAAO,EAAE,OAAO,EAAE,wBAAwB,IAAI,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACrE,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,uBAAuB,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,GAAG,CAAC,KAAK,CAAC,qBAAqB,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjC,GAAG,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,eAAe,GAAI,CAAW,CAAC,OAAO,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,2BAA2B,eAAe,EAAE,CAAC,CAAC;YACvD,OAAO,EAAE,OAAO,EAAE,qBAAqB,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5E,CAAC;QAED,2CAA2C;QAC3C,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,KAAK,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,SAAS,GAAI,CAAW,CAAC,OAAO,CAAC;YACvC,GAAG,CAAC,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;YAChD,GAAG,CAAC,KAAK,CAAC,qBAAqB,IAAI,eAAe,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/E,OAAO,EAAE,OAAO,EAAE,UAAU,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CACpB,KAA8B,EAC9B,QAAgB,EAChB,aAAqB;QAErB,MAAM,SAAS,GAAG,CAAC,CAAU,EAAW,EAAE;YACxC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC;oBACjC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;oBAC1C,CAAC,CAAC,CAAC,CAAC;YACR,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxC,MAAM,MAAM,GAA4B,EAAE,CAAC;gBAC3C,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAAE,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACrE,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC;QAEF,OAAO,SAAS,CAAC,KAAK,CAA4B,CAAC;IACrD,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAiC7C,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAiC7C,4EAA4E;AAC5E,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,SAAS,CA2DjE"}
|
package/dist/server.js
CHANGED
|
@@ -42,20 +42,26 @@ export function createMcpServer(registry) {
|
|
|
42
42
|
server.tool(toolName, config.description ?? "Tool with no description", toZodShape(config.input_schema), async (args) => {
|
|
43
43
|
const startTime = Date.now();
|
|
44
44
|
log.info(`========== TOOL START: ${toolName} ==========`);
|
|
45
|
-
log.
|
|
46
|
-
|
|
45
|
+
if (log.isVerbose()) {
|
|
46
|
+
log.info(`Tool input arguments: ${JSON.stringify(args)}`);
|
|
47
|
+
log.debug(`Tool config: ${JSON.stringify(config)}`);
|
|
48
|
+
}
|
|
47
49
|
try {
|
|
48
50
|
const result = await registry.executeTool(toolName, args);
|
|
49
51
|
const duration = Date.now() - startTime;
|
|
50
52
|
if (result.isError) {
|
|
51
53
|
log.error(`TOOL RESULT (${duration}ms, ERROR): ${toolName}`);
|
|
52
|
-
log.
|
|
53
|
-
|
|
54
|
+
if (log.isVerbose()) {
|
|
55
|
+
log.info(`TOOL OUTPUT (error, ${result.content.length} chars):`);
|
|
56
|
+
log.info(result.content);
|
|
57
|
+
}
|
|
54
58
|
}
|
|
55
59
|
else {
|
|
56
60
|
log.info(`TOOL RESULT (${duration}ms, SUCCESS): ${toolName}`);
|
|
57
|
-
log.
|
|
58
|
-
|
|
61
|
+
if (log.isVerbose()) {
|
|
62
|
+
log.info(`TOOL OUTPUT (${result.content.length} chars):`);
|
|
63
|
+
log.info(result.content);
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
66
|
log.info(`========== TOOL END: ${toolName} ==========`);
|
|
61
67
|
return {
|
|
@@ -67,7 +73,9 @@ export function createMcpServer(registry) {
|
|
|
67
73
|
const duration = Date.now() - startTime;
|
|
68
74
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
69
75
|
log.error(`TOOL EXCEPTION (${duration}ms): ${toolName} - ${errorMsg}`);
|
|
70
|
-
log.
|
|
76
|
+
if (log.isVerbose()) {
|
|
77
|
+
log.error(`Exception stack: ${error instanceof Error ? error.stack : ""}`);
|
|
78
|
+
}
|
|
71
79
|
log.info(`========== TOOL END: ${toolName} (EXCEPTION) ==========`);
|
|
72
80
|
return {
|
|
73
81
|
content: [{ type: "text", text: `Tool execution failed: ${errorMsg}` }],
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAoB,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAIxC,sDAAsD;AACtD,SAAS,KAAK,CAAC,IAAwB;IACrC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAA6B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YAC1F,KAAK,QAAQ,CAAC;YAAC,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;YACjD,KAAK,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;YACnC,KAAK,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,KAAK,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACnE,CAAC;AAED,kEAAkE;AAClE,SAAS,UAAU,CACjB,MAAiF;IAEjF,IAAI,CAAC,MAAM,EAAE,UAAU;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAEnE,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5D,MAAM,CAAC,IAAI,CACT,QAAQ,EACR,MAAM,CAAC,WAAW,IAAI,0BAA0B,EAChD,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAC/B,KAAK,EAAE,IAAI,EAAE,EAAE;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,0BAA0B,QAAQ,aAAa,CAAC,CAAC;YAC1D,GAAG,CAAC,IAAI,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -39,18 +39,19 @@ export interface CommandToolConfig extends BaseToolConfig {
|
|
|
39
39
|
default_args?: Record<string, string>;
|
|
40
40
|
disallowed_commands?: string[];
|
|
41
41
|
validation_rules?: ValidationRule[];
|
|
42
|
+
max_arg_length?: number;
|
|
42
43
|
}
|
|
43
44
|
/** Configuration for an MCP server proxy tool. */
|
|
44
45
|
export interface McpServerToolConfig extends BaseToolConfig {
|
|
45
46
|
type: "mcp_server";
|
|
46
47
|
server_url: string;
|
|
48
|
+
tool_prefix?: string;
|
|
47
49
|
forward_args?: boolean;
|
|
48
50
|
timeout?: number;
|
|
49
51
|
auth_username?: string;
|
|
50
52
|
auth_password?: string;
|
|
51
53
|
auth_token?: string;
|
|
52
54
|
auth_token_basic?: boolean;
|
|
53
|
-
verify_ssl?: boolean;
|
|
54
55
|
expose_remote_tools?: boolean;
|
|
55
56
|
init_timeout?: number;
|
|
56
57
|
}
|
|
@@ -96,6 +97,10 @@ export interface BridgeConfig {
|
|
|
96
97
|
containerProjectRoot: string;
|
|
97
98
|
/** SSH user for container connections (defaults to current user). */
|
|
98
99
|
sshUser?: string;
|
|
100
|
+
/** Enforce SSH host key validation. */
|
|
101
|
+
strictHostKeyChecking: boolean;
|
|
102
|
+
/** Enable verbose logging (full outputs, extensive debugging). */
|
|
103
|
+
verboseLogging: boolean;
|
|
99
104
|
}
|
|
100
105
|
/** Interface for executing commands via SSH. */
|
|
101
106
|
export interface ContainerExecutor {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,kDAAkD;AAClD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAEhD,mDAAmD;AACnD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,IAAI,EAAE,SAAS,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wunderio/wdrmcp",
|
|
3
3
|
"mcpName": "io.github.wunderio/wdrmcp",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.11",
|
|
5
5
|
"description": "Wunderio local MCP developer server",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -35,17 +35,18 @@
|
|
|
35
35
|
"url": "git+https://github.com/wunderio/wdrmcp.git"
|
|
36
36
|
},
|
|
37
37
|
"engines": {
|
|
38
|
-
"node": ">=
|
|
38
|
+
"node": ">=20.0.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
42
|
+
"dotenv": "^16.6.1",
|
|
43
|
+
"glob": "^11.0.0",
|
|
42
44
|
"js-yaml": "^4.1.0",
|
|
43
|
-
"zod": "^3.25.0"
|
|
44
|
-
"glob": "^11.0.0"
|
|
45
|
+
"zod": "^3.25.0"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@types/js-yaml": "^4.0.9",
|
|
48
|
-
"@types/node": "^
|
|
49
|
+
"@types/node": "^20.11.30",
|
|
49
50
|
"typescript": "^5.7.0"
|
|
50
51
|
}
|
|
51
52
|
}
|