1
- import McpClient from "./client.js" ;
2
1
import cors from "cors" ;
3
2
4
3
import { Server } from "mcp-typescript/server/index.js" ;
@@ -11,7 +10,15 @@ import {
11
10
ListResourcesRequestSchema ,
12
11
ListToolsRequestSchema ,
13
12
ReadResourceRequestSchema ,
13
+ ListResourcesResultSchema ,
14
+ ReadResourceResultSchema ,
15
+ ListPromptsResultSchema ,
16
+ GetPromptResultSchema ,
17
+ ListToolsResultSchema ,
18
+ CallToolResultSchema ,
14
19
} from "mcp-typescript/types.js" ;
20
+ import { Client } from "mcp-typescript/client/index.js" ;
21
+ import { StdioClientTransport } from "mcp-typescript/client/stdio.js" ;
15
22
16
23
const app = express ( ) ;
17
24
app . use ( cors ( ) ) ;
@@ -22,10 +29,12 @@ app.get("/sse", async (req, res) => {
22
29
console . log ( "New SSE connection" ) ;
23
30
const command = decodeURIComponent ( req . query . command as string ) ;
24
31
const args = decodeURIComponent ( req . query . args as string ) . split ( "," ) ;
25
- const mcpClient = new McpClient ( "MyApp" , "1.0.0" ) ;
26
- await mcpClient . connectStdio ( command , args ) ;
32
+ const mcpClient = new Client ( { name : "MyApp" , version : "1.0.0" } ) ;
33
+ const backingServerTransport = new StdioClientTransport ( ) ;
34
+ await backingServerTransport . spawn ( { command, args } ) ;
35
+ await mcpClient . connect ( backingServerTransport ) ;
27
36
28
- const transport = new SSEServerTransport ( "/message" ) ;
37
+ const webAppTransport = new SSEServerTransport ( "/message" ) ;
29
38
const server = new Server ( {
30
39
name : "mcp-server-inspector" ,
31
40
version : "0.0.1" ,
@@ -38,31 +47,65 @@ app.get("/sse", async (req, res) => {
38
47
await mcpClient . close ( ) ;
39
48
} ;
40
49
41
- server . setRequestHandler ( ListResourcesRequestSchema , ( ) => {
42
- return mcpClient . listResources ( ) ;
43
- } ) ;
50
+ server . setRequestHandler ( ListResourcesRequestSchema , ( ) =>
51
+ mcpClient . request (
52
+ {
53
+ method : "resources/list" ,
54
+ } ,
55
+ ListResourcesResultSchema ,
56
+ ) ,
57
+ ) ;
44
58
45
- server . setRequestHandler ( ReadResourceRequestSchema , ( params ) => {
46
- return mcpClient . readResource ( params . params ) ;
47
- } ) ;
59
+ server . setRequestHandler ( ReadResourceRequestSchema , ( params ) =>
60
+ mcpClient . request (
61
+ {
62
+ method : "resources/read" ,
63
+ params : params . params ,
64
+ } ,
65
+ ReadResourceResultSchema ,
66
+ ) ,
67
+ ) ;
48
68
49
- server . setRequestHandler ( ListPromptsRequestSchema , ( ) => {
50
- return mcpClient . listPrompts ( ) ;
51
- } ) ;
69
+ server . setRequestHandler ( ListPromptsRequestSchema , ( ) =>
70
+ mcpClient . request (
71
+ {
72
+ method : "prompts/list" ,
73
+ } ,
74
+ ListPromptsResultSchema ,
75
+ ) ,
76
+ ) ;
52
77
53
78
server . setRequestHandler ( GetPromptRequestSchema , ( params ) => {
54
- return mcpClient . getPrompt ( params . params ) ;
79
+ return mcpClient . request (
80
+ {
81
+ method : "prompts/get" ,
82
+ params : params . params ,
83
+ } ,
84
+ GetPromptResultSchema ,
85
+ ) ;
55
86
} ) ;
56
87
57
- server . setRequestHandler ( ListToolsRequestSchema , ( ) => {
58
- return mcpClient . listTools ( ) ;
59
- } ) ;
88
+ server . setRequestHandler ( ListToolsRequestSchema , ( ) =>
89
+ mcpClient . request (
90
+ {
91
+ method : "tools/list" ,
92
+ } ,
93
+ ListToolsResultSchema ,
94
+ ) ,
95
+ ) ;
60
96
61
- server . setRequestHandler ( CallToolRequestSchema , ( params ) => {
62
- return mcpClient . callTool ( params . params ) ;
63
- } ) ;
64
- await transport . connectSSE ( req , res ) ;
65
- await server . connect ( transport ) ;
97
+ server . setRequestHandler ( CallToolRequestSchema , ( params ) =>
98
+ mcpClient . request (
99
+ {
100
+ method : "tools/call" ,
101
+ params : params . params ,
102
+ } ,
103
+ CallToolResultSchema ,
104
+ ) ,
105
+ ) ;
106
+
107
+ await webAppTransport . connectSSE ( req , res ) ;
108
+ await server . connect ( webAppTransport ) ;
66
109
} ) ;
67
110
68
111
app . post ( "/message" , async ( req , res ) => {
0 commit comments