@@ -16,6 +16,8 @@ import {
16
16
CreateMessageRequestSchema ,
17
17
ElicitRequestSchema ,
18
18
ListRootsRequestSchema ,
19
+ ListPromptsRequestSchema ,
20
+ ListResourceTemplatesRequestSchema ,
19
21
ErrorCode ,
20
22
} from "../types.js" ;
21
23
import { Transport } from "../shared/transport.js" ;
@@ -1301,3 +1303,137 @@ describe('outputSchema validation', () => {
1301
1303
1302
1304
1303
1305
} ) ;
1306
+
1307
+ test ( "should return empty arrays for all list methods when server has capabilities but no handlers" , async ( ) => {
1308
+ const server = new Server (
1309
+ {
1310
+ name : "test server" ,
1311
+ version : "1.0" ,
1312
+ } ,
1313
+ {
1314
+ capabilities : {
1315
+ prompts : { } ,
1316
+ resources : { } ,
1317
+ tools : { } ,
1318
+ } ,
1319
+ } ,
1320
+ ) ;
1321
+
1322
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1323
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1324
+ capabilities : {
1325
+ prompts : { } ,
1326
+ resources : { } ,
1327
+ tools : { } ,
1328
+ } ,
1329
+ serverInfo : {
1330
+ name : "test" ,
1331
+ version : "1.0" ,
1332
+ } ,
1333
+ } ) ) ;
1334
+
1335
+ const [ clientTransport , serverTransport ] =
1336
+ InMemoryTransport . createLinkedPair ( ) ;
1337
+
1338
+ const client = new Client (
1339
+ {
1340
+ name : "test client" ,
1341
+ version : "1.0" ,
1342
+ } ,
1343
+ {
1344
+ capabilities : {
1345
+ sampling : { } ,
1346
+ } ,
1347
+ } ,
1348
+ ) ;
1349
+
1350
+ await Promise . all ( [
1351
+ client . connect ( clientTransport ) ,
1352
+ server . connect ( serverTransport ) ,
1353
+ ] ) ;
1354
+
1355
+ const promptsResult = await client . listPrompts ( ) ;
1356
+ const resourcesResult = await client . listResources ( ) ;
1357
+ const resourceTemplatesResult = await client . listResourceTemplates ( ) ;
1358
+ const toolsResult = await client . listTools ( ) ;
1359
+
1360
+ expect ( promptsResult . prompts ) . toEqual ( [ ] ) ;
1361
+ expect ( resourcesResult . resources ) . toEqual ( [ ] ) ;
1362
+ expect ( resourceTemplatesResult . resourceTemplates ) . toEqual ( [ ] ) ;
1363
+ expect ( toolsResult . tools ) . toEqual ( [ ] ) ;
1364
+ } ) ;
1365
+
1366
+ test ( "should handle empty collections consistently across all capabilities" , async ( ) => {
1367
+ const server = new Server (
1368
+ {
1369
+ name : "test server" ,
1370
+ version : "1.0" ,
1371
+ } ,
1372
+ {
1373
+ capabilities : {
1374
+ prompts : { } ,
1375
+ resources : { } ,
1376
+ tools : { } ,
1377
+ } ,
1378
+ } ,
1379
+ ) ;
1380
+
1381
+ server . setRequestHandler ( InitializeRequestSchema , ( _request ) => ( {
1382
+ protocolVersion : LATEST_PROTOCOL_VERSION ,
1383
+ capabilities : {
1384
+ prompts : { } ,
1385
+ resources : { } ,
1386
+ tools : { } ,
1387
+ } ,
1388
+ serverInfo : {
1389
+ name : "test" ,
1390
+ version : "1.0" ,
1391
+ } ,
1392
+ } ) ) ;
1393
+
1394
+ server . setRequestHandler ( ListPromptsRequestSchema , ( ) => ( {
1395
+ prompts : [ ] ,
1396
+ } ) ) ;
1397
+
1398
+ server . setRequestHandler ( ListResourcesRequestSchema , ( ) => ( {
1399
+ resources : [ ] ,
1400
+ } ) ) ;
1401
+
1402
+ server . setRequestHandler ( ListResourceTemplatesRequestSchema , ( ) => ( {
1403
+ resourceTemplates : [ ] ,
1404
+ } ) ) ;
1405
+
1406
+ server . setRequestHandler ( ListToolsRequestSchema , ( ) => ( {
1407
+ tools : [ ] ,
1408
+ } ) ) ;
1409
+
1410
+ const [ clientTransport , serverTransport ] =
1411
+ InMemoryTransport . createLinkedPair ( ) ;
1412
+
1413
+ const client = new Client (
1414
+ {
1415
+ name : "test client" ,
1416
+ version : "1.0" ,
1417
+ } ,
1418
+ {
1419
+ capabilities : {
1420
+ sampling : { } ,
1421
+ } ,
1422
+ } ,
1423
+ ) ;
1424
+
1425
+ await Promise . all ( [
1426
+ client . connect ( clientTransport ) ,
1427
+ server . connect ( serverTransport ) ,
1428
+ ] ) ;
1429
+
1430
+ const promptsResult = await client . listPrompts ( ) ;
1431
+ const resourcesResult = await client . listResources ( ) ;
1432
+ const resourceTemplatesResult = await client . listResourceTemplates ( ) ;
1433
+ const toolsResult = await client . listTools ( ) ;
1434
+
1435
+ expect ( promptsResult . prompts ) . toEqual ( [ ] ) ;
1436
+ expect ( resourcesResult . resources ) . toEqual ( [ ] ) ;
1437
+ expect ( resourceTemplatesResult . resourceTemplates ) . toEqual ( [ ] ) ;
1438
+ expect ( toolsResult . tools ) . toEqual ( [ ] ) ;
1439
+ } ) ;
0 commit comments