@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 +3 -1
- package/dist/assets/{OAuthCallback-CJlw2xLt.js → OAuthCallback-UvVmnvtb.js} +1 -1
- package/dist/assets/{OAuthDebugCallback-0U3Rpr19.js → OAuthDebugCallback-CrRUPVLi.js} +1 -1
- package/dist/assets/{index-1IEtev7A.css → index-C1MLjTGf.css} +0 -3
- package/dist/assets/{index-CfNcvwpX.js → index-Daz_CV25.js} +237 -64
- package/dist/index.html +2 -2
- package/package.json +1 -1
package/bin/start.js
CHANGED
|
@@ -100,7 +100,9 @@ async function main() {
|
|
|
100
100
|
|
|
101
101
|
if (serverOk) {
|
|
102
102
|
try {
|
|
103
|
-
|
|
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-
|
|
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-
|
|
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(() => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/OAuthCallback-
|
|
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.
|
|
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
|
|
24222
|
-
|
|
24223
|
-
|
|
24224
|
-
|
|
24225
|
-
|
|
24226
|
-
|
|
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
|
|
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, {
|
|
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, {
|
|
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, {
|
|
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.
|
|
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: "
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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.
|
|
37393
|
-
|
|
37533
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
37534
|
+
"div",
|
|
37394
37535
|
{
|
|
37395
|
-
|
|
37396
|
-
|
|
37397
|
-
|
|
37398
|
-
|
|
37399
|
-
|
|
37400
|
-
|
|
37401
|
-
|
|
37402
|
-
|
|
37403
|
-
|
|
37404
|
-
|
|
37405
|
-
|
|
37406
|
-
|
|
37407
|
-
|
|
37408
|
-
|
|
37409
|
-
|
|
37410
|
-
|
|
37411
|
-
|
|
37412
|
-
|
|
37413
|
-
|
|
37414
|
-
|
|
37415
|
-
|
|
37416
|
-
|
|
37417
|
-
|
|
37418
|
-
|
|
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-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
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