@@ -496,32 +496,37 @@ export class Server<
496496 resources : { } ,
497497 } ) ;
498498
499- this . setRequestHandler ( ListResourcesRequestSchema , async ( ) => {
500- const resources = Object . entries ( this . _registeredResources ) . map (
501- ( [ uri , resource ] ) => ( {
502- uri,
503- name : resource . name ,
504- ...resource . metadata ,
505- } ) ,
506- ) ;
499+ this . setRequestHandler (
500+ ListResourcesRequestSchema ,
501+ async ( request , extra ) => {
502+ const resources = Object . entries ( this . _registeredResources ) . map (
503+ ( [ uri , resource ] ) => ( {
504+ uri,
505+ name : resource . name ,
506+ ...resource . metadata ,
507+ } ) ,
508+ ) ;
507509
508- const templateResources : Resource [ ] = [ ] ;
509- for ( const template of Object . values ( this . _registeredResourceTemplates ) ) {
510- if ( ! template . resourceTemplate . listCallback ) {
511- continue ;
512- }
510+ const templateResources : Resource [ ] = [ ] ;
511+ for ( const template of Object . values (
512+ this . _registeredResourceTemplates ,
513+ ) ) {
514+ if ( ! template . resourceTemplate . listCallback ) {
515+ continue ;
516+ }
513517
514- const result = await template . resourceTemplate . listCallback ( ) ;
515- for ( const resource of result . resources ) {
516- templateResources . push ( {
517- ...resource ,
518- ...template . metadata ,
519- } ) ;
518+ const result = await template . resourceTemplate . listCallback ( extra ) ;
519+ for ( const resource of result . resources ) {
520+ templateResources . push ( {
521+ ...resource ,
522+ ...template . metadata ,
523+ } ) ;
524+ }
520525 }
521- }
522526
523- return { resources : [ ...resources , ...templateResources ] } ;
524- } ) ;
527+ return { resources : [ ...resources , ...templateResources ] } ;
528+ } ,
529+ ) ;
525530
526531 this . setRequestHandler ( ListResourceTemplatesRequestSchema , async ( ) => {
527532 const resourceTemplates = Object . entries (
@@ -535,27 +540,35 @@ export class Server<
535540 return { resourceTemplates } ;
536541 } ) ;
537542
538- this . setRequestHandler ( ReadResourceRequestSchema , async ( request ) => {
539- const uri = new URL ( request . params . uri ) ;
540-
541- // First check for exact resource match
542- const resource = this . _registeredResources [ uri . toString ( ) ] ;
543- if ( resource ) {
544- return resource . readCallback ( uri ) ;
545- }
543+ this . setRequestHandler (
544+ ReadResourceRequestSchema ,
545+ async ( request , extra ) => {
546+ const uri = new URL ( request . params . uri ) ;
547+
548+ // First check for exact resource match
549+ const resource = this . _registeredResources [ uri . toString ( ) ] ;
550+ if ( resource ) {
551+ return resource . readCallback ( uri , extra ) ;
552+ }
546553
547- // Then check templates
548- for ( const template of Object . values ( this . _registeredResourceTemplates ) ) {
549- const variables = template . resourceTemplate . uriTemplate . match (
550- uri . toString ( ) ,
551- ) ;
552- if ( variables ) {
553- return template . readCallback ( uri , variables ) ;
554+ // Then check templates
555+ for ( const template of Object . values (
556+ this . _registeredResourceTemplates ,
557+ ) ) {
558+ const variables = template . resourceTemplate . uriTemplate . match (
559+ uri . toString ( ) ,
560+ ) ;
561+ if ( variables ) {
562+ return template . readCallback ( uri , variables , extra ) ;
563+ }
554564 }
555- }
556565
557- throw new McpError ( ErrorCode . InvalidParams , `Resource ${ uri } not found` ) ;
558- } ) ;
566+ throw new McpError (
567+ ErrorCode . InvalidParams ,
568+ `Resource ${ uri } not found` ,
569+ ) ;
570+ } ,
571+ ) ;
559572 }
560573
561574 /**
@@ -735,15 +748,16 @@ export type ResourceMetadata = Omit<Resource, "uri" | "name">;
735748/**
736749 * Callback to list all resources matching a given template.
737750 */
738- export type ListResourcesCallback = ( ) =>
739- | ListResourcesResult
740- | Promise < ListResourcesResult > ;
751+ export type ListResourcesCallback = (
752+ extra : RequestHandlerExtra ,
753+ ) => ListResourcesResult | Promise < ListResourcesResult > ;
741754
742755/**
743756 * Callback to read a resource at a given URI.
744757 */
745758export type ReadResourceCallback = (
746759 uri : URL ,
760+ extra : RequestHandlerExtra ,
747761) => ReadResourceResult | Promise < ReadResourceResult > ;
748762
749763type RegisteredResource = {
@@ -758,6 +772,7 @@ type RegisteredResource = {
758772export type ReadResourceTemplateCallback = (
759773 uri : URL ,
760774 variables : Variables ,
775+ extra : RequestHandlerExtra ,
761776) => ReadResourceResult | Promise < ReadResourceResult > ;
762777
763778type RegisteredResourceTemplate = {
0 commit comments