@k08200/mcp-probe 0.1.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +297 -13
- package/dist/checker.d.ts +2 -11
- package/dist/checker.d.ts.map +1 -1
- package/dist/checker.js +93 -9
- package/dist/checker.js.map +1 -1
- package/dist/cli.js +132 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +143 -0
- package/dist/config.js.map +1 -0
- package/dist/protocols/mcp-client.d.ts.map +1 -1
- package/dist/protocols/mcp-client.js +225 -64
- package/dist/protocols/mcp-client.js.map +1 -1
- package/dist/reporters/badge.d.ts +12 -0
- package/dist/reporters/badge.d.ts.map +1 -0
- package/dist/reporters/badge.js +34 -0
- package/dist/reporters/badge.js.map +1 -0
- package/dist/reporters/github.d.ts +7 -0
- package/dist/reporters/github.d.ts.map +1 -0
- package/dist/reporters/github.js +138 -0
- package/dist/reporters/github.js.map +1 -0
- package/dist/reporters/json-reporter.d.ts +2 -2
- package/dist/reporters/json-reporter.d.ts.map +1 -1
- package/dist/reporters/json-reporter.js.map +1 -1
- package/dist/reporters/terminal.d.ts +2 -1
- package/dist/reporters/terminal.d.ts.map +1 -1
- package/dist/reporters/terminal.js +38 -0
- package/dist/reporters/terminal.js.map +1 -1
- package/dist/types.d.ts +73 -2
- package/dist/types.d.ts.map +1 -1
- package/examples/datadog.tools.json +13 -0
- package/examples/github-actions/fleet.yml +25 -0
- package/examples/github-actions/remote-server.yml +24 -0
- package/examples/github-actions/single-server.yml +21 -0
- package/examples/mcp-probe.config.json +23 -0
- package/examples/recipes/README.md +35 -0
- package/examples/recipes/datadog.tools.json +23 -0
- package/examples/recipes/gmail.tools.json +18 -0
- package/examples/recipes/supabase.tools.json +19 -0
- package/examples/self-check.config.json +14 -0
- package/examples/self-check.tools.json +17 -0
- package/package.json +4 -3
package/dist/cli.js
CHANGED
|
@@ -2,29 +2,156 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import ora from 'ora';
|
|
4
4
|
import { checkMcpServer } from './checker.js';
|
|
5
|
-
import {
|
|
5
|
+
import { checkConfigFile } from './config.js';
|
|
6
|
+
import { renderBatchTerminal, renderTerminal } from './reporters/terminal.js';
|
|
6
7
|
import { renderJson } from './reporters/json-reporter.js';
|
|
8
|
+
import { renderGithubActions } from './reporters/github.js';
|
|
9
|
+
import { writeBadgeFile } from './reporters/badge.js';
|
|
7
10
|
const program = new Command();
|
|
11
|
+
function collect(value, previous) {
|
|
12
|
+
previous.push(value);
|
|
13
|
+
return previous;
|
|
14
|
+
}
|
|
15
|
+
function validateRegex(pattern, label) {
|
|
16
|
+
try {
|
|
17
|
+
new RegExp(pattern);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
throw new Error(`Invalid ${label} regex: ${pattern}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function parseHeaders(values) {
|
|
24
|
+
if (values.length === 0)
|
|
25
|
+
return undefined;
|
|
26
|
+
const headers = {};
|
|
27
|
+
for (const value of values) {
|
|
28
|
+
const colon = value.indexOf(':');
|
|
29
|
+
if (colon <= 0) {
|
|
30
|
+
throw new Error(`Invalid header: ${value}. Use "Name: value".`);
|
|
31
|
+
}
|
|
32
|
+
const name = value.slice(0, colon).trim();
|
|
33
|
+
const headerValue = value.slice(colon + 1).trim();
|
|
34
|
+
if (!name || !headerValue) {
|
|
35
|
+
throw new Error(`Invalid header: ${value}. Use "Name: value".`);
|
|
36
|
+
}
|
|
37
|
+
headers[name] = headerValue;
|
|
38
|
+
}
|
|
39
|
+
return headers;
|
|
40
|
+
}
|
|
41
|
+
function parseTransport(value) {
|
|
42
|
+
if (!value)
|
|
43
|
+
return undefined;
|
|
44
|
+
if (value === 'stdio' || value === 'http' || value === 'sse')
|
|
45
|
+
return value;
|
|
46
|
+
throw new Error('Transport must be "stdio", "http", or "sse".');
|
|
47
|
+
}
|
|
8
48
|
program
|
|
9
49
|
.name('mcp-probe')
|
|
10
50
|
.description('Quality checker for MCP servers')
|
|
11
|
-
.version('
|
|
12
|
-
.argument('
|
|
51
|
+
.version('1.0.0')
|
|
52
|
+
.argument('[target]', 'npm package, local file path, or remote MCP URL')
|
|
13
53
|
.argument('[server-args...]', 'extra arguments passed directly to the MCP server')
|
|
14
54
|
.option('-o, --output <format>', 'output format: terminal | json', 'terminal')
|
|
15
55
|
.option('-t, --timeout <ms>', 'connection timeout in ms', '10000')
|
|
56
|
+
.option('-c, --config <path>', 'batch config JSON file')
|
|
57
|
+
.option('--transport <mode>', 'transport mode: stdio | http | sse')
|
|
58
|
+
.option('-H, --header <header>', 'HTTP header for remote MCP servers, e.g. "Authorization: Bearer TOKEN"', collect, [])
|
|
59
|
+
.option('--stderr-allow <pattern>', 'stderr regex to ignore when classifying startup failures', collect, [])
|
|
60
|
+
.option('--stderr-fatal <pattern>', 'stderr regex to always treat as the startup failure reason', collect, [])
|
|
61
|
+
.option('--github-summary', 'write GitHub Actions job summary and annotations')
|
|
62
|
+
.option('--badge-file <path>', 'write shields.io endpoint JSON for README/status badges')
|
|
63
|
+
.option('--probe-tools', 'call each tool to validate the full call path (auto-discovers .mcp-probe.json)')
|
|
64
|
+
.option('--tools-file <path>', 'path to sidecar JSON with declared tool inputs (implies --probe-tools)')
|
|
16
65
|
.action(async (target, serverArgs, opts) => {
|
|
17
66
|
const timeoutMs = parseInt(opts.timeout, 10);
|
|
67
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
68
|
+
console.error('Timeout must be a positive integer.');
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
if (!['terminal', 'json'].includes(opts.output)) {
|
|
72
|
+
console.error('Output format must be "terminal" or "json".');
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
let transport;
|
|
76
|
+
let headers;
|
|
77
|
+
try {
|
|
78
|
+
transport = parseTransport(opts.transport);
|
|
79
|
+
headers = parseHeaders(opts.header);
|
|
80
|
+
for (const pattern of opts.stderrAllow)
|
|
81
|
+
validateRegex(pattern, '--stderr-allow');
|
|
82
|
+
for (const pattern of opts.stderrFatal)
|
|
83
|
+
validateRegex(pattern, '--stderr-fatal');
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
const stderr = opts.stderrAllow.length > 0 || opts.stderrFatal.length > 0
|
|
90
|
+
? { allow: opts.stderrAllow, fatal: opts.stderrFatal }
|
|
91
|
+
: undefined;
|
|
92
|
+
if (opts.config) {
|
|
93
|
+
if (target) {
|
|
94
|
+
console.error('Use either --config or a target, not both.');
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
if (opts.output === 'json') {
|
|
98
|
+
try {
|
|
99
|
+
const report = await checkConfigFile(opts.config, timeoutMs);
|
|
100
|
+
if (opts.githubSummary)
|
|
101
|
+
renderGithubActions(report);
|
|
102
|
+
if (opts.badgeFile)
|
|
103
|
+
writeBadgeFile(report, opts.badgeFile);
|
|
104
|
+
renderJson(report);
|
|
105
|
+
process.exit(report.overallStatus === 'fail' ? 1 : 0);
|
|
106
|
+
}
|
|
107
|
+
catch (err) {
|
|
108
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
109
|
+
process.exit(1);
|
|
110
|
+
}
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const spinner = ora(`Checking config ${opts.config}`).start();
|
|
114
|
+
try {
|
|
115
|
+
const report = await checkConfigFile(opts.config, timeoutMs);
|
|
116
|
+
spinner.stop();
|
|
117
|
+
if (opts.githubSummary)
|
|
118
|
+
renderGithubActions(report);
|
|
119
|
+
if (opts.badgeFile)
|
|
120
|
+
writeBadgeFile(report, opts.badgeFile);
|
|
121
|
+
renderBatchTerminal(report);
|
|
122
|
+
process.exit(report.overallStatus === 'fail' ? 1 : 0);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
spinner.fail('Unexpected error');
|
|
126
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (!target) {
|
|
132
|
+
console.error('Missing target. Pass a target or --config <path>.');
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
const probeTools = opts.probeTools || !!opts.toolsFile;
|
|
136
|
+
const toolsFile = opts.toolsFile;
|
|
18
137
|
if (opts.output === 'json') {
|
|
19
|
-
const report = await checkMcpServer({ target, serverArgs, timeoutMs });
|
|
138
|
+
const report = await checkMcpServer({ target, serverArgs, timeoutMs, transport, headers, stderr, probeTools, toolsFile });
|
|
139
|
+
if (opts.githubSummary)
|
|
140
|
+
renderGithubActions(report);
|
|
141
|
+
if (opts.badgeFile)
|
|
142
|
+
writeBadgeFile(report, opts.badgeFile);
|
|
20
143
|
renderJson(report);
|
|
21
144
|
process.exit(report.overallStatus === 'fail' ? 1 : 0);
|
|
22
145
|
return;
|
|
23
146
|
}
|
|
24
147
|
const spinner = ora(`Checking ${target}`).start();
|
|
25
148
|
try {
|
|
26
|
-
const report = await checkMcpServer({ target, serverArgs, timeoutMs });
|
|
149
|
+
const report = await checkMcpServer({ target, serverArgs, timeoutMs, transport, headers, stderr, probeTools, toolsFile });
|
|
27
150
|
spinner.stop();
|
|
151
|
+
if (opts.githubSummary)
|
|
152
|
+
renderGithubActions(report);
|
|
153
|
+
if (opts.badgeFile)
|
|
154
|
+
writeBadgeFile(report, opts.badgeFile);
|
|
28
155
|
renderTerminal(report);
|
|
29
156
|
process.exit(report.overallStatus === 'fail' ? 1 : 0);
|
|
30
157
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,SAAS,OAAO,CAAC,KAAa,EAAE,QAAkB;IAChD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CAAC,OAAe,EAAE,KAAa;IACnD,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,MAAgB;IACpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,sBAAsB,CAAC,CAAC;QAClE,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,sBAAsB,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;IAC9B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC3E,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;AAClE,CAAC;AAED,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,iCAAiC,CAAC;KAC9C,OAAO,CAAC,OAAO,CAAC;KAChB,QAAQ,CAAC,UAAU,EAAE,iDAAiD,CAAC;KACvE,QAAQ,CAAC,kBAAkB,EAAE,mDAAmD,CAAC;KACjF,MAAM,CAAC,uBAAuB,EAAE,gCAAgC,EAAE,UAAU,CAAC;KAC7E,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,OAAO,CAAC;KACjE,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC;KACvD,MAAM,CAAC,oBAAoB,EAAE,oCAAoC,CAAC;KAClE,MAAM,CAAC,uBAAuB,EAAE,wEAAwE,EAAE,OAAO,EAAE,EAAE,CAAC;KACtH,MAAM,CAAC,0BAA0B,EAAE,0DAA0D,EAAE,OAAO,EAAE,EAAE,CAAC;KAC3G,MAAM,CAAC,0BAA0B,EAAE,4DAA4D,EAAE,OAAO,EAAE,EAAE,CAAC;KAC7G,MAAM,CAAC,kBAAkB,EAAE,kDAAkD,CAAC;KAC9E,MAAM,CAAC,qBAAqB,EAAE,yDAAyD,CAAC;KACxF,MAAM,CAAC,eAAe,EAAE,gFAAgF,CAAC;KACzG,MAAM,CAAC,qBAAqB,EAAE,wEAAwE,CAAC;KACvG,MAAM,CAAC,KAAK,EACX,MAA0B,EAC1B,UAAoB,EACpB,IAYC,EACD,EAAE;IACF,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,SAAoC,CAAC;IACzC,IAAI,OAA2C,CAAC;IAChD,IAAI,CAAC;QACH,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW;YAAE,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;QACjF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW;YAAE,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QACvE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;QACtD,CAAC,CAAC,SAAS,CAAC;IAEd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC7D,IAAI,IAAI,CAAC,aAAa;oBAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;gBACpD,IAAI,IAAI,CAAC,SAAS;oBAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3D,UAAU,CAAC,MAAM,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC7D,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,aAAa;gBAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,IAAI,CAAC,SAAS;gBAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3D,mBAAmB,CAAC,MAAM,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACjC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;IACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAEjC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1H,IAAI,IAAI,CAAC,aAAa;YAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,SAAS;YAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1H,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,aAAa;YAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,SAAS;YAAE,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3D,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { BatchReport, ProbeConfig } from './types.js';
|
|
2
|
+
export declare function loadConfig(configFile: string): ProbeConfig;
|
|
3
|
+
export declare function checkConfigFile(configFile: string, defaultTimeoutMs?: number): Promise<BatchReport>;
|
|
4
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAA2C,WAAW,EAAE,MAAM,YAAY,CAAC;AAiEpG,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,CA0B1D;AA8BD,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,gBAAgB,SAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,CA8BxG"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { dirname, isAbsolute, resolve } from 'path';
|
|
2
|
+
import { existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { checkMcpServer } from './checker.js';
|
|
4
|
+
function isObject(value) {
|
|
5
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
6
|
+
}
|
|
7
|
+
function validateServer(server, index) {
|
|
8
|
+
if (!isObject(server)) {
|
|
9
|
+
throw new Error(`Invalid config: servers[${index}] must be an object`);
|
|
10
|
+
}
|
|
11
|
+
if (typeof server.name !== 'string' || server.name.length === 0) {
|
|
12
|
+
throw new Error(`Invalid config: servers[${index}].name must be a non-empty string`);
|
|
13
|
+
}
|
|
14
|
+
if (typeof server.target !== 'string' || server.target.length === 0) {
|
|
15
|
+
throw new Error(`Invalid config: servers[${index}].target must be a non-empty string`);
|
|
16
|
+
}
|
|
17
|
+
if (server.serverArgs !== undefined && (!Array.isArray(server.serverArgs) || !server.serverArgs.every((arg) => typeof arg === 'string'))) {
|
|
18
|
+
throw new Error(`Invalid config: servers[${index}].serverArgs must be a string array`);
|
|
19
|
+
}
|
|
20
|
+
if (server.timeoutMs !== undefined && (typeof server.timeoutMs !== 'number' || server.timeoutMs <= 0)) {
|
|
21
|
+
throw new Error(`Invalid config: servers[${index}].timeoutMs must be a positive number`);
|
|
22
|
+
}
|
|
23
|
+
if (server.transport !== undefined && !['stdio', 'http', 'sse'].includes(String(server.transport))) {
|
|
24
|
+
throw new Error(`Invalid config: servers[${index}].transport must be stdio, http, or sse`);
|
|
25
|
+
}
|
|
26
|
+
if (server.headers !== undefined) {
|
|
27
|
+
if (!isObject(server.headers)) {
|
|
28
|
+
throw new Error(`Invalid config: servers[${index}].headers must be an object`);
|
|
29
|
+
}
|
|
30
|
+
for (const [key, value] of Object.entries(server.headers)) {
|
|
31
|
+
if (typeof value !== 'string') {
|
|
32
|
+
throw new Error(`Invalid config: servers[${index}].headers.${key} must be a string`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (server.stderr !== undefined) {
|
|
37
|
+
if (!isObject(server.stderr)) {
|
|
38
|
+
throw new Error(`Invalid config: servers[${index}].stderr must be an object`);
|
|
39
|
+
}
|
|
40
|
+
const stderr = server.stderr;
|
|
41
|
+
for (const key of ['allow', 'fatal']) {
|
|
42
|
+
const value = stderr[key];
|
|
43
|
+
if (value !== undefined && (!Array.isArray(value) || !value.every((pattern) => typeof pattern === 'string'))) {
|
|
44
|
+
throw new Error(`Invalid config: servers[${index}].stderr.${key} must be a string array`);
|
|
45
|
+
}
|
|
46
|
+
for (const pattern of value ?? []) {
|
|
47
|
+
try {
|
|
48
|
+
new RegExp(pattern);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
throw new Error(`Invalid config: servers[${index}].stderr.${key} contains invalid regex: ${pattern}`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (server.probeTools !== undefined && typeof server.probeTools !== 'boolean') {
|
|
57
|
+
throw new Error(`Invalid config: servers[${index}].probeTools must be a boolean`);
|
|
58
|
+
}
|
|
59
|
+
if (server.toolsFile !== undefined && typeof server.toolsFile !== 'string') {
|
|
60
|
+
throw new Error(`Invalid config: servers[${index}].toolsFile must be a string`);
|
|
61
|
+
}
|
|
62
|
+
return server;
|
|
63
|
+
}
|
|
64
|
+
export function loadConfig(configFile) {
|
|
65
|
+
if (!existsSync(configFile)) {
|
|
66
|
+
throw new Error(`Cannot read config file: ${configFile}`);
|
|
67
|
+
}
|
|
68
|
+
let parsed;
|
|
69
|
+
try {
|
|
70
|
+
parsed = JSON.parse(readFileSync(configFile, 'utf8'));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw new Error(`Invalid config JSON: ${configFile}`);
|
|
74
|
+
}
|
|
75
|
+
if (!isObject(parsed)) {
|
|
76
|
+
throw new Error(`Invalid config: root must be an object`);
|
|
77
|
+
}
|
|
78
|
+
if (parsed.timeoutMs !== undefined && (typeof parsed.timeoutMs !== 'number' || parsed.timeoutMs <= 0)) {
|
|
79
|
+
throw new Error(`Invalid config: timeoutMs must be a positive number`);
|
|
80
|
+
}
|
|
81
|
+
if (!Array.isArray(parsed.servers) || parsed.servers.length === 0) {
|
|
82
|
+
throw new Error(`Invalid config: servers must be a non-empty array`);
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
timeoutMs: parsed.timeoutMs,
|
|
86
|
+
servers: parsed.servers.map(validateServer),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
function deriveOverallStatus(statuses) {
|
|
90
|
+
if (statuses.includes('fail'))
|
|
91
|
+
return 'fail';
|
|
92
|
+
if (statuses.includes('warn'))
|
|
93
|
+
return 'warn';
|
|
94
|
+
return 'pass';
|
|
95
|
+
}
|
|
96
|
+
function resolveConfigPath(configFile, maybeRelative) {
|
|
97
|
+
if (!maybeRelative || isAbsolute(maybeRelative))
|
|
98
|
+
return maybeRelative;
|
|
99
|
+
return resolve(dirname(configFile), maybeRelative);
|
|
100
|
+
}
|
|
101
|
+
function expandEnvVars(value) {
|
|
102
|
+
return value.replace(/\$\{([A-Z_][A-Z0-9_]*)\}/gi, (match, name) => {
|
|
103
|
+
const envValue = process.env[name];
|
|
104
|
+
if (envValue === undefined) {
|
|
105
|
+
throw new Error(`Environment variable ${name} is not set`);
|
|
106
|
+
}
|
|
107
|
+
return envValue;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function expandHeaders(headers) {
|
|
111
|
+
if (!headers)
|
|
112
|
+
return undefined;
|
|
113
|
+
return Object.fromEntries(Object.entries(headers).map(([key, value]) => [key, expandEnvVars(value)]));
|
|
114
|
+
}
|
|
115
|
+
export async function checkConfigFile(configFile, defaultTimeoutMs = 10000) {
|
|
116
|
+
const startTime = Date.now();
|
|
117
|
+
const config = loadConfig(configFile);
|
|
118
|
+
const servers = [];
|
|
119
|
+
for (const server of config.servers) {
|
|
120
|
+
const options = {
|
|
121
|
+
target: server.target,
|
|
122
|
+
serverArgs: server.serverArgs,
|
|
123
|
+
timeoutMs: server.timeoutMs ?? config.timeoutMs ?? defaultTimeoutMs,
|
|
124
|
+
transport: server.transport,
|
|
125
|
+
headers: expandHeaders(server.headers),
|
|
126
|
+
stderr: server.stderr,
|
|
127
|
+
probeTools: server.probeTools,
|
|
128
|
+
toolsFile: resolveConfigPath(configFile, server.toolsFile),
|
|
129
|
+
};
|
|
130
|
+
servers.push({
|
|
131
|
+
name: server.name,
|
|
132
|
+
report: await checkMcpServer(options),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
target: configFile,
|
|
137
|
+
timestamp: new Date().toISOString(),
|
|
138
|
+
overallStatus: deriveOverallStatus(servers.map((server) => server.report.overallStatus)),
|
|
139
|
+
servers,
|
|
140
|
+
totalLatencyMs: Date.now() - startTime,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/protocols/mcp-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../src/protocols/mcp-client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAA+B,MAAM,aAAa,CAAC;AAsI1F,wBAAsB,cAAc,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAyHhF"}
|