@@ -40,7 +40,7 @@ public abstract class AbstractMcpSyncServerTests {
40
40
41
41
private static final String TEST_PROMPT_NAME = "test-prompt" ;
42
42
43
- abstract protected McpServerTransportProvider createMcpTransportProvider ();
43
+ abstract protected McpServer . SyncSpecification <?> prepareSyncServerBuilder ();
44
44
45
45
protected void onStart () {
46
46
}
@@ -68,28 +68,28 @@ void testConstructorWithInvalidArguments() {
68
68
.isInstanceOf (IllegalArgumentException .class )
69
69
.hasMessage ("Transport provider must not be null" );
70
70
71
- assertThatThrownBy (() -> McpServer . sync ( createMcpTransportProvider () ).serverInfo (null ))
71
+ assertThatThrownBy (() -> prepareSyncServerBuilder ( ).serverInfo (null ))
72
72
.isInstanceOf (IllegalArgumentException .class )
73
73
.hasMessage ("Server info must not be null" );
74
74
}
75
75
76
76
@ Test
77
77
void testGracefulShutdown () {
78
- var mcpSyncServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
78
+ var mcpSyncServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
79
79
80
80
assertThatCode (() -> mcpSyncServer .closeGracefully ()).doesNotThrowAnyException ();
81
81
}
82
82
83
83
@ Test
84
84
void testImmediateClose () {
85
- var mcpSyncServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
85
+ var mcpSyncServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
86
86
87
87
assertThatCode (() -> mcpSyncServer .close ()).doesNotThrowAnyException ();
88
88
}
89
89
90
90
@ Test
91
91
void testGetAsyncServer () {
92
- var mcpSyncServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
92
+ var mcpSyncServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
93
93
94
94
assertThat (mcpSyncServer .getAsyncServer ()).isNotNull ();
95
95
@@ -111,8 +111,7 @@ void testGetAsyncServer() {
111
111
@ Test
112
112
@ Deprecated
113
113
void testAddTool () {
114
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
115
- .serverInfo ("test-server" , "1.0.0" )
114
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
116
115
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
117
116
.build ();
118
117
@@ -126,8 +125,7 @@ void testAddTool() {
126
125
127
126
@ Test
128
127
void testAddToolCall () {
129
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
130
- .serverInfo ("test-server" , "1.0.0" )
128
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
131
129
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
132
130
.build ();
133
131
@@ -145,8 +143,7 @@ void testAddToolCall() {
145
143
void testAddDuplicateTool () {
146
144
Tool duplicateTool = new McpSchema .Tool (TEST_TOOL_NAME , "Duplicate tool" , emptyJsonSchema );
147
145
148
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
149
- .serverInfo ("test-server" , "1.0.0" )
146
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
150
147
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
151
148
.tool (duplicateTool , (exchange , args ) -> new CallToolResult (List .of (), false ))
152
149
.build ();
@@ -163,8 +160,7 @@ void testAddDuplicateTool() {
163
160
void testAddDuplicateToolCall () {
164
161
Tool duplicateTool = new McpSchema .Tool (TEST_TOOL_NAME , "Duplicate tool" , emptyJsonSchema );
165
162
166
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
167
- .serverInfo ("test-server" , "1.0.0" )
163
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
168
164
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
169
165
.toolCall (duplicateTool , (exchange , request ) -> new CallToolResult (List .of (), false ))
170
166
.build ();
@@ -183,8 +179,7 @@ void testDuplicateToolCallDuringBuilding() {
183
179
Tool duplicateTool = new Tool ("duplicate-build-toolcall" , "Duplicate toolcall during building" ,
184
180
emptyJsonSchema );
185
181
186
- assertThatThrownBy (() -> McpServer .sync (createMcpTransportProvider ())
187
- .serverInfo ("test-server" , "1.0.0" )
182
+ assertThatThrownBy (() -> prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
188
183
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
189
184
.toolCall (duplicateTool , (exchange , request ) -> new CallToolResult (List .of (), false ))
190
185
.toolCall (duplicateTool , (exchange , request ) -> new CallToolResult (List .of (), false )) // Duplicate!
@@ -206,8 +201,7 @@ void testDuplicateToolsInBatchListRegistration() {
206
201
.build () // Duplicate!
207
202
);
208
203
209
- assertThatThrownBy (() -> McpServer .sync (createMcpTransportProvider ())
210
- .serverInfo ("test-server" , "1.0.0" )
204
+ assertThatThrownBy (() -> prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
211
205
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
212
206
.tools (specs )
213
207
.build ()).isInstanceOf (IllegalArgumentException .class )
@@ -218,8 +212,7 @@ void testDuplicateToolsInBatchListRegistration() {
218
212
void testDuplicateToolsInBatchVarargsRegistration () {
219
213
Tool duplicateTool = new Tool ("batch-varargs-tool" , "Duplicate tool in batch varargs" , emptyJsonSchema );
220
214
221
- assertThatThrownBy (() -> McpServer .sync (createMcpTransportProvider ())
222
- .serverInfo ("test-server" , "1.0.0" )
215
+ assertThatThrownBy (() -> prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
223
216
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
224
217
.tools (McpServerFeatures .SyncToolSpecification .builder ()
225
218
.tool (duplicateTool )
@@ -238,8 +231,7 @@ void testDuplicateToolsInBatchVarargsRegistration() {
238
231
void testRemoveTool () {
239
232
Tool tool = new McpSchema .Tool (TEST_TOOL_NAME , "Test tool" , emptyJsonSchema );
240
233
241
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
242
- .serverInfo ("test-server" , "1.0.0" )
234
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
243
235
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
244
236
.toolCall (tool , (exchange , args ) -> new CallToolResult (List .of (), false ))
245
237
.build ();
@@ -251,8 +243,7 @@ void testRemoveTool() {
251
243
252
244
@ Test
253
245
void testRemoveNonexistentTool () {
254
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
255
- .serverInfo ("test-server" , "1.0.0" )
246
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
256
247
.capabilities (ServerCapabilities .builder ().tools (true ).build ())
257
248
.build ();
258
249
@@ -264,7 +255,7 @@ void testRemoveNonexistentTool() {
264
255
265
256
@ Test
266
257
void testNotifyToolsListChanged () {
267
- var mcpSyncServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
258
+ var mcpSyncServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
268
259
269
260
assertThatCode (() -> mcpSyncServer .notifyToolsListChanged ()).doesNotThrowAnyException ();
270
261
@@ -277,7 +268,7 @@ void testNotifyToolsListChanged() {
277
268
278
269
@ Test
279
270
void testNotifyResourcesListChanged () {
280
- var mcpSyncServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
271
+ var mcpSyncServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
281
272
282
273
assertThatCode (() -> mcpSyncServer .notifyResourcesListChanged ()).doesNotThrowAnyException ();
283
274
@@ -286,7 +277,7 @@ void testNotifyResourcesListChanged() {
286
277
287
278
@ Test
288
279
void testNotifyResourcesUpdated () {
289
- var mcpSyncServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
280
+ var mcpSyncServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
290
281
291
282
assertThatCode (() -> mcpSyncServer
292
283
.notifyResourcesUpdated (new McpSchema .ResourcesUpdatedNotification (TEST_RESOURCE_URI )))
@@ -297,8 +288,7 @@ void testNotifyResourcesUpdated() {
297
288
298
289
@ Test
299
290
void testAddResource () {
300
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
301
- .serverInfo ("test-server" , "1.0.0" )
291
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
302
292
.capabilities (ServerCapabilities .builder ().resources (true , false ).build ())
303
293
.build ();
304
294
@@ -314,8 +304,7 @@ void testAddResource() {
314
304
315
305
@ Test
316
306
void testAddResourceWithNullSpecification () {
317
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
318
- .serverInfo ("test-server" , "1.0.0" )
307
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
319
308
.capabilities (ServerCapabilities .builder ().resources (true , false ).build ())
320
309
.build ();
321
310
@@ -328,9 +317,7 @@ void testAddResourceWithNullSpecification() {
328
317
329
318
@ Test
330
319
void testAddResourceWithoutCapability () {
331
- var serverWithoutResources = McpServer .sync (createMcpTransportProvider ())
332
- .serverInfo ("test-server" , "1.0.0" )
333
- .build ();
320
+ var serverWithoutResources = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" ).build ();
334
321
335
322
Resource resource = new Resource (TEST_RESOURCE_URI , "Test Resource" , "text/plain" , "Test resource description" ,
336
323
null );
@@ -343,9 +330,7 @@ void testAddResourceWithoutCapability() {
343
330
344
331
@ Test
345
332
void testRemoveResourceWithoutCapability () {
346
- var serverWithoutResources = McpServer .sync (createMcpTransportProvider ())
347
- .serverInfo ("test-server" , "1.0.0" )
348
- .build ();
333
+ var serverWithoutResources = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" ).build ();
349
334
350
335
assertThatThrownBy (() -> serverWithoutResources .removeResource (TEST_RESOURCE_URI )).isInstanceOf (McpError .class )
351
336
.hasMessage ("Server must be configured with resource capabilities" );
@@ -357,7 +342,7 @@ void testRemoveResourceWithoutCapability() {
357
342
358
343
@ Test
359
344
void testNotifyPromptsListChanged () {
360
- var mcpSyncServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
345
+ var mcpSyncServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
361
346
362
347
assertThatCode (() -> mcpSyncServer .notifyPromptsListChanged ()).doesNotThrowAnyException ();
363
348
@@ -366,8 +351,7 @@ void testNotifyPromptsListChanged() {
366
351
367
352
@ Test
368
353
void testAddPromptWithNullSpecification () {
369
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
370
- .serverInfo ("test-server" , "1.0.0" )
354
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
371
355
.capabilities (ServerCapabilities .builder ().prompts (false ).build ())
372
356
.build ();
373
357
@@ -378,9 +362,7 @@ void testAddPromptWithNullSpecification() {
378
362
379
363
@ Test
380
364
void testAddPromptWithoutCapability () {
381
- var serverWithoutPrompts = McpServer .sync (createMcpTransportProvider ())
382
- .serverInfo ("test-server" , "1.0.0" )
383
- .build ();
365
+ var serverWithoutPrompts = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" ).build ();
384
366
385
367
Prompt prompt = new Prompt (TEST_PROMPT_NAME , "Test Prompt" , "Test Prompt" , List .of ());
386
368
McpServerFeatures .SyncPromptSpecification specification = new McpServerFeatures .SyncPromptSpecification (prompt ,
@@ -393,9 +375,7 @@ void testAddPromptWithoutCapability() {
393
375
394
376
@ Test
395
377
void testRemovePromptWithoutCapability () {
396
- var serverWithoutPrompts = McpServer .sync (createMcpTransportProvider ())
397
- .serverInfo ("test-server" , "1.0.0" )
398
- .build ();
378
+ var serverWithoutPrompts = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" ).build ();
399
379
400
380
assertThatThrownBy (() -> serverWithoutPrompts .removePrompt (TEST_PROMPT_NAME )).isInstanceOf (McpError .class )
401
381
.hasMessage ("Server must be configured with prompt capabilities" );
@@ -408,8 +388,7 @@ void testRemovePrompt() {
408
388
(exchange , req ) -> new GetPromptResult ("Test prompt description" , List
409
389
.of (new PromptMessage (McpSchema .Role .ASSISTANT , new McpSchema .TextContent ("Test content" )))));
410
390
411
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
412
- .serverInfo ("test-server" , "1.0.0" )
391
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
413
392
.capabilities (ServerCapabilities .builder ().prompts (true ).build ())
414
393
.prompts (specification )
415
394
.build ();
@@ -421,8 +400,7 @@ void testRemovePrompt() {
421
400
422
401
@ Test
423
402
void testRemoveNonexistentPrompt () {
424
- var mcpSyncServer = McpServer .sync (createMcpTransportProvider ())
425
- .serverInfo ("test-server" , "1.0.0" )
403
+ var mcpSyncServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
426
404
.capabilities (ServerCapabilities .builder ().prompts (true ).build ())
427
405
.build ();
428
406
@@ -442,8 +420,7 @@ void testRootsChangeHandlers() {
442
420
var rootsReceived = new McpSchema .Root [1 ];
443
421
var consumerCalled = new boolean [1 ];
444
422
445
- var singleConsumerServer = McpServer .sync (createMcpTransportProvider ())
446
- .serverInfo ("test-server" , "1.0.0" )
423
+ var singleConsumerServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
447
424
.rootsChangeHandlers (List .of ((exchange , roots ) -> {
448
425
consumerCalled [0 ] = true ;
449
426
if (!roots .isEmpty ()) {
@@ -461,8 +438,7 @@ void testRootsChangeHandlers() {
461
438
var consumer2Called = new boolean [1 ];
462
439
var rootsContent = new List [1 ];
463
440
464
- var multipleConsumersServer = McpServer .sync (createMcpTransportProvider ())
465
- .serverInfo ("test-server" , "1.0.0" )
441
+ var multipleConsumersServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
466
442
.rootsChangeHandlers (List .of ((exchange , roots ) -> {
467
443
consumer1Called [0 ] = true ;
468
444
rootsContent [0 ] = roots ;
@@ -474,8 +450,7 @@ void testRootsChangeHandlers() {
474
450
onClose ();
475
451
476
452
// Test error handling
477
- var errorHandlingServer = McpServer .sync (createMcpTransportProvider ())
478
- .serverInfo ("test-server" , "1.0.0" )
453
+ var errorHandlingServer = prepareSyncServerBuilder ().serverInfo ("test-server" , "1.0.0" )
479
454
.rootsChangeHandlers (List .of ((exchange , roots ) -> {
480
455
throw new RuntimeException ("Test error" );
481
456
}))
@@ -486,7 +461,7 @@ void testRootsChangeHandlers() {
486
461
onClose ();
487
462
488
463
// Test without consumers
489
- var noConsumersServer = McpServer . sync ( createMcpTransportProvider () ).serverInfo ("test-server" , "1.0.0" ).build ();
464
+ var noConsumersServer = prepareSyncServerBuilder ( ).serverInfo ("test-server" , "1.0.0" ).build ();
490
465
491
466
assertThat (noConsumersServer ).isNotNull ();
492
467
assertThatCode (() -> noConsumersServer .closeGracefully ()).doesNotThrowAnyException ();
0 commit comments