@mcpjam/inspector 0.3.0 → 0.3.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.
@@ -1049,8 +1049,11 @@ video {
1049
1049
  .-right-4 {
1050
1050
  right: -1rem;
1051
1051
  }
1052
- .-top-1 {
1053
- top: -0.25rem;
1052
+ .-top-0\.5 {
1053
+ top: -0.125rem;
1054
+ }
1055
+ .-top-1\.5 {
1056
+ top: -0.375rem;
1054
1057
  }
1055
1058
  .bottom-0 {
1056
1059
  bottom: 0px;
@@ -1219,6 +1222,9 @@ video {
1219
1222
  width: 1rem;
1220
1223
  height: 1rem;
1221
1224
  }
1225
+ .h-0\.5 {
1226
+ height: 0.125rem;
1227
+ }
1222
1228
  .h-1 {
1223
1229
  height: 0.25rem;
1224
1230
  }
@@ -1291,6 +1297,9 @@ video {
1291
1297
  .max-h-\[300px\] {
1292
1298
  max-height: 300px;
1293
1299
  }
1300
+ .max-h-\[80vh\] {
1301
+ max-height: 80vh;
1302
+ }
1294
1303
  .max-h-\[90vh\] {
1295
1304
  max-height: 90vh;
1296
1305
  }
@@ -1400,6 +1409,9 @@ video {
1400
1409
  min-width: -moz-fit-content;
1401
1410
  min-width: fit-content;
1402
1411
  }
1412
+ .max-w-2xl {
1413
+ max-width: 42rem;
1414
+ }
1403
1415
  .max-w-4xl {
1404
1416
  max-width: 56rem;
1405
1417
  }
@@ -1508,6 +1520,9 @@ video {
1508
1520
  .resize-none {
1509
1521
  resize: none;
1510
1522
  }
1523
+ .resize {
1524
+ resize: both;
1525
+ }
1511
1526
  .grid-cols-1 {
1512
1527
  grid-template-columns: repeat(1, minmax(0, 1fr));
1513
1528
  }
@@ -1708,6 +1723,10 @@ video {
1708
1723
  --tw-border-opacity: 1;
1709
1724
  border-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
1710
1725
  }
1726
+ .border-blue-300 {
1727
+ --tw-border-opacity: 1;
1728
+ border-color: rgb(147 197 253 / var(--tw-border-opacity, 1));
1729
+ }
1711
1730
  .border-blue-500 {
1712
1731
  --tw-border-opacity: 1;
1713
1732
  border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
@@ -1744,6 +1763,10 @@ video {
1744
1763
  --tw-border-opacity: 1;
1745
1764
  border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
1746
1765
  }
1766
+ .border-gray-300 {
1767
+ --tw-border-opacity: 1;
1768
+ border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
1769
+ }
1747
1770
  .border-green-200 {
1748
1771
  --tw-border-opacity: 1;
1749
1772
  border-color: rgb(187 247 208 / var(--tw-border-opacity, 1));
@@ -1834,6 +1857,9 @@ video {
1834
1857
  .bg-border {
1835
1858
  background-color: hsl(var(--border));
1836
1859
  }
1860
+ .bg-border\/50 {
1861
+ background-color: hsl(var(--border) / 0.5);
1862
+ }
1837
1863
  .bg-card {
1838
1864
  background-color: hsl(var(--card));
1839
1865
  }
@@ -1890,6 +1916,9 @@ video {
1890
1916
  .bg-primary\/10 {
1891
1917
  background-color: hsl(var(--primary) / 0.1);
1892
1918
  }
1919
+ .bg-primary\/20 {
1920
+ background-color: hsl(var(--primary) / 0.2);
1921
+ }
1893
1922
  .bg-red-50 {
1894
1923
  --tw-bg-opacity: 1;
1895
1924
  background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));
@@ -1898,6 +1927,10 @@ video {
1898
1927
  --tw-bg-opacity: 1;
1899
1928
  background-color: rgb(239 68 68 / var(--tw-bg-opacity, 1));
1900
1929
  }
1930
+ .bg-red-600 {
1931
+ --tw-bg-opacity: 1;
1932
+ background-color: rgb(220 38 38 / var(--tw-bg-opacity, 1));
1933
+ }
1901
1934
  .bg-secondary {
1902
1935
  background-color: hsl(var(--secondary));
1903
1936
  }
@@ -2763,6 +2796,10 @@ h1 {
2763
2796
  border-color: hsl(var(--border) / 0.6);
2764
2797
  }
2765
2798
 
2799
+ .hover\:border-primary\/20:hover {
2800
+ border-color: hsl(var(--primary) / 0.2);
2801
+ }
2802
+
2766
2803
  .hover\:border-red-400\/60:hover {
2767
2804
  border-color: rgb(248 113 113 / 0.6);
2768
2805
  }
@@ -2779,6 +2816,10 @@ h1 {
2779
2816
  background-color: rgb(59 130 246 / 0.2);
2780
2817
  }
2781
2818
 
2819
+ .hover\:bg-border\/20:hover {
2820
+ background-color: hsl(var(--border) / 0.2);
2821
+ }
2822
+
2782
2823
  .hover\:bg-destructive\/10:hover {
2783
2824
  background-color: hsl(var(--destructive) / 0.1);
2784
2825
  }
@@ -2823,6 +2864,10 @@ h1 {
2823
2864
  background-color: hsl(var(--muted) / 0.5);
2824
2865
  }
2825
2866
 
2867
+ .hover\:bg-primary\/10:hover {
2868
+ background-color: hsl(var(--primary) / 0.1);
2869
+ }
2870
+
2826
2871
  .hover\:bg-primary\/20:hover {
2827
2872
  background-color: hsl(var(--primary) / 0.2);
2828
2873
  }
@@ -2844,6 +2889,11 @@ h1 {
2844
2889
  background-color: rgb(254 242 242 / 0.8);
2845
2890
  }
2846
2891
 
2892
+ .hover\:bg-red-700:hover {
2893
+ --tw-bg-opacity: 1;
2894
+ background-color: rgb(185 28 28 / var(--tw-bg-opacity, 1));
2895
+ }
2896
+
2847
2897
  .hover\:bg-secondary:hover {
2848
2898
  background-color: hsl(var(--secondary));
2849
2899
  }
@@ -3025,6 +3075,11 @@ h1 {
3025
3075
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
3026
3076
  }
3027
3077
 
3078
+ .focus\:ring-blue-500:focus {
3079
+ --tw-ring-opacity: 1;
3080
+ --tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity, 1));
3081
+ }
3082
+
3028
3083
  .focus\:ring-primary\/20:focus {
3029
3084
  --tw-ring-color: hsl(var(--primary) / 0.2);
3030
3085
  }
@@ -3369,6 +3424,11 @@ h1 {
3369
3424
  border-color: hsl(var(--destructive));
3370
3425
  }
3371
3426
 
3427
+ .dark\:border-gray-600:is(.dark *) {
3428
+ --tw-border-opacity: 1;
3429
+ border-color: rgb(75 85 99 / var(--tw-border-opacity, 1));
3430
+ }
3431
+
3372
3432
  .dark\:border-gray-800:is(.dark *) {
3373
3433
  --tw-border-opacity: 1;
3374
3434
  border-color: rgb(31 41 55 / var(--tw-border-opacity, 1));
@@ -3467,6 +3527,10 @@ h1 {
3467
3527
  background-color: rgb(20 83 45 / 0.2);
3468
3528
  }
3469
3529
 
3530
+ .dark\:bg-red-900\/20:is(.dark *) {
3531
+ background-color: rgb(127 29 29 / 0.2);
3532
+ }
3533
+
3470
3534
  .dark\:bg-red-950\/20:is(.dark *) {
3471
3535
  background-color: rgb(69 10 10 / 0.2);
3472
3536
  }
@@ -5,8 +5,8 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/mcp_jam.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>MCPJam Inspector</title>
8
- <script type="module" crossorigin src="/assets/index-CdlQwnmd.js"></script>
9
- <link rel="stylesheet" crossorigin href="/assets/index-De3JSks9.css">
8
+ <script type="module" crossorigin src="/assets/index-BNLcDjKX.js"></script>
9
+ <link rel="stylesheet" crossorigin href="/assets/index-CThH1rBM.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": "@mcpjam/inspector",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "MCPJam inspector",
5
5
  "license": "Apache-2.0",
6
6
  "author": "MCPJam (https://mcpjam.com)",
@@ -45,7 +45,8 @@
45
45
  "@mcpjam/inspector-cli": "^0.1.6",
46
46
  "@mcpjam/inspector-client": "^0.1.6",
47
47
  "@mcpjam/inspector-server": "^0.1.6",
48
- "@modelcontextprotocol/sdk": "^1.12.0",
48
+ "@modelcontextprotocol/sdk": "^1.13.0",
49
+ "ajv": "^8.17.1",
49
50
  "concurrently": "^9.0.1",
50
51
  "dotenv": "^16.5.0",
51
52
  "open": "^10.1.0",
@@ -59,7 +60,7 @@
59
60
  "@types/node": "^22.15.21",
60
61
  "@types/shell-quote": "^1.7.5",
61
62
  "jest-fixed-jsdom": "^0.0.9",
62
- "prettier": "3.3.3",
63
+ "prettier": "^3.3.3",
63
64
  "rimraf": "^6.0.1",
64
65
  "typescript": "^5.8.3"
65
66
  }
@@ -320,10 +320,19 @@ const findAvailablePort = async (startPort) => {
320
320
  });
321
321
  };
322
322
  const PORT = process.env.PORT || 6277;
323
+ // Store the actual running port
324
+ let actualPort;
325
+ // Add endpoint to get the actual running port
326
+ app.get("/port", (req, res) => {
327
+ res.json({
328
+ port: actualPort,
329
+ });
330
+ });
323
331
  // Start server with dynamic port finding
324
332
  const startServer = async () => {
325
333
  try {
326
334
  const availablePort = await findAvailablePort(Number(PORT));
335
+ actualPort = availablePort;
327
336
  const server = app.listen(availablePort);
328
337
  server.on("listening", () => {
329
338
  if (availablePort !== Number(PORT)) {
@@ -3,7 +3,14 @@ function onClientError(error) {
3
3
  console.error("Error from inspector client:", error);
4
4
  }
5
5
  function onServerError(error) {
6
- console.error("Error from MCP server:", error);
6
+ if ((error?.message &&
7
+ error.message.includes("Error POSTing to endpoint (HTTP 404)")) ||
8
+ (error?.cause && JSON.stringify(error.cause).includes("ECONNREFUSED"))) {
9
+ console.error("Connection refused. Is the MCP server running?");
10
+ }
11
+ else {
12
+ console.error("Error from MCP server:", error);
13
+ }
7
14
  }
8
15
  export default function mcpProxy({ transportToClient, transportToServer, }) {
9
16
  let transportToClientClosed = false;
@@ -1,33 +0,0 @@
1
- const parseOAuthCallbackParams = (location) => {
2
- const params = new URLSearchParams(location);
3
- const code = params.get("code");
4
- if (code) {
5
- return { successful: true, code };
6
- }
7
- const error = params.get("error");
8
- const error_description = params.get("error_description");
9
- const error_uri = params.get("error_uri");
10
- if (error) {
11
- return { successful: false, error, error_description, error_uri };
12
- }
13
- return {
14
- successful: false,
15
- error: "invalid_request",
16
- error_description: "Missing code or error in response",
17
- error_uri: null
18
- };
19
- };
20
- const generateOAuthErrorDescription = (params) => {
21
- const error = params.error;
22
- const errorDescription = params.error_description;
23
- const errorUri = params.error_uri;
24
- return [
25
- `Error: ${error}.`,
26
- errorDescription ? `Details: ${errorDescription}.` : "",
27
- errorUri ? `More info: ${errorUri}.` : ""
28
- ].filter(Boolean).join("\n");
29
- };
30
- export {
31
- generateOAuthErrorDescription as g,
32
- parseOAuthCallbackParams as p
33
- };