mcp-server-mcpindex 0.3.1 → 0.3.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 +7 -0
- package/package.json +1 -1
- package/src/index.mjs +7 -6
- package/src/update-check.mjs +8 -14
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,13 @@ All notable changes to `mcp-server-mcpindex` are recorded here.
|
|
|
4
4
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.3.2] - 2026-06-08
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **Update notice is now stderr-only.** Removed the MCP `notifications/message` (`sendLoggingMessage`) from the update-notice path — it was redundant with the stderr line and hosts render it inconsistently (Cursor logged it as a bare ` undefined`). stderr is the universal channel every host (Cursor, Claude Desktop, Claude Code, Gemini CLI) surfaces in its per-server log, so nothing a host actually displayed is lost. Supersedes the 0.3.0 dual-channel behavior.
|
|
12
|
+
- The `logging` server capability is **no longer declared** (it existed only to deliver that notification); the server now advertises `tools` only.
|
|
13
|
+
|
|
7
14
|
## [0.3.1] - 2026-06-08
|
|
8
15
|
|
|
9
16
|
### Changed
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-server-mcpindex",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "An MCP server for finding MCP servers, plus advisory trust verdicts (check_tool_trust, assess_server) for agent frameworks. Drop-in for Claude Desktop, Cursor, Cline, Zed.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mcp",
|
package/src/index.mjs
CHANGED
|
@@ -19,9 +19,10 @@ const PKG_VERSION = createRequire(import.meta.url)('../package.json').version;
|
|
|
19
19
|
|
|
20
20
|
const server = new Server(
|
|
21
21
|
{ name: 'mcp-server-mcpindex', version: PKG_VERSION },
|
|
22
|
-
//
|
|
23
|
-
// host
|
|
24
|
-
|
|
22
|
+
// Tools only. We do NOT advertise `logging`: the update notice goes to stderr (which
|
|
23
|
+
// every host surfaces), not via `notifications/message` (rendered inconsistently — Cursor
|
|
24
|
+
// logs it as a bare ` undefined`). stderr is the universal, clean channel.
|
|
25
|
+
{ capabilities: { tools: {} } },
|
|
25
26
|
);
|
|
26
27
|
|
|
27
28
|
const TOOLS = [
|
|
@@ -291,7 +292,7 @@ const transport = new StdioServerTransport();
|
|
|
291
292
|
await server.connect(transport);
|
|
292
293
|
console.error('[mcp-server-mcpindex] connected via stdio');
|
|
293
294
|
|
|
294
|
-
// Fire-and-forget: tell the user if a newer version exists (stderr
|
|
295
|
-
//
|
|
295
|
+
// Fire-and-forget: tell the user if a newer version exists (stderr only — the channel
|
|
296
|
+
// every host renders cleanly). Dropped onto the event loop AFTER connect so it can never
|
|
296
297
|
// delay or crash startup; all errors are swallowed inside.
|
|
297
|
-
notifyUpdateIfAvailable({ currentVersion: PKG_VERSION
|
|
298
|
+
notifyUpdateIfAvailable({ currentVersion: PKG_VERSION }).catch(() => {});
|
package/src/update-check.mjs
CHANGED
|
@@ -87,14 +87,15 @@ export async function fetchLatestVersion({
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
/** Orchestration: check, and if a newer version exists, emit
|
|
91
|
-
* stderr is the
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
90
|
+
/** Orchestration: check, and if a newer version exists, emit the notice to STDERR only.
|
|
91
|
+
* stderr is the UNIVERSAL channel — every MCP host (Cursor, Claude Desktop/Code, Gemini
|
|
92
|
+
* CLI, …) surfaces a spawned server's stderr in its per-server log. We deliberately do NOT
|
|
93
|
+
* emit an MCP `notifications/message`: hosts render it inconsistently (Cursor logs it as a
|
|
94
|
+
* bare ` undefined`, swallowing the text), so it only adds noise where stderr already
|
|
95
|
+
* carries the message cleanly. Returns the message it emitted (or null) — handy for
|
|
96
|
+
* tests/callers. Never throws; never blocks the caller (caller fire-and-forgets). */
|
|
95
97
|
export async function notifyUpdateIfAvailable({
|
|
96
98
|
currentVersion,
|
|
97
|
-
server = null,
|
|
98
99
|
env = process.env,
|
|
99
100
|
log = (m) => console.error(`[mcp-server-mcpindex] ${m}`),
|
|
100
101
|
fetchImpl = fetch,
|
|
@@ -105,14 +106,7 @@ export async function notifyUpdateIfAvailable({
|
|
|
105
106
|
const latest = await fetchLatestVersion({ pkg, fetchImpl });
|
|
106
107
|
if (!latest || !isOlder(currentVersion, latest)) return null;
|
|
107
108
|
const msg = formatUpdateMessage(currentVersion, latest);
|
|
108
|
-
log(msg); // stderr —
|
|
109
|
-
if (server && typeof server.sendLoggingMessage === 'function') {
|
|
110
|
-
try {
|
|
111
|
-
await server.sendLoggingMessage({ level: 'info', logger: 'mcpindex', data: msg });
|
|
112
|
-
} catch {
|
|
113
|
-
/* host didn't enable logging / filtered the level — stderr already covered it */
|
|
114
|
-
}
|
|
115
|
-
}
|
|
109
|
+
log(msg); // stderr — the one channel every host renders cleanly
|
|
116
110
|
return msg;
|
|
117
111
|
} catch {
|
|
118
112
|
return null; // belt-and-suspenders: this path must never surface an error
|