@modelcontextprotocol/inspector-client 0.5.1 → 0.6.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.
@@ -1,4 +1,4 @@
1
- import { r as reactExports, j as jsxRuntimeExports, S as SESSION_KEYS, a as auth, b as authProvider } from "./index-mKSHihrk.js";
1
+ import { r as reactExports, j as jsxRuntimeExports, S as SESSION_KEYS, a as auth, b as authProvider } from "./index-BK1TrpAN.js";
2
2
  const OAuthCallback = () => {
3
3
  const hasProcessedRef = reactExports.useRef(false);
4
4
  reactExports.useEffect(() => {
@@ -12151,7 +12151,7 @@ z.union([
12151
12151
  CreateMessageRequestSchema,
12152
12152
  ListRootsRequestSchema
12153
12153
  ]);
12154
- z.union([
12154
+ const ServerNotificationSchema = z.union([
12155
12155
  CancelledNotificationSchema,
12156
12156
  ProgressNotificationSchema,
12157
12157
  LoggingMessageNotificationSchema,
@@ -12282,7 +12282,7 @@ class Protocol {
12282
12282
  Promise.resolve().then(() => handler(notification)).catch((error) => this._onerror(new Error(`Uncaught error in notification handler: ${error}`)));
12283
12283
  }
12284
12284
  _onrequest(request) {
12285
- var _a, _b;
12285
+ var _a, _b, _c;
12286
12286
  const handler = (_a = this._requestHandlers.get(request.method)) !== null && _a !== void 0 ? _a : this.fallbackRequestHandler;
12287
12287
  if (handler === void 0) {
12288
12288
  (_b = this._transport) === null || _b === void 0 ? void 0 : _b.send({
@@ -12297,7 +12297,11 @@ class Protocol {
12297
12297
  }
12298
12298
  const abortController = new AbortController();
12299
12299
  this._requestHandlerAbortControllers.set(request.id, abortController);
12300
- Promise.resolve().then(() => handler(request, { signal: abortController.signal })).then((result) => {
12300
+ const extra = {
12301
+ signal: abortController.signal,
12302
+ sessionId: (_c = this._transport) === null || _c === void 0 ? void 0 : _c.sessionId
12303
+ };
12304
+ Promise.resolve().then(() => handler(request, extra)).then((result) => {
12301
12305
  var _a2;
12302
12306
  if (abortController.signal.aborted) {
12303
12307
  return;
@@ -13498,7 +13502,7 @@ const StdErrNotificationSchema = NotificationSchema.extend({
13498
13502
  });
13499
13503
  ClientNotificationSchema.or(
13500
13504
  StdErrNotificationSchema
13501
- );
13505
+ ).or(ServerNotificationSchema);
13502
13506
  class InspectorOAuthClientProvider {
13503
13507
  get redirectUrl() {
13504
13508
  return window.location.origin + "/oauth/callback";
@@ -13551,7 +13555,8 @@ class InspectorOAuthClientProvider {
13551
13555
  }
13552
13556
  }
13553
13557
  const authProvider = new InspectorOAuthClientProvider();
13554
- const DEFAULT_REQUEST_TIMEOUT_MSEC = 1e4;
13558
+ const params$1 = new URLSearchParams(window.location.search);
13559
+ const DEFAULT_REQUEST_TIMEOUT_MSEC = parseInt(params$1.get("timeout") ?? "") || 1e4;
13555
13560
  function useConnection({
13556
13561
  transportType,
13557
13562
  command,
@@ -13559,6 +13564,7 @@ function useConnection({
13559
13564
  sseUrl,
13560
13565
  env,
13561
13566
  proxyServerUrl,
13567
+ bearerToken,
13562
13568
  requestTimeout = DEFAULT_REQUEST_TIMEOUT_MSEC,
13563
13569
  onNotification,
13564
13570
  onStdErrNotification,
@@ -13665,6 +13671,7 @@ function useConnection({
13665
13671
  return false;
13666
13672
  };
13667
13673
  const connect = async (_e, retryCount = 0) => {
13674
+ var _a;
13668
13675
  try {
13669
13676
  const client = new Client(
13670
13677
  {
@@ -13690,9 +13697,9 @@ function useConnection({
13690
13697
  backendUrl.searchParams.append("url", sseUrl);
13691
13698
  }
13692
13699
  const headers = {};
13693
- const tokens = await authProvider.tokens();
13694
- if (tokens) {
13695
- headers["Authorization"] = `Bearer ${tokens.access_token}`;
13700
+ const token = bearerToken || ((_a = await authProvider.tokens()) == null ? void 0 : _a.access_token);
13701
+ if (token) {
13702
+ headers["Authorization"] = `Bearer ${token}`;
13696
13703
  }
13697
13704
  const clientTransport = new SSEClientTransport(backendUrl, {
13698
13705
  eventSourceInit: {
@@ -13707,6 +13714,10 @@ function useConnection({
13707
13714
  ProgressNotificationSchema,
13708
13715
  onNotification
13709
13716
  );
13717
+ client.setNotificationHandler(
13718
+ ResourceUpdatedNotificationSchema,
13719
+ onNotification
13720
+ );
13710
13721
  }
13711
13722
  if (onStdErrNotification) {
13712
13723
  client.setNotificationHandler(
@@ -17758,16 +17769,12 @@ const Button = reactExports.forwardRef(
17758
17769
  );
17759
17770
  Button.displayName = "Button";
17760
17771
  const PingTab = ({ onPingClick }) => {
17761
- return /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "ping", className: "grid grid-cols-2 gap-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col-span-2 flex justify-center items-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
17772
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(TabsContent, { value: "ping", className: "grid grid-cols-2 gap-4", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "col-span-2 flex justify-center items-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
17762
17773
  Button,
17763
17774
  {
17764
17775
  onClick: onPingClick,
17765
- className: "bg-gradient-to-r from-purple-500 to-pink-500 hover:from-purple-600 hover:to-pink-600 text-white font-bold py-6 px-12 rounded-full shadow-lg transform transition duration-300 hover:scale-110 focus:outline-none focus:ring-4 focus:ring-purple-300 animate-pulse",
17766
- children: [
17767
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-3xl mr-2", children: "🚀" }),
17768
- "MEGA PING",
17769
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-3xl ml-2", children: "💥" })
17770
- ]
17776
+ className: "font-bold py-6 px-12 rounded-full",
17777
+ children: "Ping Server"
17771
17778
  }
17772
17779
  ) }) });
17773
17780
  };
@@ -22767,6 +22774,10 @@ const ResourcesTab = ({
22767
22774
  readResource,
22768
22775
  selectedResource,
22769
22776
  setSelectedResource,
22777
+ resourceSubscriptionsSupported,
22778
+ resourceSubscriptions,
22779
+ subscribeToResource,
22780
+ unsubscribeFromResource,
22770
22781
  handleCompletion,
22771
22782
  completionsSupported,
22772
22783
  resourceContent,
@@ -22863,18 +22874,38 @@ const ResourcesTab = ({
22863
22874
  children: selectedResource ? selectedResource.name : selectedTemplate ? selectedTemplate.name : "Select a resource or template"
22864
22875
  }
22865
22876
  ),
22866
- selectedResource && /* @__PURE__ */ jsxRuntimeExports.jsxs(
22867
- Button,
22868
- {
22869
- variant: "outline",
22870
- size: "sm",
22871
- onClick: () => readResource(selectedResource.uri),
22872
- children: [
22873
- /* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { className: "w-4 h-4 mr-2" }),
22874
- "Refresh"
22875
- ]
22876
- }
22877
- )
22877
+ selectedResource && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex row-auto gap-1 justify-end w-2/5", children: [
22878
+ resourceSubscriptionsSupported && !resourceSubscriptions.has(selectedResource.uri) && /* @__PURE__ */ jsxRuntimeExports.jsx(
22879
+ Button,
22880
+ {
22881
+ variant: "outline",
22882
+ size: "sm",
22883
+ onClick: () => subscribeToResource(selectedResource.uri),
22884
+ children: "Subscribe"
22885
+ }
22886
+ ),
22887
+ resourceSubscriptionsSupported && resourceSubscriptions.has(selectedResource.uri) && /* @__PURE__ */ jsxRuntimeExports.jsx(
22888
+ Button,
22889
+ {
22890
+ variant: "outline",
22891
+ size: "sm",
22892
+ onClick: () => unsubscribeFromResource(selectedResource.uri),
22893
+ children: "Unsubscribe"
22894
+ }
22895
+ ),
22896
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
22897
+ Button,
22898
+ {
22899
+ variant: "outline",
22900
+ size: "sm",
22901
+ onClick: () => readResource(selectedResource.uri),
22902
+ children: [
22903
+ /* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { className: "w-4 h-4 mr-2" }),
22904
+ "Refresh"
22905
+ ]
22906
+ }
22907
+ )
22908
+ ] })
22878
22909
  ] }),
22879
22910
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "p-4", children: error ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Alert, { variant: "destructive", children: [
22880
22911
  /* @__PURE__ */ jsxRuntimeExports.jsx(CircleAlert, { className: "h-4 w-4" }),
@@ -24323,7 +24354,7 @@ const useTheme = () => {
24323
24354
  }, [])
24324
24355
  ];
24325
24356
  };
24326
- const version = "0.5.1";
24357
+ const version = "0.6.0";
24327
24358
  const Sidebar = ({
24328
24359
  connectionStatus,
24329
24360
  transportType,
@@ -24336,11 +24367,14 @@ const Sidebar = ({
24336
24367
  setSseUrl,
24337
24368
  env,
24338
24369
  setEnv,
24370
+ bearerToken,
24371
+ setBearerToken,
24339
24372
  onConnect,
24340
24373
  stdErrNotifications
24341
24374
  }) => {
24342
24375
  const [theme, setTheme] = useTheme();
24343
24376
  const [showEnvVars, setShowEnvVars] = reactExports.useState(false);
24377
+ const [showBearerToken, setShowBearerToken] = reactExports.useState(false);
24344
24378
  const [shownEnvVars, setShownEnvVars] = reactExports.useState(/* @__PURE__ */ new Set());
24345
24379
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "w-80 bg-card border-r border-border flex flex-col h-full", children: [
24346
24380
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("h1", { className: "ml-2 text-lg font-semibold", children: [
@@ -24390,17 +24424,46 @@ const Sidebar = ({
24390
24424
  }
24391
24425
  )
24392
24426
  ] })
24393
- ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
24394
- /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "text-sm font-medium", children: "URL" }),
24395
- /* @__PURE__ */ jsxRuntimeExports.jsx(
24396
- Input,
24397
- {
24398
- placeholder: "URL",
24399
- value: sseUrl,
24400
- onChange: (e) => setSseUrl(e.target.value),
24401
- className: "font-mono"
24402
- }
24403
- )
24427
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
24428
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
24429
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "text-sm font-medium", children: "URL" }),
24430
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24431
+ Input,
24432
+ {
24433
+ placeholder: "URL",
24434
+ value: sseUrl,
24435
+ onChange: (e) => setSseUrl(e.target.value),
24436
+ className: "font-mono"
24437
+ }
24438
+ )
24439
+ ] }),
24440
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
24441
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
24442
+ Button,
24443
+ {
24444
+ variant: "outline",
24445
+ onClick: () => setShowBearerToken(!showBearerToken),
24446
+ className: "flex items-center w-full",
24447
+ children: [
24448
+ showBearerToken ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "w-4 h-4 mr-2" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "w-4 h-4 mr-2" }),
24449
+ "Authentication"
24450
+ ]
24451
+ }
24452
+ ),
24453
+ showBearerToken && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
24454
+ /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "text-sm font-medium", children: "Bearer Token" }),
24455
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
24456
+ Input,
24457
+ {
24458
+ placeholder: "Bearer Token",
24459
+ value: bearerToken,
24460
+ onChange: (e) => setBearerToken(e.target.value),
24461
+ className: "font-mono",
24462
+ type: "password"
24463
+ }
24464
+ )
24465
+ ] })
24466
+ ] })
24404
24467
  ] }),
24405
24468
  transportType === "stdio" && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
24406
24469
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -25352,7 +25415,7 @@ var prism = { exports: {} };
25352
25415
  if (typeof document === "undefined") {
25353
25416
  return null;
25354
25417
  }
25355
- if ("currentScript" in document && 1 < 2) {
25418
+ if (document.currentScript && document.currentScript.tagName === "SCRIPT" && 1 < 2) {
25356
25419
  return (
25357
25420
  /** @type {any} */
25358
25421
  document.currentScript
@@ -27124,9 +27187,10 @@ const params = new URLSearchParams(window.location.search);
27124
27187
  const PROXY_PORT = params.get("proxyPort") ?? "3000";
27125
27188
  const PROXY_SERVER_URL = `http://localhost:${PROXY_PORT}`;
27126
27189
  const App = () => {
27190
+ var _a;
27127
27191
  if (window.location.pathname === "/oauth/callback") {
27128
27192
  const OAuthCallback = React$2.lazy(
27129
- () => __vitePreload(() => import("./OAuthCallback-DmuQ-LZN.js"), true ? [] : void 0)
27193
+ () => __vitePreload(() => import("./OAuthCallback-KG5AbO62.js"), true ? [] : void 0)
27130
27194
  );
27131
27195
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, {}) });
27132
27196
  }
@@ -27158,6 +27222,9 @@ const App = () => {
27158
27222
  const [stdErrNotifications, setStdErrNotifications] = reactExports.useState([]);
27159
27223
  const [roots, setRoots] = reactExports.useState([]);
27160
27224
  const [env, setEnv] = reactExports.useState({});
27225
+ const [bearerToken, setBearerToken] = reactExports.useState(() => {
27226
+ return localStorage.getItem("lastBearerToken") || "";
27227
+ });
27161
27228
  const [pendingSampleRequests, setPendingSampleRequests] = reactExports.useState([]);
27162
27229
  const nextRequestId = reactExports.useRef(0);
27163
27230
  const rootsRef = reactExports.useRef([]);
@@ -27178,6 +27245,7 @@ const App = () => {
27178
27245
  const [selectedResource, setSelectedResource] = reactExports.useState(
27179
27246
  null
27180
27247
  );
27248
+ const [resourceSubscriptions, setResourceSubscriptions] = reactExports.useState(/* @__PURE__ */ new Set());
27181
27249
  const [selectedPrompt, setSelectedPrompt] = reactExports.useState(null);
27182
27250
  const [selectedTool, setSelectedTool] = reactExports.useState(null);
27183
27251
  const [nextResourceCursor, setNextResourceCursor] = reactExports.useState();
@@ -27202,6 +27270,7 @@ const App = () => {
27202
27270
  args,
27203
27271
  sseUrl,
27204
27272
  env,
27273
+ bearerToken,
27205
27274
  proxyServerUrl: PROXY_SERVER_URL,
27206
27275
  onNotification: (notification) => {
27207
27276
  setNotifications((prev) => [...prev, notification]);
@@ -27232,6 +27301,9 @@ const App = () => {
27232
27301
  reactExports.useEffect(() => {
27233
27302
  localStorage.setItem("lastTransportType", transportType);
27234
27303
  }, [transportType]);
27304
+ reactExports.useEffect(() => {
27305
+ localStorage.setItem("lastBearerToken", bearerToken);
27306
+ }, [bearerToken]);
27235
27307
  reactExports.useEffect(() => {
27236
27308
  const serverUrl = params.get("serverUrl");
27237
27309
  if (serverUrl) {
@@ -27323,6 +27395,36 @@ const App = () => {
27323
27395
  );
27324
27396
  setResourceContent(JSON.stringify(response, null, 2));
27325
27397
  };
27398
+ const subscribeToResource = async (uri) => {
27399
+ if (!resourceSubscriptions.has(uri)) {
27400
+ await makeRequest(
27401
+ {
27402
+ method: "resources/subscribe",
27403
+ params: { uri }
27404
+ },
27405
+ z.object({}),
27406
+ "resources"
27407
+ );
27408
+ const clone = new Set(resourceSubscriptions);
27409
+ clone.add(uri);
27410
+ setResourceSubscriptions(clone);
27411
+ }
27412
+ };
27413
+ const unsubscribeFromResource = async (uri) => {
27414
+ if (resourceSubscriptions.has(uri)) {
27415
+ await makeRequest(
27416
+ {
27417
+ method: "resources/unsubscribe",
27418
+ params: { uri }
27419
+ },
27420
+ z.object({}),
27421
+ "resources"
27422
+ );
27423
+ const clone = new Set(resourceSubscriptions);
27424
+ clone.delete(uri);
27425
+ setResourceSubscriptions(clone);
27426
+ }
27427
+ };
27326
27428
  const listPrompts = async () => {
27327
27429
  const response = await makeRequest(
27328
27430
  {
@@ -27393,6 +27495,8 @@ const App = () => {
27393
27495
  setSseUrl,
27394
27496
  env,
27395
27497
  setEnv,
27498
+ bearerToken,
27499
+ setBearerToken,
27396
27500
  onConnect: connectMcpServer,
27397
27501
  stdErrNotifications
27398
27502
  }
@@ -27486,6 +27590,16 @@ const App = () => {
27486
27590
  clearError("resources");
27487
27591
  setSelectedResource(resource);
27488
27592
  },
27593
+ resourceSubscriptionsSupported: ((_a = serverCapabilities == null ? void 0 : serverCapabilities.resources) == null ? void 0 : _a.subscribe) || false,
27594
+ resourceSubscriptions,
27595
+ subscribeToResource: (uri) => {
27596
+ clearError("resources");
27597
+ subscribeToResource(uri);
27598
+ },
27599
+ unsubscribeFromResource: (uri) => {
27600
+ clearError("resources");
27601
+ unsubscribeFromResource(uri);
27602
+ },
27489
27603
  handleCompletion,
27490
27604
  completionsSupported,
27491
27605
  resourceContent,
@@ -1485,6 +1485,9 @@ video {
1485
1485
  .col-span-2 {
1486
1486
  grid-column: span 2 / span 2;
1487
1487
  }
1488
+ .row-auto {
1489
+ grid-row: auto;
1490
+ }
1488
1491
  .-mx-1 {
1489
1492
  margin-left: -0.25rem;
1490
1493
  margin-right: -0.25rem;
@@ -1601,6 +1604,9 @@ video {
1601
1604
  .w-2 {
1602
1605
  width: 0.5rem;
1603
1606
  }
1607
+ .w-2\/5 {
1608
+ width: 40%;
1609
+ }
1604
1610
  .w-3\.5 {
1605
1611
  width: 0.875rem;
1606
1612
  }
@@ -1654,18 +1660,6 @@ video {
1654
1660
  --tw-translate-y: -50%;
1655
1661
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1656
1662
  }
1657
- .transform {
1658
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
1659
- }
1660
- @keyframes pulse {
1661
-
1662
- 50% {
1663
- opacity: .5;
1664
- }
1665
- }
1666
- .animate-pulse {
1667
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
1668
- }
1669
1663
  .cursor-default {
1670
1664
  cursor: default;
1671
1665
  }
@@ -1704,6 +1698,9 @@ video {
1704
1698
  .justify-between {
1705
1699
  justify-content: space-between;
1706
1700
  }
1701
+ .gap-1 {
1702
+ gap: 0.25rem;
1703
+ }
1707
1704
  .gap-2 {
1708
1705
  gap: 0.5rem;
1709
1706
  }
@@ -1858,17 +1855,6 @@ video {
1858
1855
  .bg-transparent {
1859
1856
  background-color: transparent;
1860
1857
  }
1861
- .bg-gradient-to-r {
1862
- background-image: linear-gradient(to right, var(--tw-gradient-stops));
1863
- }
1864
- .from-purple-500 {
1865
- --tw-gradient-from: #a855f7 var(--tw-gradient-from-position);
1866
- --tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);
1867
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
1868
- }
1869
- .to-pink-500 {
1870
- --tw-gradient-to: #ec4899 var(--tw-gradient-to-position);
1871
- }
1872
1858
  .p-0 {
1873
1859
  padding: 0px;
1874
1860
  }
@@ -1945,10 +1931,6 @@ video {
1945
1931
  .font-mono {
1946
1932
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
1947
1933
  }
1948
- .text-3xl {
1949
- font-size: 1.875rem;
1950
- line-height: 2.25rem;
1951
- }
1952
1934
  .text-lg {
1953
1935
  font-size: 1.125rem;
1954
1936
  line-height: 1.75rem;
@@ -2109,13 +2091,6 @@ video {
2109
2091
  .filter {
2110
2092
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
2111
2093
  }
2112
- .transition {
2113
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
2114
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
2115
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
2116
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
2117
- transition-duration: 150ms;
2118
- }
2119
2094
  .transition-all {
2120
2095
  transition-property: all;
2121
2096
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
@@ -2134,9 +2109,6 @@ video {
2134
2109
  .duration-200 {
2135
2110
  transition-duration: 200ms;
2136
2111
  }
2137
- .duration-300 {
2138
- transition-duration: 300ms;
2139
- }
2140
2112
  @keyframes enter {
2141
2113
 
2142
2114
  from {
@@ -2154,9 +2126,6 @@ video {
2154
2126
  .duration-200 {
2155
2127
  animation-duration: 200ms;
2156
2128
  }
2157
- .duration-300 {
2158
- animation-duration: 300ms;
2159
- }
2160
2129
 
2161
2130
  :root {
2162
2131
  font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif;
@@ -2263,12 +2232,6 @@ button[role="checkbox"] {
2263
2232
  border-bottom-width: 0px;
2264
2233
  }
2265
2234
 
2266
- .hover\:scale-110:hover {
2267
- --tw-scale-x: 1.1;
2268
- --tw-scale-y: 1.1;
2269
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
2270
- }
2271
-
2272
2235
  .hover\:bg-accent:hover {
2273
2236
  background-color: hsl(var(--accent));
2274
2237
  }
@@ -2294,16 +2257,6 @@ button[role="checkbox"] {
2294
2257
  background-color: hsl(var(--secondary) / 0.8);
2295
2258
  }
2296
2259
 
2297
- .hover\:from-purple-600:hover {
2298
- --tw-gradient-from: #9333ea var(--tw-gradient-from-position);
2299
- --tw-gradient-to: rgb(147 51 234 / 0) var(--tw-gradient-to-position);
2300
- --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
2301
- }
2302
-
2303
- .hover\:to-pink-600:hover {
2304
- --tw-gradient-to: #db2777 var(--tw-gradient-to-position);
2305
- }
2306
-
2307
2260
  .hover\:text-accent-foreground:hover {
2308
2261
  color: hsl(var(--accent-foreground));
2309
2262
  }
@@ -2346,17 +2299,6 @@ button[role="checkbox"] {
2346
2299
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2347
2300
  }
2348
2301
 
2349
- .focus\:ring-4:focus {
2350
- --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
2351
- --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
2352
- box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
2353
- }
2354
-
2355
- .focus\:ring-purple-300:focus {
2356
- --tw-ring-opacity: 1;
2357
- --tw-ring-color: rgb(216 180 254 / var(--tw-ring-opacity, 1));
2358
- }
2359
-
2360
2302
  .focus\:ring-ring:focus {
2361
2303
  --tw-ring-color: hsl(var(--ring));
2362
2304
  }
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-mKSHihrk.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-BC_1zPdU.css">
8
+ <script type="module" crossorigin src="/assets/index-BK1TrpAN.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-Dt6l7sEy.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-client",
3
- "version": "0.5.1",
3
+ "version": "0.6.0",
4
4
  "description": "Client-side application for the Model Context Protocol inspector",
5
5
  "license": "MIT",
6
6
  "author": "Anthropic, PBC (https://anthropic.com)",