@mcpjam/inspector 0.1.6 → 0.2.0
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 +37 -6
- package/client/dist/assets/{OAuthCallback-CBw5QXWv.js → OAuthCallback-Bn78Q1TF.js} +1 -1
- package/client/dist/assets/{OAuthDebugCallback-wx6FGFG4.js → OAuthDebugCallback-BqpNnC48.js} +1 -1
- package/client/dist/assets/{index-CmBOF7JI.css → index-CGJXsF8q.css} +98 -30
- package/client/dist/assets/{index-CV_1RAbM.js → index-DJQtmX5A.js} +26142 -24525
- package/client/dist/index.html +2 -2
- package/package.json +1 -1
- package/server/build/index.js +42 -11
package/README.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/MCPJam/inspector/blob/main/client/public/mcp_jam_dark.png">
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="https://github.com/MCPJam/inspector/blob/main/client/public/mcp_jam_light.png">
|
|
6
|
+
<img width="250" alt="MCPJam logo" src="https://github.com/MCPJam/inspector/blob/main/client/public/mcp_jam_light.png">
|
|
7
|
+
</picture>
|
|
8
|
+
|
|
9
|
+
<br/>
|
|
10
|
+
|
|
3
11
|
# MCPJam Inspector
|
|
4
12
|
|
|
5
13
|
**The developer tool for testing and debugging MCP servers**
|
|
@@ -8,8 +16,7 @@
|
|
|
8
16
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
9
17
|
[](https://nodejs.org/)
|
|
10
18
|
[](https://www.typescriptlang.org/)
|
|
11
|
-
|
|
12
|
-
_A powerful fork of the original [mcp-inspector](https://github.com/modelcontextprotocol/inspector) with enhanced features and modern UI_
|
|
19
|
+
[](https://discord.gg/yF7vWWkk)
|
|
13
20
|
|
|
14
21
|
</div>
|
|
15
22
|
|
|
@@ -20,7 +27,7 @@ _A powerful fork of the original [mcp-inspector](https://github.com/modelcontext
|
|
|
20
27
|
Get up and running in seconds with the MCPJam Inspector:
|
|
21
28
|
|
|
22
29
|
```bash
|
|
23
|
-
npx @mcpjam/inspector
|
|
30
|
+
npx @mcpjam/inspector@latest
|
|
24
31
|
```
|
|
25
32
|
|
|
26
33
|
That's it! The inspector will launch automatically in your browser at `http://localhost:6274`.
|
|
@@ -40,9 +47,10 @@ That's it! The inspector will launch automatically in your browser at `http://lo
|
|
|
40
47
|
This project is a fork of the [@modelcontextprotocol/inspector](https://github.com/modelcontextprotocol/inspector). Many of the features are the same but with some enhancements. Key features include:
|
|
41
48
|
|
|
42
49
|
- **STDIO / SSE / Streamable HTTP** - This inspector supports all three protocols. Connect to any MCP server.
|
|
43
|
-
- **Tool Execution** - Run server tools with live parameter input. Easily
|
|
50
|
+
- **Tool Execution** - Run server tools with live parameter input. Easily debug errors.
|
|
44
51
|
- **(New) LLM tool interaction** - Test your MCP server against a real LLM.
|
|
45
52
|
- **Debugging tools** - Enhanced logging experience to debug your server.
|
|
53
|
+
- **Quality of life improvements** - Save requests, multi-server connection, saved connections.
|
|
46
54
|
|
|
47
55
|
## 📋 Requirements
|
|
48
56
|
|
|
@@ -176,6 +184,31 @@ We welcome contributions! We thought the original inspector repository moved too
|
|
|
176
184
|
4. **Push** to the branch (`git push origin feature/amazing-feature`)
|
|
177
185
|
5. **Open** a Pull Request
|
|
178
186
|
|
|
187
|
+
## 🗺️ Our Roadmap
|
|
188
|
+
|
|
189
|
+
We're continuously improving the MCPJam Inspector. Here's what's coming next:
|
|
190
|
+
|
|
191
|
+
### UI/UX Improvements
|
|
192
|
+
|
|
193
|
+
- **Fix dark mode styling** - Improve run tool button appearance in dark mode
|
|
194
|
+
- **Enhanced logging UX** - Address misleading red color for INFO logs
|
|
195
|
+
|
|
196
|
+
### Core Features
|
|
197
|
+
|
|
198
|
+
- **AI parameter fill** - Smart parameter completion using AI
|
|
199
|
+
- **Collections** - Organize and group your MCP servers / tools
|
|
200
|
+
- **Multi Provider support** - Support for other LLMs like ChatGPT
|
|
201
|
+
|
|
202
|
+
### Technical Enhancements
|
|
203
|
+
|
|
204
|
+
- **Security scanning** - Built-in vulnerability scanning tools
|
|
205
|
+
- **Electron App** - Desktop application for enhanced user experience
|
|
206
|
+
|
|
207
|
+
### Ecosystem
|
|
208
|
+
|
|
209
|
+
- **Landing page improvements** - Update MCP Jam landing page
|
|
210
|
+
- **Documentation expansion** - Enhanced guides and tutorials
|
|
211
|
+
|
|
179
212
|
### Development Guidelines
|
|
180
213
|
|
|
181
214
|
- Follow the existing code style (Prettier + ESLint)
|
|
@@ -202,6 +235,4 @@ This project is licensed under the **Apache License 2.0** - see the [LICENSE](LI
|
|
|
202
235
|
|
|
203
236
|
**Made with ❤️ by the [MCPJam](https://mcpjam.com) team**
|
|
204
237
|
|
|
205
|
-
_Empowering developers to build better MCP servers_
|
|
206
|
-
|
|
207
238
|
</div>
|
|
@@ -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-DJQtmX5A.js";
|
|
2
2
|
import { p as parseOAuthCallbackParams, g as generateOAuthErrorDescription } from "./oauthUtils-DTcoXpSP.js";
|
|
3
3
|
const OAuthCallback = ({ onConnect }) => {
|
|
4
4
|
const { toast } = useToast();
|
package/client/dist/assets/{OAuthDebugCallback-wx6FGFG4.js → OAuthDebugCallback-BqpNnC48.js}
RENAMED
|
@@ -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-DJQtmX5A.js";
|
|
2
2
|
import { p as parseOAuthCallbackParams, g as generateOAuthErrorDescription } from "./oauthUtils-DTcoXpSP.js";
|
|
3
3
|
const OAuthDebugCallback = ({ onConnect }) => {
|
|
4
4
|
reactExports.useEffect(() => {
|
|
@@ -978,6 +978,39 @@ video {
|
|
|
978
978
|
background-color: hsl(var(--background));
|
|
979
979
|
color: hsl(var(--foreground));
|
|
980
980
|
}
|
|
981
|
+
.container {
|
|
982
|
+
width: 100%;
|
|
983
|
+
}
|
|
984
|
+
@media (min-width: 640px) {
|
|
985
|
+
|
|
986
|
+
.container {
|
|
987
|
+
max-width: 640px;
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
@media (min-width: 768px) {
|
|
991
|
+
|
|
992
|
+
.container {
|
|
993
|
+
max-width: 768px;
|
|
994
|
+
}
|
|
995
|
+
}
|
|
996
|
+
@media (min-width: 1024px) {
|
|
997
|
+
|
|
998
|
+
.container {
|
|
999
|
+
max-width: 1024px;
|
|
1000
|
+
}
|
|
1001
|
+
}
|
|
1002
|
+
@media (min-width: 1280px) {
|
|
1003
|
+
|
|
1004
|
+
.container {
|
|
1005
|
+
max-width: 1280px;
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
@media (min-width: 1536px) {
|
|
1009
|
+
|
|
1010
|
+
.container {
|
|
1011
|
+
max-width: 1536px;
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
981
1014
|
.sr-only {
|
|
982
1015
|
position: absolute;
|
|
983
1016
|
width: 1px;
|
|
@@ -1325,6 +1358,9 @@ video {
|
|
|
1325
1358
|
min-width: -moz-fit-content;
|
|
1326
1359
|
min-width: fit-content;
|
|
1327
1360
|
}
|
|
1361
|
+
.max-w-4xl {
|
|
1362
|
+
max-width: 56rem;
|
|
1363
|
+
}
|
|
1328
1364
|
.max-w-\[80\%\] {
|
|
1329
1365
|
max-width: 80%;
|
|
1330
1366
|
}
|
|
@@ -1430,6 +1466,9 @@ video {
|
|
|
1430
1466
|
.grid-cols-3 {
|
|
1431
1467
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
1432
1468
|
}
|
|
1469
|
+
.grid-cols-\[2fr_3fr_3fr\] {
|
|
1470
|
+
grid-template-columns: 2fr 3fr 3fr;
|
|
1471
|
+
}
|
|
1433
1472
|
.flex-col {
|
|
1434
1473
|
flex-direction: column;
|
|
1435
1474
|
}
|
|
@@ -1842,11 +1881,6 @@ video {
|
|
|
1842
1881
|
--tw-gradient-to: hsl(var(--muted) / 0) var(--tw-gradient-to-position);
|
|
1843
1882
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
1844
1883
|
}
|
|
1845
|
-
.from-primary {
|
|
1846
|
-
--tw-gradient-from: hsl(var(--primary)) var(--tw-gradient-from-position);
|
|
1847
|
-
--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);
|
|
1848
|
-
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
1849
|
-
}
|
|
1850
1884
|
.from-purple-500 {
|
|
1851
1885
|
--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);
|
|
1852
1886
|
--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);
|
|
@@ -1928,9 +1962,6 @@ video {
|
|
|
1928
1962
|
.to-muted\/50 {
|
|
1929
1963
|
--tw-gradient-to: hsl(var(--muted) / 0.5) var(--tw-gradient-to-position);
|
|
1930
1964
|
}
|
|
1931
|
-
.to-primary\/90 {
|
|
1932
|
-
--tw-gradient-to: hsl(var(--primary) / 0.9) var(--tw-gradient-to-position);
|
|
1933
|
-
}
|
|
1934
1965
|
.to-secondary\/10 {
|
|
1935
1966
|
--tw-gradient-to: hsl(var(--secondary) / 0.1) var(--tw-gradient-to-position);
|
|
1936
1967
|
}
|
|
@@ -2070,6 +2101,9 @@ video {
|
|
|
2070
2101
|
.pt-2 {
|
|
2071
2102
|
padding-top: 0.5rem;
|
|
2072
2103
|
}
|
|
2104
|
+
.pt-4 {
|
|
2105
|
+
padding-top: 1rem;
|
|
2106
|
+
}
|
|
2073
2107
|
.text-center {
|
|
2074
2108
|
text-align: center;
|
|
2075
2109
|
}
|
|
@@ -2112,6 +2146,9 @@ video {
|
|
|
2112
2146
|
.uppercase {
|
|
2113
2147
|
text-transform: uppercase;
|
|
2114
2148
|
}
|
|
2149
|
+
.capitalize {
|
|
2150
|
+
text-transform: capitalize;
|
|
2151
|
+
}
|
|
2115
2152
|
.italic {
|
|
2116
2153
|
font-style: italic;
|
|
2117
2154
|
}
|
|
@@ -2524,12 +2561,6 @@ h1 {
|
|
|
2524
2561
|
color: hsl(var(--muted-foreground));
|
|
2525
2562
|
}
|
|
2526
2563
|
|
|
2527
|
-
.hover\:scale-\[1\.01\]:hover {
|
|
2528
|
-
--tw-scale-x: 1.01;
|
|
2529
|
-
--tw-scale-y: 1.01;
|
|
2530
|
-
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
2531
|
-
}
|
|
2532
|
-
|
|
2533
2564
|
.hover\:border-\[\#646cff\]:hover {
|
|
2534
2565
|
--tw-border-opacity: 1;
|
|
2535
2566
|
border-color: rgb(100 108 255 / var(--tw-border-opacity, 1));
|
|
@@ -2608,6 +2639,11 @@ h1 {
|
|
|
2608
2639
|
background-color: hsl(var(--primary) / 0.9);
|
|
2609
2640
|
}
|
|
2610
2641
|
|
|
2642
|
+
.hover\:bg-red-50:hover {
|
|
2643
|
+
--tw-bg-opacity: 1;
|
|
2644
|
+
background-color: rgb(254 242 242 / var(--tw-bg-opacity, 1));
|
|
2645
|
+
}
|
|
2646
|
+
|
|
2611
2647
|
.hover\:bg-red-50\/80:hover {
|
|
2612
2648
|
background-color: rgb(254 242 242 / 0.8);
|
|
2613
2649
|
}
|
|
@@ -2634,12 +2670,6 @@ h1 {
|
|
|
2634
2670
|
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
2635
2671
|
}
|
|
2636
2672
|
|
|
2637
|
-
.hover\:from-primary\/90:hover {
|
|
2638
|
-
--tw-gradient-from: hsl(var(--primary) / 0.9) var(--tw-gradient-from-position);
|
|
2639
|
-
--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);
|
|
2640
|
-
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
2641
|
-
}
|
|
2642
|
-
|
|
2643
2673
|
.hover\:from-secondary\/30:hover {
|
|
2644
2674
|
--tw-gradient-from: hsl(var(--secondary) / 0.3) var(--tw-gradient-from-position);
|
|
2645
2675
|
--tw-gradient-to: hsl(var(--secondary) / 0) var(--tw-gradient-to-position);
|
|
@@ -2655,10 +2685,6 @@ h1 {
|
|
|
2655
2685
|
--tw-gradient-to: hsl(var(--muted) / 0.3) var(--tw-gradient-to-position);
|
|
2656
2686
|
}
|
|
2657
2687
|
|
|
2658
|
-
.hover\:to-primary\/80:hover {
|
|
2659
|
-
--tw-gradient-to: hsl(var(--primary) / 0.8) var(--tw-gradient-to-position);
|
|
2660
|
-
}
|
|
2661
|
-
|
|
2662
2688
|
.hover\:to-secondary\/20:hover {
|
|
2663
2689
|
--tw-gradient-to: hsl(var(--secondary) / 0.2) var(--tw-gradient-to-position);
|
|
2664
2690
|
}
|
|
@@ -2689,6 +2715,11 @@ h1 {
|
|
|
2689
2715
|
color: hsl(var(--primary));
|
|
2690
2716
|
}
|
|
2691
2717
|
|
|
2718
|
+
.hover\:text-red-600:hover {
|
|
2719
|
+
--tw-text-opacity: 1;
|
|
2720
|
+
color: rgb(220 38 38 / var(--tw-text-opacity, 1));
|
|
2721
|
+
}
|
|
2722
|
+
|
|
2692
2723
|
.hover\:text-slate-900:hover {
|
|
2693
2724
|
--tw-text-opacity: 1;
|
|
2694
2725
|
color: rgb(15 23 42 / var(--tw-text-opacity, 1));
|
|
@@ -2794,12 +2825,6 @@ h1 {
|
|
|
2794
2825
|
--tw-ring-offset-width: 2px;
|
|
2795
2826
|
}
|
|
2796
2827
|
|
|
2797
|
-
.active\:scale-\[0\.99\]:active {
|
|
2798
|
-
--tw-scale-x: 0.99;
|
|
2799
|
-
--tw-scale-y: 0.99;
|
|
2800
|
-
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
|
2801
|
-
}
|
|
2802
|
-
|
|
2803
2828
|
.disabled\:pointer-events-none:disabled {
|
|
2804
2829
|
pointer-events: none;
|
|
2805
2830
|
}
|
|
@@ -3069,6 +3094,10 @@ h1 {
|
|
|
3069
3094
|
--tw-enter-translate-y: -100%;
|
|
3070
3095
|
}
|
|
3071
3096
|
|
|
3097
|
+
.dark\:border-border\/60:is(.dark *) {
|
|
3098
|
+
border-color: hsl(var(--border) / 0.6);
|
|
3099
|
+
}
|
|
3100
|
+
|
|
3072
3101
|
.dark\:border-destructive:is(.dark *) {
|
|
3073
3102
|
border-color: hsl(var(--destructive));
|
|
3074
3103
|
}
|
|
@@ -3154,6 +3183,12 @@ h1 {
|
|
|
3154
3183
|
background-color: rgb(15 23 42 / 0.6);
|
|
3155
3184
|
}
|
|
3156
3185
|
|
|
3186
|
+
.dark\:from-secondary\/30:is(.dark *) {
|
|
3187
|
+
--tw-gradient-from: hsl(var(--secondary) / 0.3) var(--tw-gradient-from-position);
|
|
3188
|
+
--tw-gradient-to: hsl(var(--secondary) / 0) var(--tw-gradient-to-position);
|
|
3189
|
+
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
3190
|
+
}
|
|
3191
|
+
|
|
3157
3192
|
.dark\:from-slate-800:is(.dark *) {
|
|
3158
3193
|
--tw-gradient-from: #1e293b var(--tw-gradient-from-position);
|
|
3159
3194
|
--tw-gradient-to: rgb(30 41 59 / 0) var(--tw-gradient-to-position);
|
|
@@ -3176,6 +3211,10 @@ h1 {
|
|
|
3176
3211
|
--tw-gradient-to: #1f2937 var(--tw-gradient-to-position);
|
|
3177
3212
|
}
|
|
3178
3213
|
|
|
3214
|
+
.dark\:to-secondary\/20:is(.dark *) {
|
|
3215
|
+
--tw-gradient-to: hsl(var(--secondary) / 0.2) var(--tw-gradient-to-position);
|
|
3216
|
+
}
|
|
3217
|
+
|
|
3179
3218
|
.dark\:to-slate-800:is(.dark *) {
|
|
3180
3219
|
--tw-gradient-to: #1e293b var(--tw-gradient-to-position);
|
|
3181
3220
|
}
|
|
@@ -3259,11 +3298,20 @@ h1 {
|
|
|
3259
3298
|
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
|
3260
3299
|
}
|
|
3261
3300
|
|
|
3301
|
+
.dark\:shadow-secondary\/10:is(.dark *) {
|
|
3302
|
+
--tw-shadow-color: hsl(var(--secondary) / 0.1);
|
|
3303
|
+
--tw-shadow: var(--tw-shadow-colored);
|
|
3304
|
+
}
|
|
3305
|
+
|
|
3262
3306
|
.dark\:hover\:border-blue-800:hover:is(.dark *) {
|
|
3263
3307
|
--tw-border-opacity: 1;
|
|
3264
3308
|
border-color: rgb(30 64 175 / var(--tw-border-opacity, 1));
|
|
3265
3309
|
}
|
|
3266
3310
|
|
|
3311
|
+
.dark\:hover\:border-border\/80:hover:is(.dark *) {
|
|
3312
|
+
border-color: hsl(var(--border) / 0.8);
|
|
3313
|
+
}
|
|
3314
|
+
|
|
3267
3315
|
.dark\:hover\:border-red-500\/60:hover:is(.dark *) {
|
|
3268
3316
|
border-color: rgb(239 68 68 / 0.6);
|
|
3269
3317
|
}
|
|
@@ -3285,15 +3333,35 @@ h1 {
|
|
|
3285
3333
|
background-color: rgb(127 29 29 / 0.2);
|
|
3286
3334
|
}
|
|
3287
3335
|
|
|
3336
|
+
.dark\:hover\:bg-red-950:hover:is(.dark *) {
|
|
3337
|
+
--tw-bg-opacity: 1;
|
|
3338
|
+
background-color: rgb(69 10 10 / var(--tw-bg-opacity, 1));
|
|
3339
|
+
}
|
|
3340
|
+
|
|
3288
3341
|
.dark\:hover\:bg-slate-700\/30:hover:is(.dark *) {
|
|
3289
3342
|
background-color: rgb(51 65 85 / 0.3);
|
|
3290
3343
|
}
|
|
3291
3344
|
|
|
3345
|
+
.dark\:hover\:from-secondary\/40:hover:is(.dark *) {
|
|
3346
|
+
--tw-gradient-from: hsl(var(--secondary) / 0.4) var(--tw-gradient-from-position);
|
|
3347
|
+
--tw-gradient-to: hsl(var(--secondary) / 0) var(--tw-gradient-to-position);
|
|
3348
|
+
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
|
3349
|
+
}
|
|
3350
|
+
|
|
3351
|
+
.dark\:hover\:to-secondary\/30:hover:is(.dark *) {
|
|
3352
|
+
--tw-gradient-to: hsl(var(--secondary) / 0.3) var(--tw-gradient-to-position);
|
|
3353
|
+
}
|
|
3354
|
+
|
|
3292
3355
|
.dark\:hover\:text-slate-200:hover:is(.dark *) {
|
|
3293
3356
|
--tw-text-opacity: 1;
|
|
3294
3357
|
color: rgb(226 232 240 / var(--tw-text-opacity, 1));
|
|
3295
3358
|
}
|
|
3296
3359
|
|
|
3360
|
+
.dark\:hover\:shadow-secondary\/20:hover:is(.dark *) {
|
|
3361
|
+
--tw-shadow-color: hsl(var(--secondary) / 0.2);
|
|
3362
|
+
--tw-shadow: var(--tw-shadow-colored);
|
|
3363
|
+
}
|
|
3364
|
+
|
|
3297
3365
|
.group:hover .dark\:group-hover\:text-gray-100:is(.dark *) {
|
|
3298
3366
|
--tw-text-opacity: 1;
|
|
3299
3367
|
color: rgb(243 244 246 / var(--tw-text-opacity, 1));
|