@@ -496,32 +496,37 @@ export class Server<
496
496
resources : { } ,
497
497
} ) ;
498
498
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
+ ) ;
507
509
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
+ }
513
517
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
+ }
520
525
}
521
- }
522
526
523
- return { resources : [ ...resources , ...templateResources ] } ;
524
- } ) ;
527
+ return { resources : [ ...resources , ...templateResources ] } ;
528
+ } ,
529
+ ) ;
525
530
526
531
this . setRequestHandler ( ListResourceTemplatesRequestSchema , async ( ) => {
527
532
const resourceTemplates = Object . entries (
@@ -535,27 +540,35 @@ export class Server<
535
540
return { resourceTemplates } ;
536
541
} ) ;
537
542
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
+ }
546
553
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
+ }
554
564
}
555
- }
556
565
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
+ ) ;
559
572
}
560
573
561
574
/**
@@ -735,15 +748,16 @@ export type ResourceMetadata = Omit<Resource, "uri" | "name">;
735
748
/**
736
749
* Callback to list all resources matching a given template.
737
750
*/
738
- export type ListResourcesCallback = ( ) =>
739
- | ListResourcesResult
740
- | Promise < ListResourcesResult > ;
751
+ export type ListResourcesCallback = (
752
+ extra : RequestHandlerExtra ,
753
+ ) => ListResourcesResult | Promise < ListResourcesResult > ;
741
754
742
755
/**
743
756
* Callback to read a resource at a given URI.
744
757
*/
745
758
export type ReadResourceCallback = (
746
759
uri : URL ,
760
+ extra : RequestHandlerExtra ,
747
761
) => ReadResourceResult | Promise < ReadResourceResult > ;
748
762
749
763
type RegisteredResource = {
@@ -758,6 +772,7 @@ type RegisteredResource = {
758
772
export type ReadResourceTemplateCallback = (
759
773
uri : URL ,
760
774
variables : Variables ,
775
+ extra : RequestHandlerExtra ,
761
776
) => ReadResourceResult | Promise < ReadResourceResult > ;
762
777
763
778
type RegisteredResourceTemplate = {
0 commit comments