@modelcontextprotocol/inspector-client 0.14.0 → 0.14.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/bin/start.js CHANGED
@@ -100,7 +100,9 @@ async function main() {
100
100
 
101
101
  if (serverOk) {
102
102
  try {
103
- if (process.env.MCP_AUTO_OPEN_ENABLED !== "false") {
103
+ // Only auto-open when auth is disabled
104
+ const authDisabled = !!process.env.DANGEROUSLY_OMIT_AUTH;
105
+ if (process.env.MCP_AUTO_OPEN_ENABLED !== "false" && authDisabled) {
104
106
  open(`http://127.0.0.1:${CLIENT_PORT}`);
105
107
  }
106
108
  await spawnPromise("node", [inspectorClientPath], {
@@ -1,4 +1,4 @@
1
- import { u as useToast, r as reactExports, j as jsxRuntimeExports, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-CfNcvwpX.js";
1
+ import { u as useToast, r as reactExports, j as jsxRuntimeExports, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-Daz_CV25.js";
2
2
  import { p as parseOAuthCallbackParams, g as generateOAuthErrorDescription } from "./oauthUtils-DTcoXpSP.js";
3
3
  const OAuthCallback = ({ onConnect }) => {
4
4
  const { toast } = useToast();
@@ -1,4 +1,4 @@
1
- import { r as reactExports, S as SESSION_KEYS, j as jsxRuntimeExports } from "./index-CfNcvwpX.js";
1
+ import { r as reactExports, S as SESSION_KEYS, j as jsxRuntimeExports } from "./index-Daz_CV25.js";
2
2
  import { p as parseOAuthCallbackParams, g as generateOAuthErrorDescription } from "./oauthUtils-DTcoXpSP.js";
3
3
  const OAuthDebugCallback = ({ onConnect }) => {
4
4
  reactExports.useEffect(() => {
@@ -989,9 +989,6 @@ video {
989
989
  .w-8 {
990
990
  width: 2rem;
991
991
  }
992
- .w-80 {
993
- width: 20rem;
994
- }
995
992
  .w-9 {
996
993
  width: 2.25rem;
997
994
  }
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OAuthCallback-CJlw2xLt.js","assets/oauthUtils-DTcoXpSP.js","assets/OAuthDebugCallback-0U3Rpr19.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OAuthCallback-UvVmnvtb.js","assets/oauthUtils-DTcoXpSP.js","assets/OAuthDebugCallback-CrRUPVLi.js"])))=>i.map(i=>d[i]);
2
2
  function _mergeNamespaces(n, m2) {
3
3
  for (var i = 0; i < m2.length; i++) {
4
4
  const e = m2[i];
@@ -16039,22 +16039,32 @@ const DEFAULT_INSPECTOR_CONFIG = {
16039
16039
  MCP_SERVER_REQUEST_TIMEOUT: {
16040
16040
  label: "Request Timeout",
16041
16041
  description: "Timeout for requests to the MCP server (ms)",
16042
- value: 1e4
16042
+ value: 1e4,
16043
+ is_session_item: false
16043
16044
  },
16044
16045
  MCP_REQUEST_TIMEOUT_RESET_ON_PROGRESS: {
16045
16046
  label: "Reset Timeout on Progress",
16046
16047
  description: "Reset timeout on progress notifications",
16047
- value: true
16048
+ value: true,
16049
+ is_session_item: false
16048
16050
  },
16049
16051
  MCP_REQUEST_MAX_TOTAL_TIMEOUT: {
16050
16052
  label: "Maximum Total Timeout",
16051
16053
  description: "Maximum total timeout for requests sent to the MCP server (ms) (Use with progress notifications)",
16052
- value: 6e4
16054
+ value: 6e4,
16055
+ is_session_item: false
16053
16056
  },
16054
16057
  MCP_PROXY_FULL_ADDRESS: {
16055
16058
  label: "Inspector Proxy Address",
16056
16059
  description: "Set this if you are running the MCP Inspector Proxy on a non-default address. Example: http://10.1.1.22:5577",
16057
- value: ""
16060
+ value: "",
16061
+ is_session_item: false
16062
+ },
16063
+ MCP_PROXY_AUTH_TOKEN: {
16064
+ label: "Proxy Session Token",
16065
+ description: "Session token for authenticating with the MCP Proxy Server (displayed in proxy console on startup)",
16066
+ value: "",
16067
+ is_session_item: true
16058
16068
  }
16059
16069
  };
16060
16070
  const EMPTY_DEBUGGER_STATE = {
@@ -24146,7 +24156,7 @@ const StdErrNotificationSchema = NotificationSchema.extend({
24146
24156
  ClientNotificationSchema.or(
24147
24157
  StdErrNotificationSchema
24148
24158
  ).or(ServerNotificationSchema).or(NotificationSchema);
24149
- const version$1 = "0.14.0";
24159
+ const version$1 = "0.14.2";
24150
24160
  const packageJson = {
24151
24161
  version: version$1
24152
24162
  };
@@ -24166,6 +24176,12 @@ const resetRequestTimeoutOnProgress = (config) => {
24166
24176
  const getMCPServerRequestMaxTotalTimeout = (config) => {
24167
24177
  return config.MCP_REQUEST_MAX_TOTAL_TIMEOUT.value;
24168
24178
  };
24179
+ const getMCPProxyAuthToken = (config) => {
24180
+ return {
24181
+ token: config.MCP_PROXY_AUTH_TOKEN.value,
24182
+ header: "X-MCP-Proxy-Auth"
24183
+ };
24184
+ };
24169
24185
  const getSearchParam = (key) => {
24170
24186
  try {
24171
24187
  const url = new URL(window.location.href);
@@ -24218,26 +24234,46 @@ const getConfigOverridesFromQueryParams = (defaultConfig) => {
24218
24234
  return overrides;
24219
24235
  };
24220
24236
  const initializeInspectorConfig = (localStorageKey) => {
24221
- const savedConfig = localStorage.getItem(localStorageKey);
24222
- let baseConfig;
24223
- if (savedConfig) {
24224
- const mergedConfig = {
24225
- ...DEFAULT_INSPECTOR_CONFIG,
24226
- ...JSON.parse(savedConfig)
24237
+ const savedPersistentConfig = localStorage.getItem(localStorageKey);
24238
+ const savedEphemeralConfig = sessionStorage.getItem(
24239
+ `${localStorageKey}_ephemeral`
24240
+ );
24241
+ let baseConfig = { ...DEFAULT_INSPECTOR_CONFIG };
24242
+ if (savedPersistentConfig) {
24243
+ const parsedPersistentConfig = JSON.parse(savedPersistentConfig);
24244
+ baseConfig = { ...baseConfig, ...parsedPersistentConfig };
24245
+ }
24246
+ if (savedEphemeralConfig) {
24247
+ const parsedEphemeralConfig = JSON.parse(savedEphemeralConfig);
24248
+ baseConfig = { ...baseConfig, ...parsedEphemeralConfig };
24249
+ }
24250
+ for (const [key, value] of Object.entries(baseConfig)) {
24251
+ baseConfig[key] = {
24252
+ ...value,
24253
+ label: DEFAULT_INSPECTOR_CONFIG[key].label,
24254
+ description: DEFAULT_INSPECTOR_CONFIG[key].description,
24255
+ is_session_item: DEFAULT_INSPECTOR_CONFIG[key].is_session_item
24227
24256
  };
24228
- for (const [key, value] of Object.entries(mergedConfig)) {
24229
- mergedConfig[key] = {
24230
- ...value,
24231
- label: DEFAULT_INSPECTOR_CONFIG[key].label
24232
- };
24233
- }
24234
- baseConfig = mergedConfig;
24235
- } else {
24236
- baseConfig = DEFAULT_INSPECTOR_CONFIG;
24237
24257
  }
24238
24258
  const overrides = getConfigOverridesFromQueryParams(DEFAULT_INSPECTOR_CONFIG);
24239
24259
  return { ...baseConfig, ...overrides };
24240
24260
  };
24261
+ const saveInspectorConfig = (localStorageKey, config) => {
24262
+ const persistentConfig = {};
24263
+ const ephemeralConfig = {};
24264
+ for (const [key, value] of Object.entries(config)) {
24265
+ if (value.is_session_item) {
24266
+ ephemeralConfig[key] = value;
24267
+ } else {
24268
+ persistentConfig[key] = value;
24269
+ }
24270
+ }
24271
+ localStorage.setItem(localStorageKey, JSON.stringify(persistentConfig));
24272
+ sessionStorage.setItem(
24273
+ `${localStorageKey}_ephemeral`,
24274
+ JSON.stringify(ephemeralConfig)
24275
+ );
24276
+ };
24241
24277
  function useConnection({
24242
24278
  transportType,
24243
24279
  command,
@@ -24375,7 +24411,12 @@ function useConnection({
24375
24411
  const checkProxyHealth = async () => {
24376
24412
  try {
24377
24413
  const proxyHealthUrl = new URL(`${getMCPProxyAddress(config)}/health`);
24378
- const proxyHealthResponse = await fetch(proxyHealthUrl);
24414
+ const { token: proxyAuthToken, header: proxyAuthTokenHeader } = getMCPProxyAuthToken(config);
24415
+ const headers = {};
24416
+ if (proxyAuthToken) {
24417
+ headers[proxyAuthTokenHeader] = `Bearer ${proxyAuthToken}`;
24418
+ }
24419
+ const proxyHealthResponse = await fetch(proxyHealthUrl, { headers });
24379
24420
  const proxyHealth = await proxyHealthResponse.json();
24380
24421
  if ((proxyHealth == null ? void 0 : proxyHealth.status) !== "ok") {
24381
24422
  throw new Error("MCP Proxy Server is not healthy");
@@ -24388,6 +24429,9 @@ function useConnection({
24388
24429
  const is401Error = (error) => {
24389
24430
  return error instanceof SseError && error.code === 401 || error instanceof Error && error.message.includes("401") || error instanceof Error && error.message.includes("Unauthorized");
24390
24431
  };
24432
+ const isProxyAuthError = (error) => {
24433
+ return error instanceof Error && error.message.includes("Authentication required. Use the session token");
24434
+ };
24391
24435
  const handleAuthError = async (error) => {
24392
24436
  if (is401Error(error)) {
24393
24437
  const serverAuthProvider = new InspectorOAuthClientProvider(sseUrl);
@@ -24431,6 +24475,11 @@ function useConnection({
24431
24475
  headers[authHeaderName] = `Bearer ${token}`;
24432
24476
  }
24433
24477
  }
24478
+ const { token: proxyAuthToken, header: proxyAuthTokenHeader } = getMCPProxyAuthToken(config);
24479
+ const proxyHeaders = {};
24480
+ if (proxyAuthToken) {
24481
+ proxyHeaders[proxyAuthTokenHeader] = `Bearer ${proxyAuthToken}`;
24482
+ }
24434
24483
  let transportOptions;
24435
24484
  let mcpProxyServerUrl;
24436
24485
  switch (transportType) {
@@ -24442,10 +24491,13 @@ function useConnection({
24442
24491
  transportOptions = {
24443
24492
  authProvider: serverAuthProvider,
24444
24493
  eventSourceInit: {
24445
- fetch: (url, init) => fetch(url, { ...init, headers })
24494
+ fetch: (url, init) => fetch(url, {
24495
+ ...init,
24496
+ headers: { ...headers, ...proxyHeaders }
24497
+ })
24446
24498
  },
24447
24499
  requestInit: {
24448
- headers
24500
+ headers: { ...headers, ...proxyHeaders }
24449
24501
  }
24450
24502
  };
24451
24503
  break;
@@ -24454,10 +24506,13 @@ function useConnection({
24454
24506
  mcpProxyServerUrl.searchParams.append("url", sseUrl);
24455
24507
  transportOptions = {
24456
24508
  eventSourceInit: {
24457
- fetch: (url, init) => fetch(url, { ...init, headers })
24509
+ fetch: (url, init) => fetch(url, {
24510
+ ...init,
24511
+ headers: { ...headers, ...proxyHeaders }
24512
+ })
24458
24513
  },
24459
24514
  requestInit: {
24460
- headers
24515
+ headers: { ...headers, ...proxyHeaders }
24461
24516
  }
24462
24517
  };
24463
24518
  break;
@@ -24466,10 +24521,13 @@ function useConnection({
24466
24521
  mcpProxyServerUrl.searchParams.append("url", sseUrl);
24467
24522
  transportOptions = {
24468
24523
  eventSourceInit: {
24469
- fetch: (url, init) => fetch(url, { ...init, headers })
24524
+ fetch: (url, init) => fetch(url, {
24525
+ ...init,
24526
+ headers: { ...headers, ...proxyHeaders }
24527
+ })
24470
24528
  },
24471
24529
  requestInit: {
24472
- headers
24530
+ headers: { ...headers, ...proxyHeaders }
24473
24531
  },
24474
24532
  // TODO these should be configurable...
24475
24533
  reconnectionOptions: {
@@ -24532,6 +24590,15 @@ function useConnection({
24532
24590
  `Failed to connect to MCP Server via the MCP Inspector Proxy: ${mcpProxyServerUrl}:`,
24533
24591
  error
24534
24592
  );
24593
+ if (isProxyAuthError(error)) {
24594
+ toast2({
24595
+ title: "Proxy Authentication Required",
24596
+ description: "Please enter the session token from the proxy server console in the Configuration settings.",
24597
+ variant: "destructive"
24598
+ });
24599
+ setConnectionStatus("error");
24600
+ return;
24601
+ }
24535
24602
  const shouldRetry = await handleAuthError(error);
24536
24603
  if (shouldRetry) {
24537
24604
  return connect(void 0, retryCount + 1);
@@ -24633,6 +24700,52 @@ function useDraggablePane(initialHeight) {
24633
24700
  handleDragStart
24634
24701
  };
24635
24702
  }
24703
+ function useDraggableSidebar(initialWidth) {
24704
+ const [width, setWidth] = reactExports.useState(initialWidth);
24705
+ const [isDragging, setIsDragging] = reactExports.useState(false);
24706
+ const dragStartX = reactExports.useRef(0);
24707
+ const dragStartWidth = reactExports.useRef(0);
24708
+ const handleDragStart = reactExports.useCallback(
24709
+ (e) => {
24710
+ setIsDragging(true);
24711
+ dragStartX.current = e.clientX;
24712
+ dragStartWidth.current = width;
24713
+ document.body.style.userSelect = "none";
24714
+ },
24715
+ [width]
24716
+ );
24717
+ const handleDragMove = reactExports.useCallback(
24718
+ (e) => {
24719
+ if (!isDragging) return;
24720
+ const deltaX = e.clientX - dragStartX.current;
24721
+ const newWidth = Math.max(
24722
+ 200,
24723
+ Math.min(600, dragStartWidth.current + deltaX)
24724
+ );
24725
+ setWidth(newWidth);
24726
+ },
24727
+ [isDragging]
24728
+ );
24729
+ const handleDragEnd = reactExports.useCallback(() => {
24730
+ setIsDragging(false);
24731
+ document.body.style.userSelect = "";
24732
+ }, []);
24733
+ reactExports.useEffect(() => {
24734
+ if (isDragging) {
24735
+ window.addEventListener("mousemove", handleDragMove);
24736
+ window.addEventListener("mouseup", handleDragEnd);
24737
+ return () => {
24738
+ window.removeEventListener("mousemove", handleDragMove);
24739
+ window.removeEventListener("mouseup", handleDragEnd);
24740
+ };
24741
+ }
24742
+ }, [isDragging, handleDragMove, handleDragEnd]);
24743
+ return {
24744
+ width,
24745
+ isDragging,
24746
+ handleDragStart
24747
+ };
24748
+ }
24636
24749
  var useReactId = React$1[" useId ".trim().toString()] || (() => void 0);
24637
24750
  var count$1 = 0;
24638
24751
  function useId(deterministicId) {
@@ -35185,7 +35298,7 @@ const useTheme = () => {
35185
35298
  [theme, setThemeWithSideEffect]
35186
35299
  );
35187
35300
  };
35188
- const version = "0.14.0";
35301
+ const version = "0.14.2";
35189
35302
  var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
35190
35303
  createPopperScope
35191
35304
  ]);
@@ -35788,7 +35901,7 @@ const Sidebar = ({
35788
35901
  reportError2(error);
35789
35902
  }
35790
35903
  }, [generateMCPServerFile, toast2, reportError2]);
35791
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "w-80 bg-card border-r border-border flex flex-col h-full", children: [
35904
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "bg-card border-r border-border flex flex-col h-full", children: [
35792
35905
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center justify-between p-4 border-b border-gray-200 dark:border-border", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("h1", { className: "ml-2 text-lg font-semibold", children: [
35793
35906
  "MCP Inspector v",
35794
35907
  version
@@ -35856,7 +35969,19 @@ const Sidebar = ({
35856
35969
  ] }) : /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
35857
35970
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [
35858
35971
  /* @__PURE__ */ jsxRuntimeExports.jsx("label", { className: "text-sm font-medium", htmlFor: "sse-url-input", children: "URL" }),
35859
- /* @__PURE__ */ jsxRuntimeExports.jsx(
35972
+ sseUrl ? /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
35973
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
35974
+ Input,
35975
+ {
35976
+ id: "sse-url-input",
35977
+ placeholder: "URL",
35978
+ value: sseUrl,
35979
+ onChange: (e) => setSseUrl(e.target.value),
35980
+ className: "font-mono"
35981
+ }
35982
+ ) }),
35983
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { children: sseUrl })
35984
+ ] }) : /* @__PURE__ */ jsxRuntimeExports.jsx(
35860
35985
  Input,
35861
35986
  {
35862
35987
  id: "sse-url-input",
@@ -36207,11 +36332,17 @@ const Sidebar = ({
36207
36332
  }
36208
36333
  ),
36209
36334
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm text-gray-600 dark:text-gray-400", children: (() => {
36335
+ var _a;
36210
36336
  switch (connectionStatus) {
36211
36337
  case "connected":
36212
36338
  return "Connected";
36213
- case "error":
36214
- return "Connection Error, is your MCP server running?";
36339
+ case "error": {
36340
+ const hasProxyToken = (_a = config.MCP_PROXY_AUTH_TOKEN) == null ? void 0 : _a.value;
36341
+ if (!hasProxyToken) {
36342
+ return "Connection Error - Did you add the proxy session token in Configuration?";
36343
+ }
36344
+ return "Connection Error - Check if your MCP server is running and proxy token is correct";
36345
+ }
36215
36346
  case "error-connecting-to-proxy":
36216
36347
  return "Error Connecting to MCP Inspector Proxy - Check Console logs";
36217
36348
  default:
@@ -37015,6 +37146,11 @@ const App = () => {
37015
37146
  const [nextToolCursor, setNextToolCursor] = reactExports.useState();
37016
37147
  const progressTokenRef = reactExports.useRef(0);
37017
37148
  const { height: historyPaneHeight, handleDragStart } = useDraggablePane(300);
37149
+ const {
37150
+ width: sidebarWidth,
37151
+ isDragging: isSidebarDragging,
37152
+ handleDragStart: handleSidebarDragStart
37153
+ } = useDraggableSidebar(320);
37018
37154
  const {
37019
37155
  connectionStatus,
37020
37156
  serverCapabilities,
@@ -37071,7 +37207,7 @@ const App = () => {
37071
37207
  localStorage.setItem("lastHeaderName", headerName);
37072
37208
  }, [headerName]);
37073
37209
  reactExports.useEffect(() => {
37074
- localStorage.setItem(CONFIG_LOCAL_STORAGE_KEY, JSON.stringify(config));
37210
+ saveInspectorConfig(CONFIG_LOCAL_STORAGE_KEY, config);
37075
37211
  }, [config]);
37076
37212
  const onOAuthConnect = reactExports.useCallback(
37077
37213
  (serverUrl) => {
@@ -37163,7 +37299,12 @@ const App = () => {
37163
37299
  loadOAuthTokens();
37164
37300
  }, [sseUrl]);
37165
37301
  reactExports.useEffect(() => {
37166
- fetch(`${getMCPProxyAddress(config)}/config`).then((response) => response.json()).then((data2) => {
37302
+ const headers = {};
37303
+ const { token: proxyAuthToken, header: proxyAuthTokenHeader } = getMCPProxyAuthToken(config);
37304
+ if (proxyAuthToken) {
37305
+ headers[proxyAuthTokenHeader] = `Bearer ${proxyAuthToken}`;
37306
+ }
37307
+ fetch(`${getMCPProxyAddress(config)}/config`, { headers }).then((response) => response.json()).then((data2) => {
37167
37308
  setEnv(data2.defaultEnvironment);
37168
37309
  if (data2.defaultCommand) {
37169
37310
  setCommand(data2.defaultCommand);
@@ -37174,7 +37315,7 @@ const App = () => {
37174
37315
  }).catch(
37175
37316
  (error) => console.error("Error fetching default environment:", error)
37176
37317
  );
37177
- }, []);
37318
+ }, [config]);
37178
37319
  reactExports.useEffect(() => {
37179
37320
  rootsRef.current = roots;
37180
37321
  }, [roots]);
@@ -37378,44 +37519,76 @@ const App = () => {
37378
37519
  ) });
37379
37520
  if (window.location.pathname === "/oauth/callback") {
37380
37521
  const OAuthCallback = React.lazy(
37381
- () => __vitePreload(() => import("./OAuthCallback-CJlw2xLt.js"), true ? __vite__mapDeps([0,1]) : void 0)
37522
+ () => __vitePreload(() => import("./OAuthCallback-UvVmnvtb.js"), true ? __vite__mapDeps([0,1]) : void 0)
37382
37523
  );
37383
37524
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
37384
37525
  }
37385
37526
  if (window.location.pathname === "/oauth/callback/debug") {
37386
37527
  const OAuthDebugCallback = React.lazy(
37387
- () => __vitePreload(() => import("./OAuthDebugCallback-0U3Rpr19.js"), true ? __vite__mapDeps([2,1]) : void 0)
37528
+ () => __vitePreload(() => import("./OAuthDebugCallback-CrRUPVLi.js"), true ? __vite__mapDeps([2,1]) : void 0)
37388
37529
  );
37389
37530
  return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
37390
37531
  }
37391
37532
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-screen bg-background", children: [
37392
- /* @__PURE__ */ jsxRuntimeExports.jsx(
37393
- Sidebar,
37533
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
37534
+ "div",
37394
37535
  {
37395
- connectionStatus,
37396
- transportType,
37397
- setTransportType,
37398
- command,
37399
- setCommand,
37400
- args,
37401
- setArgs,
37402
- sseUrl,
37403
- setSseUrl,
37404
- env,
37405
- setEnv,
37406
- config,
37407
- setConfig,
37408
- bearerToken,
37409
- setBearerToken,
37410
- headerName,
37411
- setHeaderName,
37412
- onConnect: connectMcpServer,
37413
- onDisconnect: disconnectMcpServer,
37414
- stdErrNotifications,
37415
- logLevel,
37416
- sendLogLevelRequest,
37417
- loggingSupported: !!(serverCapabilities == null ? void 0 : serverCapabilities.logging) || false,
37418
- clearStdErrNotifications
37536
+ style: {
37537
+ width: sidebarWidth,
37538
+ minWidth: 200,
37539
+ maxWidth: 600,
37540
+ transition: isSidebarDragging ? "none" : "width 0.15s"
37541
+ },
37542
+ className: "bg-card border-r border-border flex flex-col h-full relative",
37543
+ children: [
37544
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
37545
+ Sidebar,
37546
+ {
37547
+ connectionStatus,
37548
+ transportType,
37549
+ setTransportType,
37550
+ command,
37551
+ setCommand,
37552
+ args,
37553
+ setArgs,
37554
+ sseUrl,
37555
+ setSseUrl,
37556
+ env,
37557
+ setEnv,
37558
+ config,
37559
+ setConfig,
37560
+ bearerToken,
37561
+ setBearerToken,
37562
+ headerName,
37563
+ setHeaderName,
37564
+ onConnect: connectMcpServer,
37565
+ onDisconnect: disconnectMcpServer,
37566
+ stdErrNotifications,
37567
+ logLevel,
37568
+ sendLogLevelRequest,
37569
+ loggingSupported: !!(serverCapabilities == null ? void 0 : serverCapabilities.logging) || false,
37570
+ clearStdErrNotifications
37571
+ }
37572
+ ),
37573
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
37574
+ "div",
37575
+ {
37576
+ onMouseDown: handleSidebarDragStart,
37577
+ style: {
37578
+ cursor: "col-resize",
37579
+ position: "absolute",
37580
+ top: 0,
37581
+ right: 0,
37582
+ width: 6,
37583
+ height: "100%",
37584
+ zIndex: 10,
37585
+ background: isSidebarDragging ? "rgba(0,0,0,0.08)" : "transparent"
37586
+ },
37587
+ "aria-label": "Resize sidebar",
37588
+ "data-testid": "sidebar-drag-handle"
37589
+ }
37590
+ )
37591
+ ]
37419
37592
  }
37420
37593
  ),
37421
37594
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col overflow-hidden", children: [
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-CfNcvwpX.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-1IEtev7A.css">
8
+ <script type="module" crossorigin src="/assets/index-Daz_CV25.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-C1MLjTGf.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.14.0",
3
+ "version": "0.14.2",
4
4
  "description": "Client-side application for the Model Context Protocol inspector",
5
5
  "license": "MIT",
6
6
  "author": "Anthropic, PBC (https://anthropic.com)",