@modelcontextprotocol/inspector 1.0.4 → 1.0.5
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/client/dist/assets/{OAuthCallback-Cb6VJMaq.js → OAuthCallback-HH7qRC_N.js} +1 -1
- package/client/dist/assets/{OAuthDebugCallback-CgAV2c_T.js → OAuthDebugCallback-CEN7EFMg.js} +1 -1
- package/client/dist/assets/{index-Bvgm3HOZ.js → index-BA98C07j.js} +4 -4
- package/client/dist/index.html +1 -1
- package/package.json +5 -5
- package/server/build/proxy-security.js +25 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { u as useToast, r as reactExports, c as clearOAuthConnectionSnapshot, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-
|
|
1
|
+
import { u as useToast, r as reactExports, c as clearOAuthConnectionSnapshot, j as jsxRuntimeExports, p as parseOAuthCallbackParams, g as generateOAuthErrorDescription, S as SESSION_KEYS, I as InspectorOAuthClientProvider, a as auth } from "./index-BA98C07j.js";
|
|
2
2
|
const OAuthCallback = ({ onConnect }) => {
|
|
3
3
|
const { toast } = useToast();
|
|
4
4
|
const hasProcessedRef = reactExports.useRef(false);
|
package/client/dist/assets/{OAuthDebugCallback-CgAV2c_T.js → OAuthDebugCallback-CEN7EFMg.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-
|
|
1
|
+
import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-BA98C07j.js";
|
|
2
2
|
const OAuthDebugCallback = ({ onConnect }) => {
|
|
3
3
|
reactExports.useEffect(() => {
|
|
4
4
|
let isProcessed = false;
|
|
@@ -17366,7 +17366,7 @@ object({
|
|
|
17366
17366
|
token_type_hint: string().optional()
|
|
17367
17367
|
}).strip();
|
|
17368
17368
|
const name = "@modelcontextprotocol/inspector-client";
|
|
17369
|
-
const version$1 = "1.0.
|
|
17369
|
+
const version$1 = "1.0.5";
|
|
17370
17370
|
const packageJson = {
|
|
17371
17371
|
name,
|
|
17372
17372
|
version: version$1
|
|
@@ -57479,7 +57479,7 @@ const useTheme = () => {
|
|
|
57479
57479
|
[theme, setThemeWithSideEffect]
|
|
57480
57480
|
);
|
|
57481
57481
|
};
|
|
57482
|
-
const version = "1.0.
|
|
57482
|
+
const version = "1.0.5";
|
|
57483
57483
|
var __defProp$2 = Object.defineProperty;
|
|
57484
57484
|
var __name$2 = (target, value) => __defProp$2(target, "name", { value, configurable: true });
|
|
57485
57485
|
var [createTooltipContext, createTooltipScope] = /* @__PURE__ */ createContextScope("Tooltip", [
|
|
@@ -68413,13 +68413,13 @@ const App = () => {
|
|
|
68413
68413
|
) });
|
|
68414
68414
|
if (window.location.pathname === OAUTH_CALLBACK_PATH) {
|
|
68415
68415
|
const OAuthCallback = React.lazy(
|
|
68416
|
-
() => __vitePreload(() => import("./OAuthCallback-
|
|
68416
|
+
() => __vitePreload(() => import("./OAuthCallback-HH7qRC_N.js"), true ? [] : void 0)
|
|
68417
68417
|
);
|
|
68418
68418
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthCallback, { onConnect: onOAuthConnect }) });
|
|
68419
68419
|
}
|
|
68420
68420
|
if (window.location.pathname === OAUTH_DEBUG_CALLBACK_PATH) {
|
|
68421
68421
|
const OAuthDebugCallback = React.lazy(
|
|
68422
|
-
() => __vitePreload(() => import("./OAuthDebugCallback-
|
|
68422
|
+
() => __vitePreload(() => import("./OAuthDebugCallback-CEN7EFMg.js"), true ? [] : void 0)
|
|
68423
68423
|
);
|
|
68424
68424
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "Loading..." }), children: /* @__PURE__ */ jsxRuntimeExports.jsx(OAuthDebugCallback, { onConnect: onOAuthDebugConnect }) });
|
|
68425
68425
|
}
|
package/client/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
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-
|
|
8
|
+
<script type="module" crossorigin src="/assets/index-BA98C07j.js"></script>
|
|
9
9
|
<link rel="stylesheet" crossorigin href="/assets/index-D-iperlR.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modelcontextprotocol/inspector",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Model Context Protocol inspector",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Model Context Protocol a Series of LF Projects, LLC.",
|
|
@@ -53,13 +53,13 @@
|
|
|
53
53
|
"check-version": "node scripts/check-version-consistency.js"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
|
-
"@modelcontextprotocol/inspector-cli": "^1.0.
|
|
57
|
-
"@modelcontextprotocol/inspector-client": "^1.0.
|
|
58
|
-
"@modelcontextprotocol/inspector-server": "^1.0.
|
|
56
|
+
"@modelcontextprotocol/inspector-cli": "^1.0.5",
|
|
57
|
+
"@modelcontextprotocol/inspector-client": "^1.0.5",
|
|
58
|
+
"@modelcontextprotocol/inspector-server": "^1.0.5",
|
|
59
59
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
60
60
|
"concurrently": "^9.2.0",
|
|
61
61
|
"node-fetch": "^3.3.2",
|
|
62
|
-
"open": "^
|
|
62
|
+
"open": "^11.0.4",
|
|
63
63
|
"shell-quote": "^1.8.4",
|
|
64
64
|
"spawn-rx": "^5.1.2",
|
|
65
65
|
"ts-node": "^10.9.2",
|
|
@@ -24,21 +24,42 @@ import { lookup as dnsLookup } from "node:dns/promises";
|
|
|
24
24
|
// ---------------------------------------------------------------------------
|
|
25
25
|
// Block-list
|
|
26
26
|
// ---------------------------------------------------------------------------
|
|
27
|
+
/**
|
|
28
|
+
* Cloud instance-metadata services reachable at a fixed IPv4 address outside
|
|
29
|
+
* 169.254.0.0/16. Matched exactly, against the dotted-quad form `isIP`
|
|
30
|
+
* accepts (which has no leading zeros, so each address has one spelling).
|
|
31
|
+
*
|
|
32
|
+
* - 100.100.100.200 (Alibaba Cloud ECS metadata service)
|
|
33
|
+
* - 192.0.0.192 (Oracle Cloud Infrastructure Classic metadata service)
|
|
34
|
+
*/
|
|
35
|
+
const METADATA_IPV4_ADDRESSES = new Set([
|
|
36
|
+
"100.100.100.200",
|
|
37
|
+
"192.0.0.192",
|
|
38
|
+
]);
|
|
27
39
|
/**
|
|
28
40
|
* Returns true if `ip` is a link-local or cloud-metadata address that must
|
|
29
41
|
* never be reachable through the proxy.
|
|
30
42
|
*
|
|
31
|
-
* Blocked
|
|
32
|
-
* - 169.254.0.0/16 (IPv4 link-local; includes 169.254.169.254
|
|
33
|
-
*
|
|
43
|
+
* Blocked:
|
|
44
|
+
* - 169.254.0.0/16 (IPv4 link-local; includes the 169.254.169.254 metadata
|
|
45
|
+
* service of AWS, GCP, Azure, Oracle Cloud and most others)
|
|
46
|
+
* - METADATA_IPV4_ADDRESSES (metadata services at a fixed address outside
|
|
47
|
+
* link-local, which the range above misses)
|
|
48
|
+
* - ::ffff: IPv4-mapped IPv6 variants of every IPv4 address above, in both
|
|
49
|
+
* the dotted and the hex serialization
|
|
34
50
|
* - fe80::/10 (IPv6 link-local)
|
|
35
51
|
* - fd00:ec2::254 (AWS IPv6 instance-metadata)
|
|
52
|
+
*
|
|
53
|
+
* The out-of-range metadata addresses are blocked exactly, never by their
|
|
54
|
+
* enclosing range: 100.100.100.200 sits in 100.64.0.0/10, the CGNAT block
|
|
55
|
+
* Tailscale also uses (its MagicDNS resolver is 100.100.100.100), and a
|
|
56
|
+
* tailnet MCP server is as legitimate a target as a LAN one.
|
|
36
57
|
*/
|
|
37
58
|
export function isBlockedProxyAddress(ip) {
|
|
38
59
|
const kind = isIP(ip);
|
|
39
60
|
if (kind === 4) {
|
|
40
61
|
const parts = ip.split(".").map(Number);
|
|
41
|
-
return parts[0] === 169 && parts[1] === 254;
|
|
62
|
+
return ((parts[0] === 169 && parts[1] === 254) || METADATA_IPV4_ADDRESSES.has(ip));
|
|
42
63
|
}
|
|
43
64
|
if (kind === 6) {
|
|
44
65
|
const addr = ip.toLowerCase();
|