@modelcontextprotocol/inspector 2.14.0 → 2.15.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.
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/assets/MCP-CWGQJYyH.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>MCP Inspector</title>
8
- <script type="module" crossorigin src="/assets/index-BCud2uMC.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-Dval2a7I.css">
8
+ <script type="module" crossorigin src="/assets/index-BZ94R6fh.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-tBehH5iF.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modelcontextprotocol/inspector",
3
- "version": "2.14.0",
3
+ "version": "2.15.0",
4
4
  "description": "The Model Context Protocol Inspector",
5
5
  "keywords": [
6
6
  "MCP",
@@ -169,5 +169,8 @@
169
169
  "typescript": "~5.9.3",
170
170
  "typescript-eslint": "^8.65.0",
171
171
  "vitest": "4.1.12"
172
+ },
173
+ "overrides": {
174
+ "minimatch": "^11.0.4"
172
175
  }
173
176
  }
@@ -79,7 +79,10 @@ more).
79
79
  - Connections persist across separate `mcpdo` invocations and **self-heal**: a
80
80
  dropped transport (expired session, exited stdio child) transparently
81
81
  re-dials on next use with stored credentials. Don't monitor or reconnect
82
- manually; only an `auth_required` error needs action (re-run `connect`).
82
+ manually; only an exit-`3` auth error needs action (re-run `connect`):
83
+ `auth_required`, `oauth_error` (the authorization server refused — its
84
+ `oauthError` / `oauthErrorDescription` say why), or `oauth_timeout` (the
85
+ sign-in was not completed in time).
83
86
  `mcpdo disconnect` ends one connection; `mcpdo daemon stop` resets
84
87
  everything.
85
88
  - The `[legacy]` / `[modern]` era tag on `connections/list` is the negotiated
@@ -97,7 +100,10 @@ more).
97
100
  stdio server) or to more than one URL is rejected with guidance. EMA IdP
98
101
  login records lead with their bare issuer URL and carry a trailing
99
102
  `enterprise IdP login` marker, and clear by that bare issuer URL
100
- (`mcpdo auth/clear https://idp.example.com`). Run `connect` as its **own
103
+ (`mcpdo auth/clear https://idp.example.com`). To diagnose a 401/403 —
104
+ wrong audience, missing scope, expired token — run `mcpdo auth/show <url or
105
+ name>`: it prints the stored access token's decoded claims (unverified) and
106
+ expiry relative to now, never the token itself. Run `connect` as its **own
101
107
  command** — never chained with `&&`, `;`, or a follow-on
102
108
  `tools/list`/`connections/show`. A connect that needs sign-in exits 0 while
103
109
  the connection is still unusable, so a chained command runs against a
@@ -174,6 +180,47 @@ more).
174
180
  `droppedSlots`: slots nobody was free to take are dropped, so a server too
175
181
  slow for the target can still report healthy latency. A shortfall under 90%
176
182
  also prints a warning on stderr.
183
+ - `--load-scenario <file>` (no tool name) loads a weighted mix of
184
+ `tools/call` / `resources/read` / `prompts/get` steps; the top-level counts
185
+ are totals and `steps[]` breaks them down per step — find the slow or
186
+ failing step there.
187
+ - Identical calls flatter a caching server. Vary them with placeholders in
188
+ argument values (`id:=user-{{seq}}`, `{{uuid}}`, `{{rand:1-50}}`,
189
+ `{{worker}}`) or `--load-args-file rows.ndjson` (one argument object per
190
+ line, cycled; `--load-args-random` to shuffle).
191
+ - To find a server's knee, step the load: `--load-steps 10,25,50` or
192
+ `--load-ramp 10:100:60` (concurrency; `--load-step-by rate` for rate), each
193
+ stage `--load-step-duration` seconds. Read `stages[]` top to bottom for
194
+ where `latencyMs.p99` or `errorRate` jumps. `--load-stop-on-breach` with a
195
+ `--load-max-*` threshold stops at the first breaching stage.
196
+ - Latency has `p50`/`p90`/`p95`/`p99`/`p999`. Gate a run with
197
+ `--load-max-p50`/`-p95`/`-p99`, `--load-max-error-rate` or
198
+ `--load-min-throughput` (ok calls/s); a breach exits `10` after the summary.
199
+ To gate on "no worse than last time", save a `--format json` summary and
200
+ pass `--load-baseline prev.json --load-max-regression 10%` on the same run
201
+ shape (`load_regression` on a regression, `load_baseline_mismatch` when the
202
+ runs differ in tool, concurrency, bounds, rate or stages).
203
+ - `--load-interval <sec>` adds an `intervals[]` time series (spot a GC pause
204
+ or a slow leak the totals hide); `--load-warmup <sec>` leaves a warm-up out
205
+ of the statistics (reported under `warmup`). Progress lines on stderr appear
206
+ only with `--format text`.
207
+ - If the generator rather than the server is the bottleneck (throughput stops
208
+ rising while the server is idle), mcpdo cannot help: use the one-shot CLI's
209
+ `mcp-inspector --cli <url> … --load --load-workers 4`, which spreads the
210
+ run over processes and merges one summary.
211
+ - To measure notification fan-out, `--load-subscribe <uri>
212
+ --load-subscribers 50` subscribes 50 sessions; a tool name makes each
213
+ successful call a trigger (latency from its start), and no tool listens for
214
+ `--load-duration` to the server's own updates. Read `fanout.missed` and
215
+ `fanout.deliveryMs`.
216
+ - To load session setup and teardown too (servers behind gateways see many
217
+ short sessions), add `--load-churn` (HTTP/SSE only): each worker connects,
218
+ makes `--load-churn-calls` calls (default `1`), disconnects, repeats.
219
+ Connect cost is in `churn.connectMs`, not in `latencyMs`.
220
+ - `--load-rate` is closed-loop: busy workers drop slots, which hides
221
+ queueing. Add `--load-open-loop` to keep every slot and time calls from
222
+ their scheduled start (`openLoop: true` in the summary).
177
223
  - `stoppedEarly` (`reason` + `detail`) means the run ended before its bounds:
178
- `consecutive_errors` (the server stopped answering), `connection_lost`, or
224
+ `consecutive_errors` (the server stopped answering), `connection_lost`,
225
+ `threshold_breached` (a stepped run's `--load-stop-on-breach`), or
179
226
  `interrupted`. The counts cover only what completed.