@modelcontextprotocol/inspector-client 0.16.6 → 0.16.7

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.
@@ -1,4 +1,4 @@
1
- import { u as useToast, r as reactExports, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-B_qh-Btq.js";
1
+ import { u as useToast, r as reactExports, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-Dg7mXHRE.js";
2
2
  const OAuthCallback = ({ onConnect }) => {
3
3
  const { toast } = useToast();
4
4
  const hasProcessedRef = reactExports.useRef(false);
@@ -1,4 +1,4 @@
1
- import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-B_qh-Btq.js";
1
+ import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-Dg7mXHRE.js";
2
2
  const OAuthDebugCallback = ({ onConnect }) => {
3
3
  reactExports.useEffect(() => {
4
4
  let isProcessed = false;
@@ -735,6 +735,39 @@ video {
735
735
  background-color: hsl(var(--background));
736
736
  color: hsl(var(--foreground));
737
737
  }
738
+ .container {
739
+ width: 100%;
740
+ }
741
+ @media (min-width: 640px) {
742
+
743
+ .container {
744
+ max-width: 640px;
745
+ }
746
+ }
747
+ @media (min-width: 768px) {
748
+
749
+ .container {
750
+ max-width: 768px;
751
+ }
752
+ }
753
+ @media (min-width: 1024px) {
754
+
755
+ .container {
756
+ max-width: 1024px;
757
+ }
758
+ }
759
+ @media (min-width: 1280px) {
760
+
761
+ .container {
762
+ max-width: 1280px;
763
+ }
764
+ }
765
+ @media (min-width: 1536px) {
766
+
767
+ .container {
768
+ max-width: 1536px;
769
+ }
770
+ }
738
771
  .sr-only {
739
772
  position: absolute;
740
773
  width: 1px;
@@ -15230,6 +15230,20 @@ const CancelledNotificationSchema = NotificationSchema.extend({
15230
15230
  reason: stringType().optional()
15231
15231
  })
15232
15232
  });
15233
+ const IconSchema = objectType({
15234
+ /**
15235
+ * URL or data URI for the icon.
15236
+ */
15237
+ src: stringType(),
15238
+ /**
15239
+ * Optional MIME type for the icon.
15240
+ */
15241
+ mimeType: optionalType(stringType()),
15242
+ /**
15243
+ * Optional string specifying icon dimensions (e.g., "48x48 96x96").
15244
+ */
15245
+ sizes: optionalType(stringType())
15246
+ }).passthrough();
15233
15247
  const BaseMetadataSchema = objectType({
15234
15248
  /** Intended for programmatic or logical use, but used as a display name in past specs or fallback */
15235
15249
  name: stringType(),
@@ -15244,7 +15258,20 @@ const BaseMetadataSchema = objectType({
15244
15258
  title: optionalType(stringType())
15245
15259
  }).passthrough();
15246
15260
  const ImplementationSchema = BaseMetadataSchema.extend({
15247
- version: stringType()
15261
+ version: stringType(),
15262
+ /**
15263
+ * An optional URL of the website for this implementation.
15264
+ */
15265
+ websiteUrl: optionalType(stringType()),
15266
+ /**
15267
+ * An optional list of icons for this implementation.
15268
+ * This can be used by clients to display the implementation in a user interface.
15269
+ * Each icon should have a `kind` property that specifies whether it is a data representation or a URL source, a `src` property that points to the icon file or data representation, and may also include a `mimeType` and `sizes` property.
15270
+ * The `mimeType` property should be a valid MIME type for the icon file, such as "image/png" or "image/svg+xml".
15271
+ * The `sizes` property should be a string that specifies one or more sizes at which the icon file can be used, such as "48x48" or "any" for scalable formats like SVG.
15272
+ * The `sizes` property is optional, and if not provided, the client should assume that the icon can be used at any size.
15273
+ */
15274
+ icons: optionalType(arrayType(IconSchema))
15248
15275
  });
15249
15276
  const ClientCapabilitiesSchema = objectType({
15250
15277
  /**
@@ -15435,6 +15462,10 @@ const ResourceSchema = BaseMetadataSchema.extend({
15435
15462
  * The MIME type of this resource, if known.
15436
15463
  */
15437
15464
  mimeType: optionalType(stringType()),
15465
+ /**
15466
+ * An optional list of icons for this resource.
15467
+ */
15468
+ icons: optionalType(arrayType(IconSchema)),
15438
15469
  /**
15439
15470
  * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
15440
15471
  * for notes on _meta usage.
@@ -15539,6 +15570,10 @@ const PromptSchema = BaseMetadataSchema.extend({
15539
15570
  * A list of arguments to use for templating the prompt.
15540
15571
  */
15541
15572
  arguments: optionalType(arrayType(PromptArgumentSchema)),
15573
+ /**
15574
+ * An optional list of icons for this prompt.
15575
+ */
15576
+ icons: optionalType(arrayType(IconSchema)),
15542
15577
  /**
15543
15578
  * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
15544
15579
  * for notes on _meta usage.
@@ -15706,6 +15741,10 @@ const ToolSchema = BaseMetadataSchema.extend({
15706
15741
  * Optional additional tool information.
15707
15742
  */
15708
15743
  annotations: optionalType(ToolAnnotationsSchema),
15744
+ /**
15745
+ * An optional list of icons for this tool.
15746
+ */
15747
+ icons: optionalType(arrayType(IconSchema)),
15709
15748
  /**
15710
15749
  * See [MCP specification](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/47339c03c143bb4ec01a26e721a1b8fe66634ebe/docs/specification/draft/basic/index.mdx#general-fields)
15711
15750
  * for notes on _meta usage.
@@ -17176,7 +17215,7 @@ const oauthTransitions = {
17176
17215
  );
17177
17216
  context.provider.saveCodeVerifier(codeVerifier);
17178
17217
  context.updateState({
17179
- authorizationUrl: authorizationUrl.toString(),
17218
+ authorizationUrl,
17180
17219
  oauthStep: "authorization_code"
17181
17220
  });
17182
17221
  }
@@ -24866,7 +24905,7 @@ class StreamableHTTPClientTransport {
24866
24905
  return this._protocolVersion;
24867
24906
  }
24868
24907
  }
24869
- const version$1 = "0.16.6";
24908
+ const version$1 = "0.16.7";
24870
24909
  const packageJson = {
24871
24910
  version: version$1
24872
24911
  };
@@ -25432,11 +25471,15 @@ function useConnection({
25432
25471
  setCompletionsSupported(false);
25433
25472
  setServerCapabilities(null);
25434
25473
  };
25474
+ const clearRequestHistory = () => {
25475
+ setRequestHistory([]);
25476
+ };
25435
25477
  return {
25436
25478
  connectionStatus,
25437
25479
  serverCapabilities,
25438
25480
  mcpClient,
25439
25481
  requestHistory,
25482
+ clearRequestHistory,
25440
25483
  makeRequest,
25441
25484
  sendNotification,
25442
25485
  handleCompletion,
@@ -26730,7 +26773,7 @@ const OAuthFlowProgress = ({
26730
26773
  children: authState.authorizationUrl && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-2 p-3 border rounded-md bg-muted", children: [
26731
26774
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "font-medium mb-2 text-sm", children: "Authorization URL:" }),
26732
26775
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
26733
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs break-all", children: authState.authorizationUrl }),
26776
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-xs break-all", children: String(authState.authorizationUrl) }),
26734
26777
  /* @__PURE__ */ jsxRuntimeExports.jsx(
26735
26778
  "button",
26736
26779
  {
@@ -26992,7 +27035,7 @@ const AuthDebugger = ({
26992
27035
  SESSION_KEYS.AUTH_DEBUGGER_STATE,
26993
27036
  JSON.stringify(currentState)
26994
27037
  );
26995
- window.location.href = currentState.authorizationUrl;
27038
+ window.location.href = currentState.authorizationUrl.toString();
26996
27039
  break;
26997
27040
  }
26998
27041
  }
@@ -27383,7 +27426,9 @@ const JsonNode = reactExports.memo(
27383
27426
  JsonNode.displayName = "JsonNode";
27384
27427
  const HistoryAndNotifications = ({
27385
27428
  requestHistory,
27386
- serverNotifications
27429
+ serverNotifications,
27430
+ onClearHistory,
27431
+ onClearNotifications
27387
27432
  }) => {
27388
27433
  const [expandedRequests, setExpandedRequests] = reactExports.useState({});
27389
27434
  const [expandedNotifications, setExpandedNotifications] = reactExports.useState({});
@@ -27395,7 +27440,19 @@ const HistoryAndNotifications = ({
27395
27440
  };
27396
27441
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-card overflow-hidden flex h-full", children: [
27397
27442
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto p-4 border-r", children: [
27398
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold mb-4", children: "History" }),
27443
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
27444
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold", children: "History" }),
27445
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27446
+ Button,
27447
+ {
27448
+ variant: "outline",
27449
+ size: "sm",
27450
+ onClick: onClearHistory,
27451
+ disabled: requestHistory.length === 0,
27452
+ children: "Clear"
27453
+ }
27454
+ )
27455
+ ] }),
27399
27456
  requestHistory.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No history yet" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-3", children: requestHistory.slice().reverse().map((request, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
27400
27457
  "li",
27401
27458
  {
@@ -27445,7 +27502,19 @@ const HistoryAndNotifications = ({
27445
27502
  )) })
27446
27503
  ] }),
27447
27504
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 overflow-y-auto p-4", children: [
27448
- /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold mb-4", children: "Server Notifications" }),
27505
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-4", children: [
27506
+ /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold", children: "Server Notifications" }),
27507
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
27508
+ Button,
27509
+ {
27510
+ variant: "outline",
27511
+ size: "sm",
27512
+ onClick: onClearNotifications,
27513
+ disabled: serverNotifications.length === 0,
27514
+ children: "Clear"
27515
+ }
27516
+ )
27517
+ ] }),
27449
27518
  serverNotifications.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-500 dark:text-gray-400 italic", children: "No notifications yet" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "space-y-3", children: serverNotifications.slice().reverse().map((notification, index2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
27450
27519
  "li",
27451
27520
  {
@@ -36472,7 +36541,7 @@ const useTheme = () => {
36472
36541
  [theme, setThemeWithSideEffect]
36473
36542
  );
36474
36543
  };
36475
- const version = "0.16.6";
36544
+ const version = "0.16.7";
36476
36545
  var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
36477
36546
  createPopperScope
36478
36547
  ]);
@@ -37046,7 +37115,7 @@ const Sidebar = ({
37046
37115
  setCopiedServerEntry(true);
37047
37116
  toast2({
37048
37117
  title: "Config entry copied",
37049
- description: transportType === "stdio" ? "Server configuration has been copied to clipboard. Add this to your mcp.json inside the 'mcpServers' object with your preferred server name." : "SSE URL has been copied. Use this URL directly in your MCP Client."
37118
+ description: transportType === "stdio" ? "Server configuration has been copied to clipboard. Add this to your mcp.json inside the 'mcpServers' object with your preferred server name." : transportType === "streamable-http" ? "Streamable HTTP URL has been copied. Use this URL directly in your MCP Client." : "SSE URL has been copied. Use this URL directly in your MCP Client."
37050
37119
  });
37051
37120
  setTimeout(() => {
37052
37121
  setCopiedServerEntry(false);
@@ -38636,6 +38705,7 @@ const App = () => {
38636
38705
  serverCapabilities,
38637
38706
  mcpClient,
38638
38707
  requestHistory,
38708
+ clearRequestHistory,
38639
38709
  makeRequest,
38640
38710
  sendNotification,
38641
38711
  handleCompletion,
@@ -39083,6 +39153,9 @@ const App = () => {
39083
39153
  const handleRootsChange = async () => {
39084
39154
  await sendNotification({ method: "notifications/roots/list_changed" });
39085
39155
  };
39156
+ const handleClearNotifications = () => {
39157
+ setNotifications([]);
39158
+ };
39086
39159
  const sendLogLevelRequest = async (level) => {
39087
39160
  await sendMCPRequest(
39088
39161
  {
@@ -39104,13 +39177,13 @@ const App = () => {
39104
39177
  ) });
39105
39178
  if (window.location.pathname === "/oauth/callback") {
39106
39179
  const OAuthCallback = React.lazy(
39107
- () => __vitePreload(() => import("./OAuthCallback-Cmffn8om.js"), true ? [] : void 0)
39180
+ () => __vitePreload(() => import("./OAuthCallback-aXDAN43J.js"), true ? [] : void 0)
39108
39181
  );
39109
39182
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
39110
39183
  }
39111
39184
  if (window.location.pathname === "/oauth/callback/debug") {
39112
39185
  const OAuthDebugCallback = React.lazy(
39113
- () => __vitePreload(() => import("./OAuthDebugCallback-BhzcPtuF.js"), true ? [] : void 0)
39186
+ () => __vitePreload(() => import("./OAuthDebugCallback-BanjyQ_V.js"), true ? [] : void 0)
39114
39187
  );
39115
39188
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
39116
39189
  }
@@ -39457,7 +39530,9 @@ const App = () => {
39457
39530
  HistoryAndNotifications,
39458
39531
  {
39459
39532
  requestHistory,
39460
- serverNotifications: notifications
39533
+ serverNotifications: notifications,
39534
+ onClearHistory: clearRequestHistory,
39535
+ onClearNotifications: handleClearNotifications
39461
39536
  }
39462
39537
  ) })
39463
39538
  ]
package/dist/index.html CHANGED
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/mcp.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-B_qh-Btq.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-C217Ot8c.css">
8
+ <script type="module" crossorigin src="/assets/index-Dg7mXHRE.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-DZ1A0VH0.css">
10
10
  </head>
11
11
  <body>
12
12
  <div id="root" class="w-full"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@modelcontextprotocol/inspector-client",
3
- "version": "0.16.6",
3
+ "version": "0.16.7",
4
4
  "description": "Client-side application for the Model Context Protocol inspector",
5
5
  "license": "MIT",
6
6
  "author": "Anthropic, PBC (https://anthropic.com)",
@@ -25,7 +25,7 @@
25
25
  "cleanup:e2e": "node e2e/global-teardown.js"
26
26
  },
27
27
  "dependencies": {
28
- "@modelcontextprotocol/sdk": "^1.17.5",
28
+ "@modelcontextprotocol/sdk": "^1.18.0",
29
29
  "@radix-ui/react-checkbox": "^1.1.4",
30
30
  "@radix-ui/react-dialog": "^1.1.3",
31
31
  "@radix-ui/react-icons": "^1.3.0",