@ai-ecoverse/mcpcat 0.14.3 → 0.14.5
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 +9 -1
- package/dist/host/mcpcat.mjs +18 -5
- package/dist/kernel/mcpcat.mjs +18 -5
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -4,17 +4,25 @@ A curl for the Model Context Protocol. One command that talks to any MCP server
|
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
7
|
+
```sh
|
|
8
|
+
curl -fsSL https://get.sliccy.ai/mcpcat | sh
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The same installer from the GitHub release, if the short URL is unreachable:
|
|
12
|
+
|
|
7
13
|
```sh
|
|
8
14
|
curl -fsSL https://github.com/ai-ecoverse/mcpcat/releases/latest/download/install.sh | sh
|
|
9
15
|
```
|
|
10
16
|
|
|
17
|
+
Options pass through, for example `curl -fsSL https://get.sliccy.ai/mcpcat | sh -s -- --help`.
|
|
18
|
+
|
|
11
19
|
Or via npm:
|
|
12
20
|
|
|
13
21
|
```sh
|
|
14
22
|
npm install -g @ai-ecoverse/mcpcat
|
|
15
23
|
```
|
|
16
24
|
|
|
17
|
-
mcpcat runs natively on macOS, Linux and Windows (Node ≥ 24), and inside Sliccy Seven as a kernel program, with the same flags, the same output and the same config file in both places. Orphan-free shutdown of stdio server trees in the kernel needs slicc-kernel ≥ 1.74.0; on older kernels only the direct child is signalled.
|
|
25
|
+
mcpcat runs natively on macOS, Linux and Windows (Node ≥ 24), and inside Sliccy Seven as a kernel program, with the same flags, the same output and the same config file in both places. Orphan-free shutdown of stdio server trees in the kernel needs slicc-kernel ≥ 1.74.0; on older kernels only the direct child is signalled. When the kernel sends SIGKILL to mcpcat's process group, no handler can run and the server tree survives; a kernel "parent death signal" spawn option (like Linux `PR_SET_PDEATHSIG`) would cover that case.
|
|
18
26
|
|
|
19
27
|
## Quick start
|
|
20
28
|
|
package/dist/host/mcpcat.mjs
CHANGED
|
@@ -15393,6 +15393,8 @@ async function dispatchMultiTarget(platform2, parsed, version) {
|
|
|
15393
15393
|
return 5;
|
|
15394
15394
|
} finally {
|
|
15395
15395
|
await cleanup();
|
|
15396
|
+
await killAllStdio().catch(() => {
|
|
15397
|
+
});
|
|
15396
15398
|
}
|
|
15397
15399
|
}
|
|
15398
15400
|
if (parsed.verb === "grep") {
|
|
@@ -15417,6 +15419,8 @@ async function dispatchMultiTarget(platform2, parsed, version) {
|
|
|
15417
15419
|
});
|
|
15418
15420
|
} finally {
|
|
15419
15421
|
await cleanup();
|
|
15422
|
+
await killAllStdio().catch(() => {
|
|
15423
|
+
});
|
|
15420
15424
|
}
|
|
15421
15425
|
}
|
|
15422
15426
|
if (parsed.verb === "describe" && parsed.showTs) {
|
|
@@ -15433,6 +15437,8 @@ async function dispatchMultiTarget(platform2, parsed, version) {
|
|
|
15433
15437
|
return await runDescribeTs(platform2, targets, parsed.tsBudget);
|
|
15434
15438
|
} finally {
|
|
15435
15439
|
await cleanup();
|
|
15440
|
+
await killAllStdio().catch(() => {
|
|
15441
|
+
});
|
|
15436
15442
|
}
|
|
15437
15443
|
}
|
|
15438
15444
|
return 2;
|
|
@@ -15805,10 +15811,17 @@ async function runClientVerb(platform2, version, parsed) {
|
|
|
15805
15811
|
await writeErrRedacted(platform2, parsed.jsonOutput, e.kind, e.msg, redact2);
|
|
15806
15812
|
return e.code;
|
|
15807
15813
|
} finally {
|
|
15808
|
-
|
|
15809
|
-
|
|
15810
|
-
|
|
15811
|
-
|
|
15814
|
+
await closeAndKillStdio(conn);
|
|
15815
|
+
}
|
|
15816
|
+
}
|
|
15817
|
+
async function closeAndKillStdio(conn) {
|
|
15818
|
+
try {
|
|
15819
|
+
await conn.close();
|
|
15820
|
+
} catch {
|
|
15821
|
+
}
|
|
15822
|
+
try {
|
|
15823
|
+
await killAllStdio();
|
|
15824
|
+
} catch {
|
|
15812
15825
|
}
|
|
15813
15826
|
}
|
|
15814
15827
|
async function writeErr(p, json, kind, msg) {
|
|
@@ -16082,5 +16095,5 @@ try {
|
|
|
16082
16095
|
});
|
|
16083
16096
|
} catch {
|
|
16084
16097
|
}
|
|
16085
|
-
var code = await run(platform, "0.14.
|
|
16098
|
+
var code = await run(platform, "0.14.5", args);
|
|
16086
16099
|
process.exit(code);
|
package/dist/kernel/mcpcat.mjs
CHANGED
|
@@ -15014,6 +15014,8 @@ async function dispatchMultiTarget(platform2, parsed, version) {
|
|
|
15014
15014
|
return 5;
|
|
15015
15015
|
} finally {
|
|
15016
15016
|
await cleanup();
|
|
15017
|
+
await killAllStdio().catch(() => {
|
|
15018
|
+
});
|
|
15017
15019
|
}
|
|
15018
15020
|
}
|
|
15019
15021
|
if (parsed.verb === "grep") {
|
|
@@ -15038,6 +15040,8 @@ async function dispatchMultiTarget(platform2, parsed, version) {
|
|
|
15038
15040
|
});
|
|
15039
15041
|
} finally {
|
|
15040
15042
|
await cleanup();
|
|
15043
|
+
await killAllStdio().catch(() => {
|
|
15044
|
+
});
|
|
15041
15045
|
}
|
|
15042
15046
|
}
|
|
15043
15047
|
if (parsed.verb === "describe" && parsed.showTs) {
|
|
@@ -15054,6 +15058,8 @@ async function dispatchMultiTarget(platform2, parsed, version) {
|
|
|
15054
15058
|
return await runDescribeTs(platform2, targets, parsed.tsBudget);
|
|
15055
15059
|
} finally {
|
|
15056
15060
|
await cleanup();
|
|
15061
|
+
await killAllStdio().catch(() => {
|
|
15062
|
+
});
|
|
15057
15063
|
}
|
|
15058
15064
|
}
|
|
15059
15065
|
return 2;
|
|
@@ -15426,10 +15432,17 @@ async function runClientVerb(platform2, version, parsed) {
|
|
|
15426
15432
|
await writeErrRedacted(platform2, parsed.jsonOutput, e.kind, e.msg, redact2);
|
|
15427
15433
|
return e.code;
|
|
15428
15434
|
} finally {
|
|
15429
|
-
|
|
15430
|
-
|
|
15431
|
-
|
|
15432
|
-
|
|
15435
|
+
await closeAndKillStdio(conn);
|
|
15436
|
+
}
|
|
15437
|
+
}
|
|
15438
|
+
async function closeAndKillStdio(conn) {
|
|
15439
|
+
try {
|
|
15440
|
+
await conn.close();
|
|
15441
|
+
} catch {
|
|
15442
|
+
}
|
|
15443
|
+
try {
|
|
15444
|
+
await killAllStdio();
|
|
15445
|
+
} catch {
|
|
15433
15446
|
}
|
|
15434
15447
|
}
|
|
15435
15448
|
async function writeErr(p, json, kind, msg) {
|
|
@@ -15746,7 +15759,7 @@ async function main(ctx) {
|
|
|
15746
15759
|
packageDir: "/node_modules/@ai-ecoverse/mcpcat"
|
|
15747
15760
|
});
|
|
15748
15761
|
const args = ctx.argv.slice(1);
|
|
15749
|
-
return run(platform2, "0.14.
|
|
15762
|
+
return run(platform2, "0.14.5", args);
|
|
15750
15763
|
}
|
|
15751
15764
|
export {
|
|
15752
15765
|
main as default
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/mcpcat",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.5",
|
|
4
4
|
"description": "A curl for the Model Context Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -50,20 +50,20 @@
|
|
|
50
50
|
"test:unit": "mcr -c node_modules/@ai-ecoverse/slicc-shared-web/mcr.config.mjs node --test 'test/unit/**/*.test.mjs' 'test/unit/**/*.test.ts'",
|
|
51
51
|
"test:integration": "node --test --test-timeout=30000 test/integration/*.test.mjs",
|
|
52
52
|
"test:kernel-min": "node scripts/test-kernel-min.mjs",
|
|
53
|
-
"cert": "node
|
|
53
|
+
"cert": "node scripts/cert.mjs",
|
|
54
54
|
"release": "semantic-release",
|
|
55
55
|
"trust": "npx fledgling sync -y --skip-publish",
|
|
56
56
|
"trust:dry": "npx fledgling sync --dry-run -y --skip-publish"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@ai-ecoverse/slicc-kernel": "1.
|
|
59
|
+
"@ai-ecoverse/slicc-kernel": "1.82.0",
|
|
60
60
|
"@ai-ecoverse/slicc-shared-web": "1.13.1",
|
|
61
61
|
"@biomejs/biome": "2.5.15",
|
|
62
62
|
"@earendil-works/pi-codemode": "1.2.0",
|
|
63
63
|
"@earendil-works/pi-mcp": "1.2.0",
|
|
64
64
|
"@types/node": "26.6.5",
|
|
65
65
|
"esbuild": "0.28.2",
|
|
66
|
-
"monocart-coverage-reports": "2.13.
|
|
66
|
+
"monocart-coverage-reports": "2.13.2",
|
|
67
67
|
"proper-lockfile": "4.1.2",
|
|
68
68
|
"quickjs-wasi": "3.6.2",
|
|
69
69
|
"semantic-release": "25.0.9",
|