@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.
@@ -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-Bvgm3HOZ.js";
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);
@@ -1,4 +1,4 @@
1
- import { r as reactExports, S as SESSION_KEYS, p as parseOAuthCallbackParams, j as jsxRuntimeExports, g as generateOAuthErrorDescription } from "./index-Bvgm3HOZ.js";
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.4";
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.4";
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-Cb6VJMaq.js"), true ? [] : void 0)
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-CgAV2c_T.js"), true ? [] : void 0)
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
  }
@@ -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-Bvgm3HOZ.js"></script>
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.4",
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.4",
57
- "@modelcontextprotocol/inspector-client": "^1.0.4",
58
- "@modelcontextprotocol/inspector-server": "^1.0.4",
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": "^10.2.0",
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 ranges:
32
- * - 169.254.0.0/16 (IPv4 link-local; includes 169.254.169.254 IMDS)
33
- * - ::ffff:169.254.x.x (IPv4-mapped IPv6 variants of the above)
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();