@mcpjam/inspector 0.3.8 β 0.8.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/.next/BUILD_ID +1 -0
- package/.next/app-build-manifest.json +89 -0
- package/.next/app-path-routes-manifest.json +13 -0
- package/.next/build-manifest.json +33 -0
- package/.next/cache/.previewinfo +1 -0
- package/.next/cache/.rscinfo +1 -0
- package/.next/cache/.tsbuildinfo +1 -0
- package/.next/cache/eslint/.cache_11b5ofe +1 -0
- package/.next/cache/webpack/client-production/0.pack +0 -0
- package/.next/cache/webpack/client-production/index.pack +0 -0
- package/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/.next/cache/webpack/server-production/0.pack +0 -0
- package/.next/cache/webpack/server-production/index.pack +0 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +57 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +41 -0
- package/.next/react-loadable-manifest.json +1 -0
- package/.next/required-server-files.json +318 -0
- package/.next/routes-manifest.json +65 -0
- package/.next/server/app/_not-found/page.js +2 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/chat/route.js +45 -0
- package/.next/server/app/api/mcp/chat/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/chat/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/connect/route.js +1 -0
- package/.next/server/app/api/mcp/connect/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/connect/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/prompts/get/route.js +1 -0
- package/.next/server/app/api/mcp/prompts/get/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/prompts/get/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/prompts/list/route.js +1 -0
- package/.next/server/app/api/mcp/prompts/list/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/prompts/list/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/resources/list/route.js +1 -0
- package/.next/server/app/api/mcp/resources/list/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/resources/list/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/resources/read/route.js +1 -0
- package/.next/server/app/api/mcp/resources/read/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/resources/read/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/tools/route.js +21 -0
- package/.next/server/app/api/mcp/tools/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -0
- package/.next/server/app/favicon.ico/route.js +1 -0
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +1 -0
- package/.next/server/app/oauth/callback/page.js +2 -0
- package/.next/server/app/oauth/callback/page.js.nft.json +1 -0
- package/.next/server/app/oauth/callback/page_client-reference-manifest.js +1 -0
- package/.next/server/app/page.js +16 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +13 -0
- package/.next/server/chunks/175.js +8 -0
- package/.next/server/chunks/260.js +82 -0
- package/.next/server/chunks/546.js +1 -0
- package/.next/server/chunks/548.js +6 -0
- package/.next/server/chunks/55.js +1 -0
- package/.next/server/chunks/985.js +22 -0
- package/.next/server/functions-config-manifest.json +4 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages/_app.js +1 -0
- package/.next/server/pages/_app.js.nft.json +1 -0
- package/.next/server/pages/_document.js +1 -0
- package/.next/server/pages/_document.js.nft.json +1 -0
- package/.next/server/pages/_error.js +19 -0
- package/.next/server/pages/_error.js.nft.json +1 -0
- package/.next/server/pages-manifest.json +5 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/chunks/14-ae3a01e72ea53777.js +1 -0
- package/.next/static/chunks/214-cc4c35d88f2695ed.js +1 -0
- package/.next/static/chunks/4bd1b696-cf72ae8a39fa05aa.js +1 -0
- package/.next/static/chunks/866-04c19dda4c52f2bf.js +1 -0
- package/.next/static/chunks/964-eda38e26c0391a47.js +1 -0
- package/.next/static/chunks/app/_not-found/page-d7e832b54474da82.js +1 -0
- package/.next/static/chunks/app/api/mcp/chat/route-0341498a8bf5f2da.js +1 -0
- package/.next/static/chunks/app/api/mcp/connect/route-0341498a8bf5f2da.js +1 -0
- package/.next/static/chunks/app/api/mcp/prompts/get/route-0341498a8bf5f2da.js +1 -0
- package/.next/static/chunks/app/api/mcp/prompts/list/route-0341498a8bf5f2da.js +1 -0
- package/.next/static/chunks/app/api/mcp/resources/list/route-0341498a8bf5f2da.js +1 -0
- package/.next/static/chunks/app/api/mcp/resources/read/route-0341498a8bf5f2da.js +1 -0
- package/.next/static/chunks/app/api/mcp/tools/route-0341498a8bf5f2da.js +1 -0
- package/.next/static/chunks/app/layout-fb6e1ad5933381f3.js +1 -0
- package/.next/static/chunks/app/oauth/callback/page-d8b3908ea67ba3e3.js +1 -0
- package/.next/static/chunks/app/page-81e35b2a61edb363.js +1 -0
- package/.next/static/chunks/framework-7c95b8e5103c9e90.js +1 -0
- package/.next/static/chunks/main-app-7d61da15faa6c1af.js +1 -0
- package/.next/static/chunks/main-bbdafee21a7bd1d6.js +1 -0
- package/.next/static/chunks/pages/_app-0a0020ddd67f79cf.js +1 -0
- package/.next/static/chunks/pages/_error-03529f2c21436739.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-cdfccaf38062dd25.js +1 -0
- package/.next/static/css/1e852d83e9c1d0c6.css +1 -0
- package/.next/static/css/f30152c0704fba31.css +1 -0
- package/.next/static/css/fe751fdbe975e9ca.css +1 -0
- package/.next/static/media/569ce4b8f30dc480-s.p.woff2 +0 -0
- package/.next/static/media/747892c23ea88013-s.woff2 +0 -0
- package/.next/static/media/8d697b304b401681-s.woff2 +0 -0
- package/.next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
- package/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
- package/.next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
- package/.next/static/media/ollama_dark.9af45ac0.png +0 -0
- package/.next/static/media/ollama_logo.9f08a95b.svg +7 -0
- package/.next/static/media/openai_logo.3f83154a.png +0 -0
- package/.next/static/wgHmsxKAquUu9gOMW6Qd5/_buildManifest.js +1 -0
- package/.next/static/wgHmsxKAquUu9gOMW6Qd5/_ssgManifest.js +1 -0
- package/.next/trace +35 -0
- package/.next/types/app/api/mcp/chat/route.ts +347 -0
- package/.next/types/app/api/mcp/connect/route.ts +347 -0
- package/.next/types/app/api/mcp/prompts/get/route.ts +347 -0
- package/.next/types/app/api/mcp/prompts/list/route.ts +347 -0
- package/.next/types/app/api/mcp/resources/list/route.ts +347 -0
- package/.next/types/app/api/mcp/resources/read/route.ts +347 -0
- package/.next/types/app/api/mcp/tools/route.ts +347 -0
- package/.next/types/app/layout.ts +84 -0
- package/.next/types/app/oauth/callback/page.ts +84 -0
- package/.next/types/app/page.ts +84 -0
- package/.next/types/cache-life.d.ts +141 -0
- package/.next/types/package.json +1 -0
- package/README.md +76 -161
- package/bin/start.js +504 -0
- package/next.config.ts +7 -0
- package/package.json +71 -54
- package/public/claude_logo.png +0 -0
- package/public/demo_1.png +0 -0
- package/public/demo_2.png +0 -0
- package/public/demo_3.png +0 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/mcp.svg +1 -0
- package/public/next.svg +1 -0
- package/public/ollama_dark.png +0 -0
- package/public/ollama_logo.svg +7 -0
- package/public/openai_logo.png +0 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/LICENSE +0 -200
- package/cli/build/cli.js +0 -251
- package/cli/build/client/connection.js +0 -33
- package/cli/build/client/index.js +0 -6
- package/cli/build/client/prompts.js +0 -23
- package/cli/build/client/resources.js +0 -30
- package/cli/build/client/tools.js +0 -64
- package/cli/build/client/types.js +0 -1
- package/cli/build/error-handler.js +0 -18
- package/cli/build/index.js +0 -166
- package/cli/build/transport.js +0 -47
- package/client/bin/client.js +0 -71
- package/client/bin/start.js +0 -143
- package/client/dist/assets/OAuthCallback-Dovy-wwC.js +0 -56
- package/client/dist/assets/OAuthDebugCallback-CP9EZ76u.js +0 -44
- package/client/dist/assets/index-CWDemo1t.css +0 -4168
- package/client/dist/assets/index-DTD8_Uq7.js +0 -63318
- package/client/dist/index.html +0 -14
- package/client/dist/ollama_logo.png +0 -0
- package/client/dist/openai_logo.png +0 -0
- package/server/build/database/DatabaseManager.js +0 -108
- package/server/build/database/index.js +0 -8
- package/server/build/database/routes.js +0 -86
- package/server/build/database/types.js +0 -27
- package/server/build/database/utils.js +0 -86
- package/server/build/index.js +0 -331
- package/server/build/mcpProxy.js +0 -54
- package/server/build/shared/MCPProxyService.js +0 -221
- package/server/build/shared/TransportFactory.js +0 -130
- package/server/build/shared/index.js +0 -4
- package/server/build/shared/types.js +0 -1
- package/server/build/shared/utils.js +0 -27
- package/server/build/test-server.js +0 -145
- package/server/build/testing/HealthCheck.js +0 -42
- package/server/build/testing/TestExecutor.js +0 -240
- package/server/build/testing/TestRunner.js +0 -198
- package/server/build/testing/TestServer.js +0 -440
- package/server/build/testing/types.js +0 -1
- /package/{client/dist/claude_logo.png β .next/static/media/claude_logo.d33b25b0.png} +0 -0
- /package/{client/dist β public}/mcp_jam.svg +0 -0
- /package/{client/dist β public}/mcp_jam_dark.png +0 -0
- /package/{client/dist β public}/mcp_jam_light.png +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
// Type definitions for Next.js cacheLife configs
|
|
2
|
+
|
|
3
|
+
declare module 'next/cache' {
|
|
4
|
+
export { unstable_cache } from 'next/dist/server/web/spec-extension/unstable-cache'
|
|
5
|
+
export {
|
|
6
|
+
revalidateTag,
|
|
7
|
+
revalidatePath,
|
|
8
|
+
unstable_expireTag,
|
|
9
|
+
unstable_expirePath,
|
|
10
|
+
} from 'next/dist/server/web/spec-extension/revalidate'
|
|
11
|
+
export { unstable_noStore } from 'next/dist/server/web/spec-extension/unstable-no-store'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Cache this `"use cache"` for a timespan defined by the `"default"` profile.
|
|
16
|
+
* ```
|
|
17
|
+
* stale: 300 seconds (5 minutes)
|
|
18
|
+
* revalidate: 900 seconds (15 minutes)
|
|
19
|
+
* expire: never
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* This cache may be stale on clients for 5 minutes before checking with the server.
|
|
23
|
+
* If the server receives a new request after 15 minutes, start revalidating new values in the background.
|
|
24
|
+
* It lives for the maximum age of the server cache. If this entry has no traffic for a while, it may serve an old value the next request.
|
|
25
|
+
*/
|
|
26
|
+
export function unstable_cacheLife(profile: "default"): void
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Cache this `"use cache"` for a timespan defined by the `"seconds"` profile.
|
|
30
|
+
* ```
|
|
31
|
+
* stale: 0 seconds
|
|
32
|
+
* revalidate: 1 seconds
|
|
33
|
+
* expire: 60 seconds (1 minute)
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* This cache may be stale on clients for 0 seconds before checking with the server.
|
|
37
|
+
* If the server receives a new request after 1 seconds, start revalidating new values in the background.
|
|
38
|
+
* If this entry has no traffic for 1 minute it will expire. The next request will recompute it.
|
|
39
|
+
*/
|
|
40
|
+
export function unstable_cacheLife(profile: "seconds"): void
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Cache this `"use cache"` for a timespan defined by the `"minutes"` profile.
|
|
44
|
+
* ```
|
|
45
|
+
* stale: 300 seconds (5 minutes)
|
|
46
|
+
* revalidate: 60 seconds (1 minute)
|
|
47
|
+
* expire: 3600 seconds (1 hour)
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* This cache may be stale on clients for 5 minutes before checking with the server.
|
|
51
|
+
* If the server receives a new request after 1 minute, start revalidating new values in the background.
|
|
52
|
+
* If this entry has no traffic for 1 hour it will expire. The next request will recompute it.
|
|
53
|
+
*/
|
|
54
|
+
export function unstable_cacheLife(profile: "minutes"): void
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Cache this `"use cache"` for a timespan defined by the `"hours"` profile.
|
|
58
|
+
* ```
|
|
59
|
+
* stale: 300 seconds (5 minutes)
|
|
60
|
+
* revalidate: 3600 seconds (1 hour)
|
|
61
|
+
* expire: 86400 seconds (1 day)
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* This cache may be stale on clients for 5 minutes before checking with the server.
|
|
65
|
+
* If the server receives a new request after 1 hour, start revalidating new values in the background.
|
|
66
|
+
* If this entry has no traffic for 1 day it will expire. The next request will recompute it.
|
|
67
|
+
*/
|
|
68
|
+
export function unstable_cacheLife(profile: "hours"): void
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Cache this `"use cache"` for a timespan defined by the `"days"` profile.
|
|
72
|
+
* ```
|
|
73
|
+
* stale: 300 seconds (5 minutes)
|
|
74
|
+
* revalidate: 86400 seconds (1 day)
|
|
75
|
+
* expire: 604800 seconds (1 week)
|
|
76
|
+
* ```
|
|
77
|
+
*
|
|
78
|
+
* This cache may be stale on clients for 5 minutes before checking with the server.
|
|
79
|
+
* If the server receives a new request after 1 day, start revalidating new values in the background.
|
|
80
|
+
* If this entry has no traffic for 1 week it will expire. The next request will recompute it.
|
|
81
|
+
*/
|
|
82
|
+
export function unstable_cacheLife(profile: "days"): void
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Cache this `"use cache"` for a timespan defined by the `"weeks"` profile.
|
|
86
|
+
* ```
|
|
87
|
+
* stale: 300 seconds (5 minutes)
|
|
88
|
+
* revalidate: 604800 seconds (1 week)
|
|
89
|
+
* expire: 2592000 seconds (30 days)
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* This cache may be stale on clients for 5 minutes before checking with the server.
|
|
93
|
+
* If the server receives a new request after 1 week, start revalidating new values in the background.
|
|
94
|
+
* If this entry has no traffic for 30 days it will expire. The next request will recompute it.
|
|
95
|
+
*/
|
|
96
|
+
export function unstable_cacheLife(profile: "weeks"): void
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Cache this `"use cache"` for a timespan defined by the `"max"` profile.
|
|
100
|
+
* ```
|
|
101
|
+
* stale: 300 seconds (5 minutes)
|
|
102
|
+
* revalidate: 2592000 seconds (30 days)
|
|
103
|
+
* expire: never
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* This cache may be stale on clients for 5 minutes before checking with the server.
|
|
107
|
+
* If the server receives a new request after 30 days, start revalidating new values in the background.
|
|
108
|
+
* It lives for the maximum age of the server cache. If this entry has no traffic for a while, it may serve an old value the next request.
|
|
109
|
+
*/
|
|
110
|
+
export function unstable_cacheLife(profile: "max"): void
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Cache this `"use cache"` using a custom timespan.
|
|
114
|
+
* ```
|
|
115
|
+
* stale: ... // seconds
|
|
116
|
+
* revalidate: ... // seconds
|
|
117
|
+
* expire: ... // seconds
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* This is similar to Cache-Control: max-age=`stale`,s-max-age=`revalidate`,stale-while-revalidate=`expire-revalidate`
|
|
121
|
+
*
|
|
122
|
+
* If a value is left out, the lowest of other cacheLife() calls or the default, is used instead.
|
|
123
|
+
*/
|
|
124
|
+
export function unstable_cacheLife(profile: {
|
|
125
|
+
/**
|
|
126
|
+
* This cache may be stale on clients for ... seconds before checking with the server.
|
|
127
|
+
*/
|
|
128
|
+
stale?: number,
|
|
129
|
+
/**
|
|
130
|
+
* If the server receives a new request after ... seconds, start revalidating new values in the background.
|
|
131
|
+
*/
|
|
132
|
+
revalidate?: number,
|
|
133
|
+
/**
|
|
134
|
+
* If this entry has no traffic for ... seconds it will expire. The next request will recompute it.
|
|
135
|
+
*/
|
|
136
|
+
expire?: number
|
|
137
|
+
}): void
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
export { cacheTag as unstable_cacheTag } from 'next/dist/server/use-cache/cache-tag'
|
|
141
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type": "module"}
|
package/README.md
CHANGED
|
@@ -1,157 +1,96 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
<picture>
|
|
4
|
-
<source media="(prefers-color-scheme: dark)" srcset="
|
|
5
|
-
<source media="(prefers-color-scheme: light)" srcset="
|
|
6
|
-
<img width="250" alt="MCPJam logo" src="
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="./public/mcp_jam_dark.png">
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="./public/mcp_jam_light.png">
|
|
6
|
+
<img width="250" alt="MCPJam Inspector V1 logo" src="./public/mcp_jam_light.png">
|
|
7
7
|
</picture>
|
|
8
8
|
|
|
9
9
|
<br/>
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
**The developer tool for testing and debugging MCP servers**
|
|
11
|
+
## MCP Server Testing Tool
|
|
14
12
|
|
|
15
13
|
[](https://www.npmjs.com/package/@mcpjam/inspector)
|
|
16
|
-
[](https://www.npmjs.com/package/@mcpjam/inspector)
|
|
17
|
-
[](https://hub.docker.com/r/mcpjam/mcp-inspector)
|
|
18
14
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
19
|
-
[](https://nodejs.org/)
|
|
20
|
-
[](https://www.typescriptlang.org/)
|
|
21
15
|
[](https://discord.gg/JEnDtz8X6z)
|
|
22
16
|
|
|
23
17
|
</div>
|
|
24
18
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
## Quick Start
|
|
28
|
-
|
|
29
|
-
Get up and running in seconds with the MCPJam Inspector:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npx @mcpjam/inspector@latest
|
|
33
|
-
```
|
|
19
|
+
A developer tool for testing, debugging Model Context Protocol (MCP) servers. Test whether or not you built your MCP server correctly. The project is open source and fully compliant to the MCP spec.
|
|
34
20
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
### Running with Docker
|
|
38
|
-
|
|
39
|
-
You can also run the inspector using Docker. First, make sure you have Docker installed and running.
|
|
40
|
-
|
|
41
|
-
Pull the latest image from Docker Hub:
|
|
42
|
-
|
|
43
|
-
```bash
|
|
44
|
-
docker pull mcpjam/mcp-inspector:main
|
|
45
|
-
```
|
|
21
|
+
## Key Features
|
|
46
22
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
---
|
|
23
|
+
| Feature | Description |
|
|
24
|
+
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
25
|
+
| **Full MCP Spec Compliance** | Test your MCP server's tools, resources, prompts, and OAuth 2. MCPJam is compliant with the latest MCP specs. |
|
|
26
|
+
| **All transports supported** | Connect to any MCP server. MCPJam inspector supports STDIO, SSE, and Streamable HTTP transports. |
|
|
27
|
+
| **LLM Playground** | Integrated chat playground with OpenAI, Anthropic Claude, and Ollama model support. Test how your MCP server would behave against an LLM |
|
|
28
|
+
| **Debugging** | Comprehensive logging, tracing, and error reporting for MCP server development |
|
|
29
|
+
| **Developer Experience** | Connect to multiple MCP servers. Save configurations. Upgraded UI/UX for modern dev experience. |
|
|
56
30
|
|
|
57
31
|
## πΈ Screenshots
|
|
58
32
|
|
|
59
|
-
<
|
|
60
|
-
<img width="1511" alt="MCPJam Inspector Interface" src="https://github.com/user-attachments/assets/ade8a46a-f738-4d32-ac85-260a5e22b90f" />
|
|
61
|
-
</div>
|
|
62
|
-
|
|
63
|
-
---
|
|
33
|
+
<img alt="MCPJam Inspector Demo" src="./public/demo_1.png">
|
|
64
34
|
|
|
65
|
-
|
|
35
|
+
<details>
|
|
36
|
+
<summary><strong>LLM Playground</strong></summary>
|
|
66
37
|
|
|
67
|
-
|
|
38
|
+
<img alt="LLM Chat Demo" src="./public/demo_2.png">
|
|
68
39
|
|
|
69
|
-
|
|
70
|
-
- **Tool Execution** - Run server tools with live parameter input. Easily debug errors.
|
|
71
|
-
- **(New) LLM tool interaction** - Test your MCP server against a real LLM.
|
|
72
|
-
- **Debugging tools** - Enhanced logging experience to debug your server.
|
|
73
|
-
- **Quality of life improvements** - Save requests, multi-server connection, saved connections.
|
|
40
|
+
</details>
|
|
74
41
|
|
|
75
|
-
|
|
42
|
+
<details>
|
|
43
|
+
<summary><strong>Connect to any server</strong></summary>
|
|
76
44
|
|
|
77
|
-
|
|
78
|
-
- **npm**: `^10.0.0` or higher (comes with Node.js)
|
|
45
|
+
<img alt="MCPJam Connection Demo" src="./public/demo_3.png">
|
|
79
46
|
|
|
80
|
-
|
|
47
|
+
</details>
|
|
81
48
|
|
|
82
|
-
##
|
|
49
|
+
## π Quick Start
|
|
83
50
|
|
|
84
|
-
|
|
51
|
+
Start up the MCPJam inspector:
|
|
85
52
|
|
|
86
53
|
```bash
|
|
87
|
-
# Launch inspector with default settings
|
|
88
54
|
npx @mcpjam/inspector
|
|
89
55
|
```
|
|
90
56
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
# Connect to a server built at build/index.js
|
|
95
|
-
npx @mcpjam/inspector node build/index.js
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Connect with Arguments
|
|
57
|
+
Other commands:
|
|
99
58
|
|
|
100
59
|
```bash
|
|
101
|
-
#
|
|
102
|
-
npx @mcpjam/inspector
|
|
103
|
-
```
|
|
60
|
+
# Launch with custom port
|
|
61
|
+
npx @mcpjam/inspector --port 4000
|
|
104
62
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
# Load servers from a config file
|
|
109
|
-
npx @mcpjam/inspector --config ./my-config.json
|
|
63
|
+
# Shortcut for starting MCPJam and an Ollama model
|
|
64
|
+
npx @mcpjam/inspector --ollama llama3.2
|
|
110
65
|
```
|
|
111
66
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
```json
|
|
115
|
-
{
|
|
116
|
-
"mcpServers": {
|
|
117
|
-
"my-awesome-server": {
|
|
118
|
-
"command": "node",
|
|
119
|
-
"args": ["build/index.js"],
|
|
120
|
-
"env": {
|
|
121
|
-
"API_KEY": "your-api-key",
|
|
122
|
-
"DEBUG": "true"
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
"python-server": {
|
|
126
|
-
"command": "python",
|
|
127
|
-
"args": ["-m", "my_mcp_server"],
|
|
128
|
-
"env": {
|
|
129
|
-
"PYTHONPATH": "./src"
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
```
|
|
67
|
+
## Requirements
|
|
135
68
|
|
|
136
|
-
|
|
69
|
+
[](https://nodejs.org/)
|
|
70
|
+
[](https://www.typescriptlang.org/)
|
|
71
|
+
[](https://nextjs.org/)
|
|
137
72
|
|
|
138
73
|
## ποΈ Architecture
|
|
139
74
|
|
|
140
|
-
|
|
75
|
+
MCPJam Inspector V1 is built as a modern Next.js application with integrated MCP capabilities:
|
|
141
76
|
|
|
142
77
|
```
|
|
143
|
-
π¦ @mcpjam/inspector
|
|
144
|
-
βββ
|
|
145
|
-
βββ
|
|
146
|
-
|
|
78
|
+
π¦ @mcpjam/inspector-v1
|
|
79
|
+
βββ π¨ src/app/ # Next.js 15 App Router
|
|
80
|
+
βββ π§© src/components/ # React components with Radix UI
|
|
81
|
+
βββ π§ src/lib/ # Utility functions and helpers
|
|
82
|
+
βββ π― src/hooks/ # Custom React hooks
|
|
83
|
+
βββ π± src/stores/ # Zustand state management
|
|
84
|
+
βββ π¨ src/styles/ # Tailwind CSS themes
|
|
85
|
+
βββ π bin/ # CLI launcher script
|
|
147
86
|
```
|
|
148
87
|
|
|
149
88
|
### Tech Stack
|
|
150
89
|
|
|
151
|
-
- **
|
|
152
|
-
- **
|
|
153
|
-
- **
|
|
154
|
-
- **
|
|
90
|
+
- **Framework**: Next.js 15.4 with App Router and React 19
|
|
91
|
+
- **Styling**: Tailwind CSS 4.x with custom themes and Radix UI components
|
|
92
|
+
- **MCP Integration**: Mastra framework (@mastra/core, @mastra/mcp)
|
|
93
|
+
- **AI Integration**: AI SDK with OpenAI, Anthropic, and Ollama providers
|
|
155
94
|
|
|
156
95
|
---
|
|
157
96
|
|
|
@@ -167,81 +106,55 @@ cd inspector
|
|
|
167
106
|
# Install dependencies
|
|
168
107
|
npm install
|
|
169
108
|
|
|
170
|
-
# Start development
|
|
109
|
+
# Start development server
|
|
171
110
|
npm run dev
|
|
172
111
|
```
|
|
173
112
|
|
|
113
|
+
The development server will start at `http://localhost:3000` with hot reloading enabled.
|
|
114
|
+
|
|
174
115
|
### Build for Production
|
|
175
116
|
|
|
176
117
|
```bash
|
|
177
|
-
# Build
|
|
118
|
+
# Build the application
|
|
178
119
|
npm run build
|
|
179
120
|
|
|
180
|
-
#
|
|
121
|
+
# Start production server
|
|
181
122
|
npm run start
|
|
182
123
|
```
|
|
183
124
|
|
|
184
|
-
### Scripts
|
|
125
|
+
### Available Scripts
|
|
185
126
|
|
|
186
|
-
|
|
187
|
-
|
|
|
188
|
-
|
|
|
189
|
-
| `npm run
|
|
190
|
-
| `npm run
|
|
191
|
-
| `npm run
|
|
192
|
-
| `npm run prettier-fix` | Format code with Prettier
|
|
193
|
-
| `npm run clean` | Clean all build artifacts and reinstall |
|
|
127
|
+
| Script | Description |
|
|
128
|
+
| ---------------------- | ----------------------------------------------- |
|
|
129
|
+
| `npm run dev` | Start Next.js development server with Turbopack |
|
|
130
|
+
| `npm run build` | Build the application for production |
|
|
131
|
+
| `npm run start` | Start the production server |
|
|
132
|
+
| `npm run lint` | Run ESLint code linting |
|
|
133
|
+
| `npm run prettier-fix` | Format code with Prettier |
|
|
194
134
|
|
|
195
135
|
---
|
|
196
136
|
|
|
197
137
|
## π€ Contributing
|
|
198
138
|
|
|
199
|
-
We welcome contributions
|
|
200
|
-
|
|
201
|
-
1. **Clone** the repository
|
|
202
|
-
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
|
|
203
|
-
3. **Commit** your changes (`git commit -m 'Add amazing feature'`)
|
|
204
|
-
4. **Push** to the branch (`git push origin feature/amazing-feature`)
|
|
205
|
-
5. **Open** a Pull Request
|
|
206
|
-
|
|
207
|
-
## πΊοΈ Our Roadmap
|
|
208
|
-
|
|
209
|
-
We're continuously improving the MCPJam Inspector. Here's what's coming next:
|
|
139
|
+
We welcome contributions to MCPJam Inspector V1! Please read our [CONTRIBUTING.md](./CONTRIBUTING.md) for development guidelines and best practices.
|
|
210
140
|
|
|
211
|
-
###
|
|
141
|
+
### Development Workflow
|
|
212
142
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
### Technical Enhancements
|
|
223
|
-
|
|
224
|
-
- **Security scanning** - Built-in vulnerability scanning tools
|
|
225
|
-
- **Electron App** - Desktop application for enhanced user experience
|
|
226
|
-
|
|
227
|
-
### Ecosystem
|
|
228
|
-
|
|
229
|
-
- **Landing page improvements** - Update MCP Jam landing page
|
|
230
|
-
- **Documentation expansion** - Enhanced guides and tutorials
|
|
231
|
-
|
|
232
|
-
### Development Guidelines
|
|
233
|
-
|
|
234
|
-
- Follow the existing code style (Prettier + ESLint)
|
|
235
|
-
- Update documentation as needed
|
|
236
|
-
|
|
237
|
-
---
|
|
143
|
+
1. **Fork** the repository
|
|
144
|
+
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
|
|
145
|
+
3. **Develop** your changes with proper testing
|
|
146
|
+
4. **Format** code with `npm run prettier-fix`
|
|
147
|
+
5. **Lint** code with `npm run lint`
|
|
148
|
+
6. **Commit** your changes (`git commit -m 'Add amazing feature'`)
|
|
149
|
+
7. **Push** to your branch (`git push origin feature/amazing-feature`)
|
|
150
|
+
8. **Open** a Pull Request
|
|
238
151
|
|
|
239
152
|
## π Resources
|
|
240
153
|
|
|
241
|
-
-
|
|
242
|
-
- **π
|
|
243
|
-
-
|
|
244
|
-
-
|
|
154
|
+
- **π¬ Discord**: [Join the MCPJam Community](https://discord.gg/JEnDtz8X6z)
|
|
155
|
+
- **π MCP Protocol**: [Model Context Protocol Documentation](https://modelcontextprotocol.io/)
|
|
156
|
+
- **π§ Mastra Framework**: [Mastra MCP Integration](https://github.com/mastra-ai/mastra)
|
|
157
|
+
- **π€ AI SDK**: [Vercel AI SDK](https://sdk.vercel.ai/)
|
|
245
158
|
|
|
246
159
|
---
|
|
247
160
|
|
|
@@ -253,6 +166,8 @@ This project is licensed under the **Apache License 2.0** - see the [LICENSE](LI
|
|
|
253
166
|
|
|
254
167
|
<div align="center">
|
|
255
168
|
|
|
256
|
-
**
|
|
169
|
+
**MCPJam Inspector V1** β’ Built with Next.js and β€οΈ for the MCP community
|
|
170
|
+
|
|
171
|
+
[π Website](https://mcpjam.com) β’ [π Docs](https://modelcontextprotocol.io/) β’ [π Issues](https://github.com/mcpjam/inspector-v1/issues)
|
|
257
172
|
|
|
258
173
|
</div>
|