|
31 | 31 | import io.modelcontextprotocol.server.McpServerFeatures.AsyncCompletionSpecification; |
32 | 32 | import io.modelcontextprotocol.server.McpServerFeatures.AsyncPromptSpecification; |
33 | 33 | import io.modelcontextprotocol.server.McpServerFeatures.AsyncResourceSpecification; |
| 34 | +import io.modelcontextprotocol.server.McpServerFeatures.AsyncResourceTemplateSpecification; |
34 | 35 | import io.modelcontextprotocol.server.McpServerFeatures.AsyncToolSpecification; |
35 | 36 | import io.modelcontextprotocol.server.McpServerFeatures.SyncCompletionSpecification; |
36 | 37 | import io.modelcontextprotocol.server.McpServerFeatures.SyncPromptSpecification; |
37 | 38 | import io.modelcontextprotocol.server.McpServerFeatures.SyncResourceSpecification; |
| 39 | +import io.modelcontextprotocol.server.McpServerFeatures.SyncResourceTemplateSpecification; |
38 | 40 | import io.modelcontextprotocol.server.McpServerFeatures.SyncToolSpecification; |
39 | 41 | import io.modelcontextprotocol.server.McpSyncServer; |
40 | 42 | import io.modelcontextprotocol.server.McpSyncServerExchange; |
@@ -111,6 +113,7 @@ public McpSyncServer mcpSyncServer(McpServerTransportProviderBase transportProvi |
111 | 113 | McpServerChangeNotificationProperties changeNotificationProperties, |
112 | 114 | ObjectProvider<List<SyncToolSpecification>> tools, |
113 | 115 | ObjectProvider<List<SyncResourceSpecification>> resources, |
| 116 | + ObjectProvider<List<SyncResourceTemplateSpecification>> resourceTemplates, |
114 | 117 | ObjectProvider<List<SyncPromptSpecification>> prompts, |
115 | 118 | ObjectProvider<List<SyncCompletionSpecification>> completions, |
116 | 119 | ObjectProvider<BiConsumer<McpSyncServerExchange, List<McpSchema.Root>>> rootsChangeConsumers, |
@@ -157,6 +160,21 @@ public McpSyncServer mcpSyncServer(McpServerTransportProviderBase transportProvi |
157 | 160 | } |
158 | 161 | } |
159 | 162 |
|
| 163 | + // Resources Templates |
| 164 | + if (serverProperties.getCapabilities().isResource()) { |
| 165 | + logger.info("Enable resources templates capabilities, notification: " |
| 166 | + + changeNotificationProperties.isResourceChangeNotification()); |
| 167 | + capabilitiesBuilder.resources(false, changeNotificationProperties.isResourceChangeNotification()); |
| 168 | + |
| 169 | + List<SyncResourceTemplateSpecification> resourceTemplateSpecifications = resourceTemplates.stream() |
| 170 | + .flatMap(List::stream) |
| 171 | + .toList(); |
| 172 | + if (!CollectionUtils.isEmpty(resourceTemplateSpecifications)) { |
| 173 | + serverBuilder.resourceTemplates(resourceTemplateSpecifications); |
| 174 | + logger.info("Registered resource templates: " + resourceTemplateSpecifications.size()); |
| 175 | + } |
| 176 | + } |
| 177 | + |
160 | 178 | // Prompts |
161 | 179 | if (serverProperties.getCapabilities().isPrompt()) { |
162 | 180 | logger.info("Enable prompts capabilities, notification: " |
@@ -210,6 +228,7 @@ public McpAsyncServer mcpAsyncServer(McpServerTransportProviderBase transportPro |
210 | 228 | McpServerChangeNotificationProperties changeNotificationProperties, |
211 | 229 | ObjectProvider<List<AsyncToolSpecification>> tools, |
212 | 230 | ObjectProvider<List<AsyncResourceSpecification>> resources, |
| 231 | + ObjectProvider<List<AsyncResourceTemplateSpecification>> resourceTemplates, |
213 | 232 | ObjectProvider<List<AsyncPromptSpecification>> prompts, |
214 | 233 | ObjectProvider<List<AsyncCompletionSpecification>> completions, |
215 | 234 | ObjectProvider<BiConsumer<McpAsyncServerExchange, List<McpSchema.Root>>> rootsChangeConsumer) { |
@@ -255,6 +274,21 @@ public McpAsyncServer mcpAsyncServer(McpServerTransportProviderBase transportPro |
255 | 274 | } |
256 | 275 | } |
257 | 276 |
|
| 277 | + // Resources Templates |
| 278 | + if (serverProperties.getCapabilities().isResource()) { |
| 279 | + logger.info("Enable resources templates capabilities, notification: " |
| 280 | + + changeNotificationProperties.isResourceChangeNotification()); |
| 281 | + capabilitiesBuilder.resources(false, changeNotificationProperties.isResourceChangeNotification()); |
| 282 | + |
| 283 | + List<AsyncResourceTemplateSpecification> resourceTemplateSpecifications = resourceTemplates.stream() |
| 284 | + .flatMap(List::stream) |
| 285 | + .toList(); |
| 286 | + if (!CollectionUtils.isEmpty(resourceTemplateSpecifications)) { |
| 287 | + serverBuilder.resourceTemplates(resourceTemplateSpecifications); |
| 288 | + logger.info("Registered resources templates: " + resourceTemplateSpecifications.size()); |
| 289 | + } |
| 290 | + } |
| 291 | + |
258 | 292 | // Prompts |
259 | 293 | if (serverProperties.getCapabilities().isPrompt()) { |
260 | 294 | logger.info("Enable prompts capabilities, notification: " |
|
0 commit comments