@@ -79,7 +79,11 @@ const App = () => {
79
79
const [ tools , setTools ] = useState < Tool [ ] > ( [ ] ) ;
80
80
const [ toolResult , setToolResult ] =
81
81
useState < CompatibilityCallToolResult | null > ( null ) ;
82
- const [ error , setError ] = useState < string | null > ( null ) ;
82
+ const [ errors , setErrors ] = useState < Record < string , string | null > > ( {
83
+ resources : null ,
84
+ prompts : null ,
85
+ tools : null ,
86
+ } ) ;
83
87
const [ command , setCommand ] = useState < string > ( ( ) => {
84
88
return localStorage . getItem ( "lastCommand" ) || "mcp-server-everything" ;
85
89
} ) ;
@@ -175,17 +179,19 @@ const App = () => {
175
179
const makeRequest = async < T extends ZodType < object > > (
176
180
request : ClientRequest ,
177
181
schema : T ,
182
+ tabKey : keyof typeof errors
178
183
) => {
179
184
if ( ! mcpClient ) {
180
185
throw new Error ( "MCP client not connected" ) ;
181
186
}
182
-
187
+
183
188
try {
184
189
const response = await mcpClient . request ( request , schema ) ;
185
190
pushHistory ( request , response ) ;
191
+ setErrors ( prev => ( { ...prev , [ tabKey ] : null } ) ) ;
186
192
return response ;
187
193
} catch ( e : unknown ) {
188
- setError ( ( e as Error ) . message ) ;
194
+ setErrors ( prev => ( { ... prev , [ tabKey ] : ( e as Error ) . message } ) ) ;
189
195
throw e ;
190
196
}
191
197
} ;
@@ -211,11 +217,12 @@ const App = () => {
211
217
params : nextResourceCursor ? { cursor : nextResourceCursor } : { } ,
212
218
} ,
213
219
ListResourcesResultSchema ,
220
+ 'resources'
214
221
) ;
215
222
setResources ( resources . concat ( response . resources ?? [ ] ) ) ;
216
223
setNextResourceCursor ( response . nextCursor ) ;
217
224
} ;
218
-
225
+
219
226
const listResourceTemplates = async ( ) => {
220
227
const response = await makeRequest (
221
228
{
@@ -225,20 +232,22 @@ const App = () => {
225
232
: { } ,
226
233
} ,
227
234
ListResourceTemplatesResultSchema ,
235
+ 'resources'
228
236
) ;
229
237
setResourceTemplates (
230
238
resourceTemplates . concat ( response . resourceTemplates ?? [ ] ) ,
231
239
) ;
232
240
setNextResourceTemplateCursor ( response . nextCursor ) ;
233
241
} ;
234
-
242
+
235
243
const readResource = async ( uri : string ) => {
236
244
const response = await makeRequest (
237
245
{
238
246
method : "resources/read" as const ,
239
247
params : { uri } ,
240
248
} ,
241
249
ReadResourceResultSchema ,
250
+ 'resources'
242
251
) ;
243
252
setResourceContent ( JSON . stringify ( response , null , 2 ) ) ;
244
253
} ;
@@ -250,18 +259,20 @@ const App = () => {
250
259
params : nextPromptCursor ? { cursor : nextPromptCursor } : { } ,
251
260
} ,
252
261
ListPromptsResultSchema ,
262
+ 'prompts'
253
263
) ;
254
264
setPrompts ( response . prompts ) ;
255
265
setNextPromptCursor ( response . nextCursor ) ;
256
266
} ;
257
-
267
+
258
268
const getPrompt = async ( name : string , args : Record < string , string > = { } ) => {
259
269
const response = await makeRequest (
260
270
{
261
271
method : "prompts/get" as const ,
262
272
params : { name, arguments : args } ,
263
273
} ,
264
274
GetPromptResultSchema ,
275
+ 'prompts'
265
276
) ;
266
277
setPromptContent ( JSON . stringify ( response , null , 2 ) ) ;
267
278
} ;
@@ -273,11 +284,12 @@ const App = () => {
273
284
params : nextToolCursor ? { cursor : nextToolCursor } : { } ,
274
285
} ,
275
286
ListToolsResultSchema ,
287
+ 'tools'
276
288
) ;
277
289
setTools ( response . tools ) ;
278
290
setNextToolCursor ( response . nextCursor ) ;
279
291
} ;
280
-
292
+
281
293
const callTool = async ( name : string , params : Record < string , unknown > ) => {
282
294
const response = await makeRequest (
283
295
{
@@ -291,6 +303,7 @@ const App = () => {
291
303
} ,
292
304
} ,
293
305
CompatibilityCallToolResultSchema ,
306
+ 'tools'
294
307
) ;
295
308
setToolResult ( response ) ;
296
309
} ;
@@ -515,7 +528,7 @@ const App = () => {
515
528
resourceContent = { resourceContent }
516
529
nextCursor = { nextResourceCursor }
517
530
nextTemplateCursor = { nextResourceTemplateCursor }
518
- error = { error }
531
+ error = { errors . resources }
519
532
/>
520
533
< PromptsTab
521
534
prompts = { prompts }
@@ -525,9 +538,8 @@ const App = () => {
525
538
setSelectedPrompt = { setSelectedPrompt }
526
539
promptContent = { promptContent }
527
540
nextCursor = { nextPromptCursor }
528
- error = { error }
541
+ error = { errors . prompts }
529
542
/>
530
- < RequestsTab />
531
543
< ToolsTab
532
544
tools = { tools }
533
545
listTools = { listTools }
@@ -539,7 +551,7 @@ const App = () => {
539
551
} }
540
552
toolResult = { toolResult }
541
553
nextCursor = { nextToolCursor }
542
- error = { error }
554
+ error = { errors . tools }
543
555
/>
544
556
< ConsoleTab />
545
557
< PingTab
0 commit comments