@frankxai/mcp-doctor 0.2.0 → 0.3.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.
@@ -42,7 +42,7 @@ function formatHeader() {
42
42
  return [
43
43
  "",
44
44
  bold(" ╔══════════════════════════════════════╗"),
45
- bold(" ║ MCP Doctor v0.2.0 ║"),
45
+ bold(" ║ MCP Doctor v0.3.0 ║"),
46
46
  bold(" ║ Diagnose & optimize your MCP setup ║"),
47
47
  bold(" ╚══════════════════════════════════════╝"),
48
48
  "",
@@ -6,6 +6,12 @@ export interface HealthResult {
6
6
  message: string;
7
7
  responseTimeMs?: number;
8
8
  }
9
+ /**
10
+ * Redact any known secret values from a string.
11
+ * Scans for env var values from the server config and replaces them.
12
+ * Also catches common API key patterns as a safety net.
13
+ */
14
+ export declare function redactSecrets(text: string, serverEnv: Record<string, string>): string;
9
15
  export declare function checkServerHealth(server: McpServerEntry, timeoutMs?: number): Promise<HealthResult>;
10
16
  export declare function checkAllServers(servers: McpServerEntry[], options?: {
11
17
  quick?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"health-checker.d.ts","sourceRoot":"","sources":["../../src/scanner/health-checker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAWD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,YAAY,CAAC,CAqIvB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,OAAO,CAAC,YAAY,EAAE,CAAC,CAoCzB"}
1
+ {"version":3,"file":"health-checker.d.ts","sourceRoot":"","sources":["../../src/scanner/health-checker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,QAAQ,GACR,SAAS,GACT,iBAAiB,GACjB,aAAa,GACb,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAiCD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAsBrF;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,SAAS,GAAE,MAAc,GACxB,OAAO,CAAC,YAAY,CAAC,CAqIvB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,OAAO,CAAC,YAAY,EAAE,CAAC,CAoCzB"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.redactSecrets = redactSecrets;
3
4
  exports.checkServerHealth = checkServerHealth;
4
5
  exports.checkAllServers = checkAllServers;
5
6
  const child_process_1 = require("child_process");
@@ -12,6 +13,51 @@ function commandExists(command) {
12
13
  return false;
13
14
  }
14
15
  }
16
+ /** Env vars safe to inherit — everything else is stripped */
17
+ const SAFE_ENV_KEYS = new Set([
18
+ "PATH", "HOME", "SHELL", "USER", "LANG", "TERM",
19
+ "NODE_PATH", "NODE_OPTIONS", "NVM_DIR", "NVM_BIN",
20
+ "TMPDIR", "TMP", "TEMP", "XDG_RUNTIME_DIR",
21
+ ]);
22
+ /**
23
+ * Build a minimal env for spawned processes.
24
+ * Only passes safe system vars + the server's own env vars.
25
+ * Prevents leaking AWS_SECRET_ACCESS_KEY, GITHUB_TOKEN, etc.
26
+ */
27
+ function buildSafeEnv(serverEnv) {
28
+ const safe = {};
29
+ for (const key of SAFE_ENV_KEYS) {
30
+ if (process.env[key]) {
31
+ safe[key] = process.env[key];
32
+ }
33
+ }
34
+ return { ...safe, ...serverEnv };
35
+ }
36
+ /**
37
+ * Redact any known secret values from a string.
38
+ * Scans for env var values from the server config and replaces them.
39
+ * Also catches common API key patterns as a safety net.
40
+ */
41
+ function redactSecrets(text, serverEnv) {
42
+ let result = text;
43
+ // Redact known env var values (exact match replacement)
44
+ for (const [key, value] of Object.entries(serverEnv)) {
45
+ if (value && value.length > 6) {
46
+ result = result.replaceAll(value, `[REDACTED:${key}]`);
47
+ }
48
+ }
49
+ // Safety net: catch common API key patterns even if not in env
50
+ result = result.replace(/AIzaSy[A-Za-z0-9_-]{33}/g, "[REDACTED:GEMINI_KEY]");
51
+ result = result.replace(/sk-ant-api[A-Za-z0-9_-]{20,}/g, "[REDACTED:ANTHROPIC_KEY]");
52
+ result = result.replace(/sk-[A-Za-z0-9]{20,}/g, "[REDACTED:OPENAI_KEY]");
53
+ result = result.replace(/re_[A-Za-z0-9]{20,}/g, "[REDACTED:RESEND_KEY]");
54
+ result = result.replace(/ghp_[A-Za-z0-9]{36,}/g, "[REDACTED:GITHUB_TOKEN]");
55
+ result = result.replace(/gho_[A-Za-z0-9]{36,}/g, "[REDACTED:GITHUB_OAUTH]");
56
+ result = result.replace(/npm_[A-Za-z0-9]{36,}/g, "[REDACTED:NPM_TOKEN]");
57
+ result = result.replace(/xai-[A-Za-z0-9]{20,}/g, "[REDACTED:XAI_KEY]");
58
+ result = result.replace(/eyJ[A-Za-z0-9_-]{50,}\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+/g, "[REDACTED:JWT]");
59
+ return result;
60
+ }
15
61
  async function checkServerHealth(server, timeoutMs = 10000) {
16
62
  const config = server.config;
17
63
  // SSE/HTTP servers — check URL reachability
@@ -60,7 +106,7 @@ async function checkServerHealth(server, timeoutMs = 10000) {
60
106
  const startTime = Date.now();
61
107
  const args = config.args || [];
62
108
  const proc = (0, child_process_1.spawn)(baseCommand, args, {
63
- env: { ...process.env, ...env },
109
+ env: buildSafeEnv(env),
64
110
  stdio: ["pipe", "pipe", "pipe"],
65
111
  });
66
112
  let stderr = "";
@@ -101,7 +147,7 @@ async function checkServerHealth(server, timeoutMs = 10000) {
101
147
  resolve({
102
148
  server,
103
149
  status: "broken",
104
- message: `Exited with code ${code}${stderr ? `: ${stderr.slice(0, 200)}` : ""}`,
150
+ message: `Exited with code ${code}${stderr ? `: ${redactSecrets(stderr.slice(0, 200), env)}` : ""}`,
105
151
  responseTimeMs: elapsed,
106
152
  });
107
153
  }
@@ -123,7 +169,7 @@ async function checkServerHealth(server, timeoutMs = 10000) {
123
169
  params: {
124
170
  protocolVersion: "2024-11-05",
125
171
  capabilities: {},
126
- clientInfo: { name: "mcp-doctor", version: "0.1.0" },
172
+ clientInfo: { name: "mcp-doctor", version: "0.3.0" },
127
173
  },
128
174
  }) + "\n");
129
175
  }
@@ -1 +1 @@
1
- {"version":3,"file":"health-checker.js","sourceRoot":"","sources":["../../src/scanner/health-checker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health-checker.js","sourceRoot":"","sources":["../../src/scanner/health-checker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.2.0",
6
+ "version": "0.3.0",
7
7
  "description": "Diagnose, optimize, and manage your Claude Code MCP servers",
8
8
  "main": "dist/index.js",
9
9
  "bin": {
@@ -14,7 +14,8 @@
14
14
  "dev": "tsc --watch",
15
15
  "start": "node dist/cli.js",
16
16
  "audit": "node dist/cli.js audit",
17
- "recommend": "node dist/cli.js recommend"
17
+ "recommend": "node dist/cli.js recommend",
18
+ "prepublishOnly": "tsc"
18
19
  },
19
20
  "keywords": [
20
21
  "claude",