@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.
package/dist/reporter/format.js
CHANGED
|
@@ -42,7 +42,7 @@ function formatHeader() {
|
|
|
42
42
|
return [
|
|
43
43
|
"",
|
|
44
44
|
bold(" ╔══════════════════════════════════════╗"),
|
|
45
|
-
bold(" ║ MCP Doctor v0.
|
|
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;
|
|
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:
|
|
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.
|
|
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":";;
|
|
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.
|
|
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",
|