1- import McpClient from "./client.js" ;
21import cors from "cors" ;
32
43import { Server } from "mcp-typescript/server/index.js" ;
@@ -11,7 +10,15 @@ import {
1110 ListResourcesRequestSchema ,
1211 ListToolsRequestSchema ,
1312 ReadResourceRequestSchema ,
13+ ListResourcesResultSchema ,
14+ ReadResourceResultSchema ,
15+ ListPromptsResultSchema ,
16+ GetPromptResultSchema ,
17+ ListToolsResultSchema ,
18+ CallToolResultSchema ,
1419} from "mcp-typescript/types.js" ;
20+ import { Client } from "mcp-typescript/client/index.js" ;
21+ import { StdioClientTransport } from "mcp-typescript/client/stdio.js" ;
1522
1623const app = express ( ) ;
1724app . use ( cors ( ) ) ;
@@ -22,10 +29,12 @@ app.get("/sse", async (req, res) => {
2229 console . log ( "New SSE connection" ) ;
2330 const command = decodeURIComponent ( req . query . command as string ) ;
2431 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 ) ;
2736
28- const transport = new SSEServerTransport ( "/message" ) ;
37+ const webAppTransport = new SSEServerTransport ( "/message" ) ;
2938 const server = new Server ( {
3039 name : "mcp-server-inspector" ,
3140 version : "0.0.1" ,
@@ -38,31 +47,65 @@ app.get("/sse", async (req, res) => {
3847 await mcpClient . close ( ) ;
3948 } ;
4049
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+ ) ;
4458
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+ ) ;
4868
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+ ) ;
5277
5378 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+ ) ;
5586 } ) ;
5687
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+ ) ;
6096
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 ) ;
66109} ) ;
67110
68111app . post ( "/message" , async ( req , res ) => {
0 commit comments