@@ -603,6 +603,17 @@ export abstract class Protocol<SendRequestT extends Request, SendNotificationT e
603603 }
604604 }
605605
606+ private _getDefaultListResponse ( method : string ) : SendResultT | null {
607+ const listMethodResponses : Record < string , string > = {
608+ 'prompts/list' : 'prompts' ,
609+ 'resources/list' : 'resources' ,
610+ 'resources/templates/list' : 'resourceTemplates' ,
611+ 'tools/list' : 'tools'
612+ } ;
613+ const responseKey = listMethodResponses [ method ] ;
614+ return responseKey ? ( { [ responseKey ] : [ ] } as SendResultT ) : null ;
615+ }
616+
606617 /**
607618 * Attaches to the given transport, starts it, and starts listening for messages.
608619 *
@@ -684,6 +695,32 @@ export abstract class Protocol<SendRequestT extends Request, SendNotificationT e
684695 const relatedTaskId = request . params ?. _meta ?. [ RELATED_TASK_META_KEY ] ?. taskId ;
685696
686697 if ( handler === undefined ) {
698+ const defaultResponse = this . _getDefaultListResponse ( request . method ) ;
699+ if ( defaultResponse !== null ) {
700+ const successResponse : JSONRPCResultResponse = {
701+ jsonrpc : '2.0' ,
702+ id : request . id ,
703+ result : defaultResponse
704+ } ;
705+
706+ if ( relatedTaskId && this . _taskMessageQueue ) {
707+ this . _enqueueTaskMessage (
708+ relatedTaskId ,
709+ {
710+ type : 'response' ,
711+ message : successResponse ,
712+ timestamp : Date . now ( )
713+ } ,
714+ capturedTransport ?. sessionId
715+ ) . catch ( error => this . _onerror ( new Error ( `Failed to enqueue default list response: ${ error } ` ) ) ) ;
716+ } else {
717+ capturedTransport
718+ ?. send ( successResponse )
719+ . catch ( error => this . _onerror ( new Error ( `Failed to send default list response: ${ error } ` ) ) ) ;
720+ }
721+ return ;
722+ }
723+
687724 const errorResponse : JSONRPCErrorResponse = {
688725 jsonrpc : '2.0' ,
689726 id : request . id ,
0 commit comments