agent-discover 1.1.0 → 1.1.2
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/CHANGELOG.md +28 -0
- package/README.md +1 -1
- package/agent-desk-plugin.json +1 -1
- package/dist/domain/proxy.d.ts +1 -0
- package/dist/domain/proxy.d.ts.map +1 -1
- package/dist/domain/proxy.js +69 -14
- package/dist/domain/proxy.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,34 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.1.2] - 2026-04-08
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Activation error message rewrite for stdio servers.** When a stdio child process exits before the MCP handshake completes, the SDK reports the opaque `MCP error -32000: Connection closed` — equally true for "command not on PATH" and "child crashed because args were wrong". `McpProxy.activate()` now distinguishes the two by probing the command synchronously with `spawnSync(cmd --version, { shell: true })` and rewrites the failure into either:
|
|
13
|
+
- `command "<cmd>" not found on PATH` — with an install hint pointing at uv / Node / Docker docs when the command is one of those, OR
|
|
14
|
+
- `child process for "<cmd> <args>" exited before the MCP handshake completed — verify the package/args are correct and the server actually starts` — when the command IS on PATH but the package failed to start.
|
|
15
|
+
|
|
16
|
+
Both messages preserve the original SDK error in `Original: …` for debugging. Verified end-to-end via Playwright against a real `mcp-server-time` install (uvx-spawned Python child, MCP handshake, two tools discovered) plus negative tests for missing-command and bad-args.
|
|
17
|
+
|
|
18
|
+
### Tests
|
|
19
|
+
|
|
20
|
+
- `tests/v110-misc.test.ts`: replaced the two earlier friendly-error tests with sharper ones that lock in the rewrite branching — one asserts `not found on PATH` against an unknown binary, the other asserts `exited before the MCP handshake` against `node /__nope__.js` (proves the on-PATH branch is exercised, not just the unknown-command branch).
|
|
21
|
+
|
|
22
|
+
## [1.1.1] - 2026-04-08
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- **Concurrent `McpProxy.activate()` race.** Two parallel `activate(name)` calls used to both pass the `if (activeServers.has(name))` guard before either awaited `client.connect()`, causing two child processes to spawn for the same logical server. The fix reserves the name in a synchronous `activating` set before any await so the second caller rejects immediately. (`src/domain/proxy.ts`, regression test in `tests/proxy-race.test.ts`)
|
|
27
|
+
|
|
28
|
+
### Tests
|
|
29
|
+
|
|
30
|
+
- Quality pass on the v1.1.0 backfill — total suite 151 → 177:
|
|
31
|
+
- `tests/marketplace-extra.test.ts` (11) — `searchNpm` / `searchPypi` augmentation via mocked `fetch`. Failure-mode tests now seed a real registry result and assert it survives intact when npm/pypi blow up, instead of the meaningless `Array.isArray` check. Cross-source dedupe asserts exactly two `mcp-server-sqlite` rows from `npm` + `python`, not `>= 1`.
|
|
32
|
+
- `tests/proxy-headers.test.ts` (4) — locks in CRLF header sanitization on streamable-http and SSE. `readHeaders()` throws if it can't locate the SDK's `requestInit` so an upstream rename fails loudly instead of silently turning the file into a no-op.
|
|
33
|
+
- `tests/proxy-race.test.ts` (2) — regression for the activate-race fix above; mocks the MCP SDK Client to hold `connect()` open across two parallel `activate()` calls.
|
|
34
|
+
- `tests/v110-misc.test.ts` (9) — hydration failure path against a real temp DB, `/api/prereqs` with a positive `npx === true` assertion (proves `probe()` actually exits 0 on success rather than always returning false), `RegistryService.getByName` surfacing `SyntaxError` on malformed `args` and `env` JSON columns, `InstallerService` edge cases (scoped npm names, python/docker routing, unicode + shell metachar rejection, prefix stripping).
|
|
35
|
+
|
|
8
36
|
## [1.1.0] - 2026-04-08
|
|
9
37
|
|
|
10
38
|
Federated marketplace release: `/api/browse` now spans the official MCP registry, npm, and PyPI in one query, with cross-process activation, prereqs probing, and a `uvx` install path. Full UI/REST/MCP coverage.
|
package/README.md
CHANGED
|
@@ -159,7 +159,7 @@ Real-time updates via WebSocket with 2-second database polling. Dark and light t
|
|
|
159
159
|
## Testing
|
|
160
160
|
|
|
161
161
|
```bash
|
|
162
|
-
npm test #
|
|
162
|
+
npm test # 179 tests across 12 files
|
|
163
163
|
npm run test:watch # Watch mode
|
|
164
164
|
npm run test:coverage # Coverage report
|
|
165
165
|
npm run check # Full CI: typecheck + lint + format + test
|
package/agent-desk-plugin.json
CHANGED
package/dist/domain/proxy.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/domain/proxy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/domain/proxy.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwCnD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IAKjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqB;IAChD,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,gBAAgB,CAAC,CAAkC;IAE3D,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhD,iBAAiB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhD,mBAAmB,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,IAAI;IAI9D,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAC3C,KAAK,CAAC;QACJ,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACvC,CAAC,CACH;IA6DK,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvC,QAAQ,CACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC;QACT,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;IAkCF,OAAO,CAAC,aAAa;IAiBrB,kBAAkB,IAAI,WAAW,EAAE;IAcnC,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAgB5D,oBAAoB,IAAI,MAAM,EAAE;IAIhC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAK3E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI/B,OAAO,CAAC,eAAe;IA2DjB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;CAUrC"}
|
package/dist/domain/proxy.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// tools, and proxies tool calls through to them. Tools are namespaced as
|
|
6
6
|
// serverName__toolName to avoid collisions.
|
|
7
7
|
// =============================================================================
|
|
8
|
+
import { spawnSync } from 'child_process';
|
|
8
9
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
9
10
|
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
|
|
10
11
|
import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js';
|
|
@@ -12,6 +13,18 @@ import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/
|
|
|
12
13
|
import { version } from '../version.js';
|
|
13
14
|
const ACTIVATE_TIMEOUT_MS = 60_000;
|
|
14
15
|
const CALL_TIMEOUT_MS = 60_000;
|
|
16
|
+
// Probes whether `cmd` resolves to an executable on PATH. We use `shell: true`
|
|
17
|
+
// so Windows .cmd / .bat shims (npx.cmd, uvx.cmd) are honored — same trick the
|
|
18
|
+
// /api/prereqs endpoint uses. Sync to keep the error-rewrite branch simple.
|
|
19
|
+
function isCommandOnPath(cmd) {
|
|
20
|
+
try {
|
|
21
|
+
const result = spawnSync(`${cmd} --version`, { shell: true, stdio: 'ignore' });
|
|
22
|
+
return result.status === 0;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
15
28
|
function withTimeout(promise, ms, label) {
|
|
16
29
|
return Promise.race([
|
|
17
30
|
promise,
|
|
@@ -20,6 +33,11 @@ function withTimeout(promise, ms, label) {
|
|
|
20
33
|
}
|
|
21
34
|
export class McpProxy {
|
|
22
35
|
activeServers = new Map();
|
|
36
|
+
// Names currently mid-activation. Held only across the connect/listTools
|
|
37
|
+
// await — prevents two parallel activate(name) calls from both spawning
|
|
38
|
+
// child processes (the original `if (activeServers.has(name))` guard
|
|
39
|
+
// races because both callers pass it before either awaits).
|
|
40
|
+
activating = new Set();
|
|
23
41
|
secretsService;
|
|
24
42
|
metricsService;
|
|
25
43
|
serverIdResolver;
|
|
@@ -33,26 +51,63 @@ export class McpProxy {
|
|
|
33
51
|
this.serverIdResolver = resolver;
|
|
34
52
|
}
|
|
35
53
|
async activate(config) {
|
|
36
|
-
if (this.activeServers.has(config.name)) {
|
|
54
|
+
if (this.activeServers.has(config.name) || this.activating.has(config.name)) {
|
|
37
55
|
throw new Error(`Server "${config.name}" is already active`);
|
|
38
56
|
}
|
|
39
|
-
|
|
40
|
-
|
|
57
|
+
// Reserve the name synchronously before any await so a parallel
|
|
58
|
+
// activate(name) call can't slip past the guard above.
|
|
59
|
+
this.activating.add(config.name);
|
|
41
60
|
try {
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
const tools = result.tools ?? [];
|
|
45
|
-
this.activeServers.set(config.name, { client, transport, tools, config });
|
|
46
|
-
return tools;
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
61
|
+
const transport = this.createTransport(config);
|
|
62
|
+
const client = new Client({ name: 'agent-discover', version }, { capabilities: {} });
|
|
49
63
|
try {
|
|
50
|
-
await client.
|
|
64
|
+
await withTimeout(client.connect(transport), ACTIVATE_TIMEOUT_MS, 'connect');
|
|
65
|
+
const result = await withTimeout(client.listTools(), ACTIVATE_TIMEOUT_MS, 'listTools');
|
|
66
|
+
const tools = result.tools ?? [];
|
|
67
|
+
this.activeServers.set(config.name, { client, transport, tools, config });
|
|
68
|
+
return tools;
|
|
51
69
|
}
|
|
52
|
-
catch {
|
|
53
|
-
|
|
70
|
+
catch (err) {
|
|
71
|
+
try {
|
|
72
|
+
await client.close();
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
/* ignore */
|
|
76
|
+
}
|
|
77
|
+
// The MCP SDK reports both "command not on PATH" and "child crashed
|
|
78
|
+
// before handshake" as the same opaque "MCP error -32000: Connection
|
|
79
|
+
// closed". Rewrite into something the user can act on. We only add
|
|
80
|
+
// the install-hint suffix if the command is *actually* missing from
|
|
81
|
+
// PATH (probed sync via spawnSync) — otherwise the hint would be
|
|
82
|
+
// misleading when the real issue is e.g. a non-existent package.
|
|
83
|
+
const raw = err instanceof Error ? err.message : String(err);
|
|
84
|
+
let friendly = raw;
|
|
85
|
+
const cmd = config.command;
|
|
86
|
+
const looksLikeChildExit = raw.includes('Connection closed') ||
|
|
87
|
+
raw.includes('ENOENT') ||
|
|
88
|
+
raw.includes('spawn') ||
|
|
89
|
+
raw.includes('not found');
|
|
90
|
+
if (cmd && looksLikeChildExit) {
|
|
91
|
+
const onPath = isCommandOnPath(cmd);
|
|
92
|
+
if (!onPath) {
|
|
93
|
+
const hint = cmd === 'uvx' || cmd === 'uv'
|
|
94
|
+
? ' — install uv from https://docs.astral.sh/uv/getting-started/installation/'
|
|
95
|
+
: cmd === 'npx'
|
|
96
|
+
? ' — install Node.js from https://nodejs.org'
|
|
97
|
+
: cmd === 'docker'
|
|
98
|
+
? ' — install Docker Desktop from https://docker.com'
|
|
99
|
+
: '';
|
|
100
|
+
friendly = `command "${cmd}" not found on PATH${hint}. Original: ${raw}`;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
friendly = `child process for "${cmd} ${(config.args ?? []).join(' ')}" exited before the MCP handshake completed — verify the package/args are correct and the server actually starts. Original: ${raw}`;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
throw new Error(`Failed to activate "${config.name}": ${friendly}`, { cause: err });
|
|
54
107
|
}
|
|
55
|
-
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
this.activating.delete(config.name);
|
|
56
111
|
}
|
|
57
112
|
}
|
|
58
113
|
async deactivate(name) {
|
package/dist/domain/proxy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/domain/proxy.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oCAAoC;AACpC,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,4CAA4C;AAC5C,gFAAgF;AAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAGnG,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AACnC,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,SAAS,WAAW,CAAI,OAAmB,EAAE,EAAU,EAAE,KAAa;IACpE,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,CAClC,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAC5E;KACF,CAAC,CAAC;AACL,CAAC;AAoCD,MAAM,OAAO,QAAQ;IACF,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/domain/proxy.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED