@mcpjam/inspector 0.3.1 → 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.
- package/README.md +3 -0
- package/client/bin/client.js +0 -0
- package/client/dist/assets/{OAuthCallback-mxRvi54D.js → OAuthCallback-CyGF8_8H.js} +1 -2
- package/client/dist/assets/{OAuthDebugCallback-CjHmkokp.js → OAuthDebugCallback-BiLISBxK.js} +1 -2
- package/client/dist/assets/{index-kMl05fui.js → index-BNLcDjKX.js} +24293 -17068
- package/client/dist/assets/{index-De3JSks9.css → index-CThH1rBM.css} +66 -2
- package/client/dist/index.html +2 -2
- package/package.json +3 -2
- package/server/build/index.js +9 -0
- package/server/build/mcpProxy.js +8 -1
- package/client/dist/assets/oauthUtils-DTcoXpSP.js +0 -33
|
@@ -1049,8 +1049,11 @@ video {
|
|
|
1049
1049
|
.-right-4 {
|
|
1050
1050
|
right: -1rem;
|
|
1051
1051
|
}
|
|
1052
|
-
.-top-
|
|
1053
|
-
top: -0.
|
|
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
|
}
|
package/client/dist/index.html
CHANGED
|
@@ -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-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
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.
|
|
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.
|
|
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",
|
package/server/build/index.js
CHANGED
|
@@ -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)) {
|
package/server/build/mcpProxy.js
CHANGED
|
@@ -3,7 +3,14 @@ function onClientError(error) {
|
|
|
3
3
|
console.error("Error from inspector client:", error);
|
|
4
4
|
}
|
|
5
5
|
function onServerError(error) {
|
|
6
|
-
|
|
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
|
-
};
|