mcp-server-mcpindex 0.3.1 → 0.3.3
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 +13 -0
- package/README.md +8 -4
- 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,19 @@ 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.3] - 2026-06-08
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **Recommended install now rides `@latest`.** The docs wire `npx -y mcp-server-mcpindex@latest` so the host fetches the newest discovery server on each restart — no manual upgrade step. This server is the *advisory* recommender (`recommend_mcp_for_task` / `check_tool_trust` / `assess_server`), **not** the in-path drift gate, so it carries no version pin (the gate, `mcpindex-preflight`, stays pinned + notify-only on purpose). The startup update notice already prints the exact `npm i -g …@latest` command for anyone who pins.
|
|
12
|
+
|
|
13
|
+
## [0.3.2] - 2026-06-08
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **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.
|
|
18
|
+
- The `logging` server capability is **no longer declared** (it existed only to deliver that notification); the server now advertises `tools` only.
|
|
19
|
+
|
|
7
20
|
## [0.3.1] - 2026-06-08
|
|
8
21
|
|
|
9
22
|
### Changed
|
package/README.md
CHANGED
|
@@ -19,12 +19,16 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
|
19
19
|
"mcpServers": {
|
|
20
20
|
"mcpindex": {
|
|
21
21
|
"command": "npx",
|
|
22
|
-
"args": ["-y", "mcp-server-mcpindex"]
|
|
22
|
+
"args": ["-y", "mcp-server-mcpindex@latest"]
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
> `@latest` keeps you current: this is the advisory discovery server (not the in-path drift
|
|
29
|
+
> gate), so it carries no version pin — `npx` fetches the newest on your next host restart, no
|
|
30
|
+
> manual upgrade step.
|
|
31
|
+
|
|
28
32
|
Restart Claude Desktop. Then ask:
|
|
29
33
|
|
|
30
34
|
> "Find me an MCP server that can read PDFs and write the contents to S3."
|
|
@@ -40,7 +44,7 @@ Add to `.cursor/mcp.json`:
|
|
|
40
44
|
"mcpServers": {
|
|
41
45
|
"mcpindex": {
|
|
42
46
|
"command": "npx",
|
|
43
|
-
"args": ["-y", "mcp-server-mcpindex"]
|
|
47
|
+
"args": ["-y", "mcp-server-mcpindex@latest"]
|
|
44
48
|
}
|
|
45
49
|
}
|
|
46
50
|
}
|
|
@@ -51,7 +55,7 @@ Add to `.cursor/mcp.json`:
|
|
|
51
55
|
Add to your Cline settings:
|
|
52
56
|
|
|
53
57
|
```bash
|
|
54
|
-
npx -y mcp-server-mcpindex
|
|
58
|
+
npx -y mcp-server-mcpindex@latest
|
|
55
59
|
```
|
|
56
60
|
|
|
57
61
|
## Tools exposed
|
|
@@ -112,7 +116,7 @@ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js'
|
|
|
112
116
|
|
|
113
117
|
const mcpindex = new Client({ name: 'gate', version: '1.0.0' }, { capabilities: {} });
|
|
114
118
|
await mcpindex.connect(new StdioClientTransport({
|
|
115
|
-
command: 'npx', args: ['-y', 'mcp-server-mcpindex'],
|
|
119
|
+
command: 'npx', args: ['-y', 'mcp-server-mcpindex@latest'],
|
|
116
120
|
}));
|
|
117
121
|
|
|
118
122
|
// gateToolCall wraps any agent tool dispatch. Plug it in front of
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mcp-server-mcpindex",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
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
|