@procedures/mcp-dev-tools 0.47.1 → 0.48.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/dist/config.d.ts CHANGED
@@ -67,5 +67,10 @@ export declare function parseTimeout(value: string | undefined): number;
67
67
  * stops the start, so it cannot remove the limit by mistake.
68
68
  */
69
69
  export declare function parseMaxSessions(value: string | undefined): number | undefined;
70
+ /**
71
+ * The token of the HTTP face. A variable that is set and empty is an error: without this check the
72
+ * server starts with no token, so a mistake in the environment opens it.
73
+ */
74
+ export declare function parseHttpToken(value: string | undefined): string | undefined;
70
75
  export declare function loadConfig(): McpServerConfig;
71
76
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7H;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;;;;;;;GAcG;AACH,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,oGAAoG;AACpG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED,wBAAgB,UAAU,IAAI,eAAe,CA0B5C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mCAAmC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;IAC7H;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;;;;;;;;;;;;;GAcG;AACH,qFAAqF;AACrF,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,oGAAoG;AACpG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG9E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG5E;AAED,wBAAgB,UAAU,IAAI,eAAe,CA2B5C"}
package/dist/config.js CHANGED
@@ -37,11 +37,21 @@ export function parseMaxSessions(value) {
37
37
  return undefined;
38
38
  return Number(value.trim());
39
39
  }
40
+ /**
41
+ * The token of the HTTP face. A variable that is set and empty is an error: without this check the
42
+ * server starts with no token, so a mistake in the environment opens it.
43
+ */
44
+ export function parseHttpToken(value) {
45
+ if (value === "")
46
+ throw new Error("MCP_HTTP_TOKEN is set and empty: give it a token, or unset it");
47
+ return value;
48
+ }
40
49
  export function loadConfig() {
41
50
  const bundlesEnv = process.env["MCP_BUNDLES"] ?? "@procedures/bundle-mcp";
42
51
  const bundles = bundlesEnv.split(",").map((b) => b.trim()).filter(Boolean);
43
52
  const fsRoot = process.env["MCP_FS_ROOT"]?.trim();
44
53
  const maxSessions = parseMaxSessions(process.env["MCP_HTTP_MAX_SESSIONS"]);
54
+ const httpToken = process.env["MCP_HTTP_PORT"] ? parseHttpToken(process.env["MCP_HTTP_TOKEN"]) : undefined;
45
55
  return {
46
56
  bundles,
47
57
  serverName: process.env["MCP_SERVER_NAME"] ?? "impl-mcp-dev",
@@ -56,7 +66,7 @@ export function loadConfig() {
56
66
  http: {
57
67
  port: Number(process.env["MCP_HTTP_PORT"]),
58
68
  ...(process.env["MCP_HTTP_HOST"] ? { host: process.env["MCP_HTTP_HOST"] } : {}),
59
- ...(process.env["MCP_HTTP_TOKEN"] ? { token: process.env["MCP_HTTP_TOKEN"] } : {}),
69
+ ...(httpToken !== undefined ? { token: httpToken } : {}),
60
70
  ...(maxSessions !== undefined ? { maxSessions } : {}),
61
71
  },
62
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqCH;;;;;;;;;;;;;;GAcG;AACH,qFAAqF;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C,oGAAoG;AACpG,MAAM,UAAU,YAAY,CAAC,KAAyB;IACpD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,uBAAuB,CAAC;IAC/E,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACvE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAyB;IACxD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACjE,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,wBAAwB,CAAC;IAC1E,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,CAAC;IAClD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE3E,OAAO;QACL,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,cAAc;QAC5D,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,OAAO;QAC3D,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM;QAC1C,aAAa,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC/D,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,GAAG;QACzF,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC;QACzG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAC9B,CAAC,CAAC;gBACE,IAAI,EAAE;oBACJ,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBAC1C,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC/E,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClF,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACtD;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package",
3
3
  "name": "@procedures/mcp-dev-tools",
4
- "version": "0.47.1",
4
+ "version": "0.48.0",
5
5
  "description": "A ready-to-use MCP server for Claude Code and Claude Desktop: 91 developer tools (docker, mongo, sqlite, cue, vitest, workspace) with a strict call policy.",
6
6
  "keywords": [
7
7
  "mcp",
@@ -54,14 +54,14 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@mark1russell7/service": "^0.6.0",
57
- "@procedures/bundle-mcp": "0.47.1",
58
- "@procedures/client": "0.47.1",
59
- "@procedures/compiler": "0.47.1",
60
- "@procedures/fs": "0.47.1",
61
- "@procedures/mcp-server": "0.47.1"
57
+ "@procedures/bundle-mcp": "0.48.0",
58
+ "@procedures/client": "0.48.0",
59
+ "@procedures/compiler": "0.48.0",
60
+ "@procedures/fs": "0.48.0",
61
+ "@procedures/mcp-server": "0.48.0"
62
62
  },
63
63
  "devDependencies": {
64
- "@mark1russell7/cue": "^1.1.0",
64
+ "@mark1russell7/cue": "^2.1.1",
65
65
  "@types/node": "^22.0.0",
66
66
  "typescript": "^7.0.2",
67
67
  "vitest": "^5.0.3"
package/src/config.ts CHANGED
@@ -74,11 +74,21 @@ export function parseMaxSessions(value: string | undefined): number | undefined
74
74
  return Number(value.trim());
75
75
  }
76
76
 
77
+ /**
78
+ * The token of the HTTP face. A variable that is set and empty is an error: without this check the
79
+ * server starts with no token, so a mistake in the environment opens it.
80
+ */
81
+ export function parseHttpToken(value: string | undefined): string | undefined {
82
+ if (value === "") throw new Error("MCP_HTTP_TOKEN is set and empty: give it a token, or unset it");
83
+ return value;
84
+ }
85
+
77
86
  export function loadConfig(): McpServerConfig {
78
87
  const bundlesEnv = process.env["MCP_BUNDLES"] ?? "@procedures/bundle-mcp";
79
88
  const bundles = bundlesEnv.split(",").map((b) => b.trim()).filter(Boolean);
80
89
  const fsRoot = process.env["MCP_FS_ROOT"]?.trim();
81
90
  const maxSessions = parseMaxSessions(process.env["MCP_HTTP_MAX_SESSIONS"]);
91
+ const httpToken = process.env["MCP_HTTP_PORT"] ? parseHttpToken(process.env["MCP_HTTP_TOKEN"]) : undefined;
82
92
 
83
93
  return {
84
94
  bundles,
@@ -94,7 +104,7 @@ export function loadConfig(): McpServerConfig {
94
104
  http: {
95
105
  port: Number(process.env["MCP_HTTP_PORT"]),
96
106
  ...(process.env["MCP_HTTP_HOST"] ? { host: process.env["MCP_HTTP_HOST"] } : {}),
97
- ...(process.env["MCP_HTTP_TOKEN"] ? { token: process.env["MCP_HTTP_TOKEN"] } : {}),
107
+ ...(httpToken !== undefined ? { token: httpToken } : {}),
98
108
  ...(maxSessions !== undefined ? { maxSessions } : {}),
99
109
  },
100
110
  }