@@ -100,14 +100,11 @@ export class McpServer {
100
100
CallToolRequestSchema . shape . method . value ,
101
101
) ;
102
102
103
- // Register capabilities only if not already registered
104
- if ( ! this . server . capabilities . tools ) {
105
103
this . server . registerCapabilities ( {
106
104
tools : {
107
105
listChanged : true ,
108
106
} ,
109
107
} ) ;
110
- }
111
108
112
109
this . server . setRequestHandler (
113
110
ListToolsRequestSchema ,
@@ -294,14 +291,11 @@ export class McpServer {
294
291
ReadResourceRequestSchema . shape . method . value ,
295
292
) ;
296
293
297
- // Register capabilities only if not already registered
298
- if ( ! this . server . capabilities . resources ) {
299
294
this . server . registerCapabilities ( {
300
295
resources : {
301
296
listChanged : true ,
302
297
} ,
303
298
} ) ;
304
- }
305
299
306
300
this . server . setRequestHandler (
307
301
ListResourcesRequestSchema ,
@@ -399,14 +393,11 @@ export class McpServer {
399
393
GetPromptRequestSchema . shape . method . value ,
400
394
) ;
401
395
402
- // Register capabilities only if not already registered
403
- if ( ! this . server . capabilities . prompts ) {
404
396
this . server . registerCapabilities ( {
405
397
prompts : {
406
398
listChanged : true ,
407
399
} ,
408
400
} ) ;
409
- }
410
401
411
402
this . server . setRequestHandler (
412
403
ListPromptsRequestSchema ,
@@ -502,14 +493,7 @@ export class McpServer {
502
493
...rest : unknown [ ]
503
494
) : void {
504
495
let metadata : ResourceMetadata | undefined ;
505
- // Check if the first rest arg is metadata (object, not function, not array)
506
- if (
507
- rest . length > 1 &&
508
- typeof rest [ 0 ] === "object" &&
509
- rest [ 0 ] !== null &&
510
- ! Array . isArray ( rest [ 0 ] ) &&
511
- ! ( rest [ 0 ] instanceof Function )
512
- ) {
496
+ if ( typeof rest [ 0 ] === "object" ) {
513
497
metadata = rest . shift ( ) as ResourceMetadata ;
514
498
}
515
499
@@ -519,17 +503,19 @@ export class McpServer {
519
503
520
504
if ( typeof uriOrTemplate === "string" ) {
521
505
if ( this . _registeredResources [ uriOrTemplate ] ) {
522
- console . warn ( `Resource ${ uriOrTemplate } is already registered. Overwriting. ` ) ;
506
+ throw new Error ( `Resource ${ uriOrTemplate } is already registered` ) ;
523
507
}
508
+
524
509
this . _registeredResources [ uriOrTemplate ] = {
525
510
name,
526
511
metadata,
527
512
readCallback : readCallback as ReadResourceCallback ,
528
513
} ;
529
514
} else {
530
515
if ( this . _registeredResourceTemplates [ name ] ) {
531
- console . warn ( `Resource template ${ name } is already registered. Overwriting. ` ) ;
516
+ throw new Error ( `Resource template ${ name } is already registered` ) ;
532
517
}
518
+
533
519
this . _registeredResourceTemplates [ name ] = {
534
520
resourceTemplate : uriOrTemplate ,
535
521
metadata,
@@ -602,7 +588,7 @@ export class McpServer {
602
588
603
589
tool ( name : string , ...rest : unknown [ ] ) : void {
604
590
if ( this . _registeredTools [ name ] ) {
605
- console . warn ( `Tool ${ name } is already registered. Overwriting. ` ) ;
591
+ throw new Error ( `Tool ${ name } is already registered` ) ;
606
592
}
607
593
608
594
let description : string | undefined ;
@@ -676,7 +662,7 @@ export class McpServer {
676
662
677
663
prompt ( name : string , ...rest : unknown [ ] ) : void {
678
664
if ( this . _registeredPrompts [ name ] ) {
679
- console . warn ( `Prompt ${ name } is already registered. Overwriting. ` ) ;
665
+ throw new Error ( `Prompt ${ name } is already registered` ) ;
680
666
}
681
667
682
668
let description : string | undefined ;
@@ -719,8 +705,6 @@ export class McpServer {
719
705
}
720
706
}
721
707
722
- // --- Constants and Type Definitions ---
723
-
724
708
/**
725
709
* A callback to complete one variable within a resource template's URI template.
726
710
*/
0 commit comments