@@ -61,17 +61,16 @@ export interface MCPServerConfig {
61
61
62
62
export type ServerCapabilities = {
63
63
tools ?: {
64
- enabled : true ;
65
- } ;
66
- schemas ?: {
67
- enabled : true ;
64
+ listChanged ?: true ; // Optional: Indicates support for list change notifications
68
65
} ;
69
66
prompts ?: {
70
- enabled : true ;
67
+ listChanged ? : true ; // Optional: Indicates support for list change notifications
71
68
} ;
72
69
resources ?: {
73
- enabled : true ;
70
+ listChanged ?: true ; // Optional: Indicates support for list change notifications
71
+ subscribe ?: true ; // Optional: Indicates support for resource subscriptions
74
72
} ;
73
+ // Other standard capabilities like 'logging' or 'completion' could be added here if supported
75
74
} ;
76
75
77
76
export class MCPServer {
@@ -86,9 +85,7 @@ export class MCPServer {
86
85
private serverVersion : string ;
87
86
private basePath : string ;
88
87
private transportConfig : TransportConfig ;
89
- private capabilities : ServerCapabilities = {
90
- tools : { enabled : true }
91
- } ;
88
+ private capabilities : ServerCapabilities = { } ; // Initialize as empty
92
89
private isRunning : boolean = false ;
93
90
private transport ?: BaseTransport ;
94
91
private shutdownPromise ?: Promise < void > ;
@@ -191,11 +188,11 @@ export class MCPServer {
191
188
} ) ;
192
189
}
193
190
} ;
191
+ // Removed misplaced semicolon from previous line
194
192
195
- transport . onerror = ( error ) => {
196
- logger . error ( `Transport (${ transport . type } ) error: ${ error . message } \n${ error . stack } ` ) ;
197
- } ;
198
-
193
+ transport . onerror = ( error : Error ) => {
194
+ logger . error ( `Transport (${ transport . type } ) error: ${ error . message } \n${ error . stack } ` ) ;
195
+ } ;
199
196
return transport ;
200
197
}
201
198
@@ -237,26 +234,28 @@ export class MCPServer {
237
234
}
238
235
239
236
private setupHandlers ( ) {
240
- this . server . setRequestHandler ( ListToolsRequestSchema , async ( request ) => {
237
+ // TODO: Replace 'any' with the specific inferred request type from the SDK schema if available
238
+ this . server . setRequestHandler ( ListToolsRequestSchema , async ( request : any ) => {
241
239
logger . debug ( `Received ListTools request: ${ JSON . stringify ( request ) } ` ) ;
242
-
240
+
243
241
const tools = Array . from ( this . toolsMap . values ( ) ) . map (
244
242
( tool ) => tool . toolDefinition
245
243
) ;
246
-
244
+
247
245
logger . debug ( `Found ${ tools . length } tools to return` ) ;
248
246
logger . debug ( `Tool definitions: ${ JSON . stringify ( tools ) } ` ) ;
249
-
247
+
250
248
const response = {
251
249
tools : tools ,
252
250
nextCursor : undefined
253
251
} ;
254
-
252
+
255
253
logger . debug ( `Sending ListTools response: ${ JSON . stringify ( response ) } ` ) ;
256
254
return response ;
257
255
} ) ;
258
256
259
- this . server . setRequestHandler ( CallToolRequestSchema , async ( request ) => {
257
+ // TODO: Replace 'any' with the specific inferred request type from the SDK schema if available
258
+ this . server . setRequestHandler ( CallToolRequestSchema , async ( request : any ) => {
260
259
logger . debug ( `Tool call request received for: ${ request . params . name } ` ) ;
261
260
logger . debug ( `Tool call arguments: ${ JSON . stringify ( request . params . arguments ) } ` ) ;
262
261
@@ -286,6 +285,7 @@ export class MCPServer {
286
285
} ) ;
287
286
288
287
if ( this . capabilities . prompts ) {
288
+ // No request parameter for ListPrompts
289
289
this . server . setRequestHandler ( ListPromptsRequestSchema , async ( ) => {
290
290
return {
291
291
prompts : Array . from ( this . promptsMap . values ( ) ) . map (
@@ -294,7 +294,8 @@ export class MCPServer {
294
294
} ;
295
295
} ) ;
296
296
297
- this . server . setRequestHandler ( GetPromptRequestSchema , async ( request ) => {
297
+ // TODO: Replace 'any' with the specific inferred request type from the SDK schema if available
298
+ this . server . setRequestHandler ( GetPromptRequestSchema , async ( request : any ) => {
298
299
const prompt = this . promptsMap . get ( request . params . name ) ;
299
300
if ( ! prompt ) {
300
301
throw new Error (
@@ -313,6 +314,7 @@ export class MCPServer {
313
314
}
314
315
315
316
if ( this . capabilities . resources ) {
317
+ // No request parameter for ListResources
316
318
this . server . setRequestHandler ( ListResourcesRequestSchema , async ( ) => {
317
319
return {
318
320
resources : Array . from ( this . resourcesMap . values ( ) ) . map (
@@ -321,9 +323,10 @@ export class MCPServer {
321
323
} ;
322
324
} ) ;
323
325
326
+ // TODO: Replace 'any' with the specific inferred request type from the SDK schema if available
324
327
this . server . setRequestHandler (
325
328
ReadResourceRequestSchema ,
326
- async ( request ) => {
329
+ async ( request : any ) => {
327
330
const resource = this . resourcesMap . get ( request . params . uri ) ;
328
331
if ( ! resource ) {
329
332
throw new Error (
@@ -341,7 +344,8 @@ export class MCPServer {
341
344
}
342
345
) ;
343
346
344
- this . server . setRequestHandler ( SubscribeRequestSchema , async ( request ) => {
347
+ // TODO: Replace 'any' with the specific inferred request type from the SDK schema if available
348
+ this . server . setRequestHandler ( SubscribeRequestSchema , async ( request : any ) => {
345
349
const resource = this . resourcesMap . get ( request . params . uri ) ;
346
350
if ( ! resource ) {
347
351
throw new Error ( `Unknown resource: ${ request . params . uri } ` ) ;
@@ -357,7 +361,8 @@ export class MCPServer {
357
361
return { } ;
358
362
} ) ;
359
363
360
- this . server . setRequestHandler ( UnsubscribeRequestSchema , async ( request ) => {
364
+ // TODO: Replace 'any' with the specific inferred request type from the SDK schema if available
365
+ this . server . setRequestHandler ( UnsubscribeRequestSchema , async ( request : any ) => {
361
366
const resource = this . resourcesMap . get ( request . params . uri ) ;
362
367
if ( ! resource ) {
363
368
throw new Error ( `Unknown resource: ${ request . params . uri } ` ) ;
@@ -377,12 +382,12 @@ export class MCPServer {
377
382
378
383
private async detectCapabilities ( ) : Promise < ServerCapabilities > {
379
384
if ( await this . promptLoader . hasPrompts ( ) ) {
380
- this . capabilities . prompts = { enabled : true } ;
385
+ this . capabilities . prompts = { } ; // Indicate capability exists, but don't claim listChanged
381
386
logger . debug ( "Prompts capability enabled" ) ;
382
387
}
383
388
384
389
if ( await this . resourceLoader . hasResources ( ) ) {
385
- this . capabilities . resources = { enabled : true } ;
390
+ this . capabilities . resources = { } ; // Indicate capability exists, but don't claim listChanged/subscribe
386
391
logger . debug ( "Resources capability enabled" ) ;
387
392
}
388
393
0 commit comments