You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2026/05/04 11:16:11 UTC

(sling-org-apache-sling-mcp-server-contributions) 03/17: chore(mcp): update McpServerContribution methods to return List instead of Optional

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-mcp-server-contributions.git

commit ce0ec5d5c968584b5824340e5f1bd2a57b10040e
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Tue Jan 13 15:58:35 2026 +0100

    chore(mcp): update McpServerContribution methods to return List instead of Optional
    
    This makes the implementations much more flexible
---
 .../mcp/server/impl/contribs/BundleResourceContribution.java | 12 ++++++------
 .../server/impl/contribs/ComponentResourceContribution.java  |  9 ++++-----
 .../sling/mcp/server/impl/contribs/LogToolContribution.java  |  5 ++---
 .../impl/contribs/OsgiBundleDiagnosticContribution.java      |  5 ++---
 .../impl/contribs/OsgiDiagnosticPromptContribution.java      |  5 ++---
 .../mcp/server/impl/contribs/RecentRequestsContribution.java |  5 ++---
 .../server/impl/contribs/RefreshPackagesContribution.java    |  6 +++---
 .../mcp/server/impl/contribs/ServletPromptContribution.java  |  9 ++++-----
 8 files changed, 25 insertions(+), 31 deletions(-)

diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/BundleResourceContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/BundleResourceContribution.java
index d54e598..1d37db3 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/BundleResourceContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/BundleResourceContribution.java
@@ -57,9 +57,9 @@ public class BundleResourceContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncResourceSpecification> getSyncResourceSpecification() {
+    public List<SyncResourceSpecification> getSyncResourceSpecification() {
 
-        return Optional.of(new McpStatelessServerFeatures.SyncResourceSpecification(
+        return List.of(new McpStatelessServerFeatures.SyncResourceSpecification(
                 new Resource.Builder()
                         .name("bundles")
                         .uri(URI_BUNDLES_ALL)
@@ -78,8 +78,8 @@ public class BundleResourceContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncResourceTemplateSpecification> getSyncResourceTemplateSpecification() {
-        return Optional.of(new McpStatelessServerFeatures.SyncResourceTemplateSpecification(
+    public List<SyncResourceTemplateSpecification> getSyncResourceTemplateSpecification() {
+        return List.of(new McpStatelessServerFeatures.SyncResourceTemplateSpecification(
                 new ResourceTemplate.Builder()
                         .uriTemplate(RESOURCE_TEMPLATE_BUNDLES_STATE_PATTERN)
                         .name("bundles")
@@ -108,9 +108,9 @@ public class BundleResourceContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncCompletionSpecification> getSyncCompletionSpecification() {
+    public List<SyncCompletionSpecification> getSyncCompletionSpecification() {
 
-        return Optional.of(new McpStatelessServerFeatures.SyncCompletionSpecification(
+        return List.of(new McpStatelessServerFeatures.SyncCompletionSpecification(
                 new McpSchema.ResourceReference("ref/resource", RESOURCE_TEMPLATE_BUNDLES_STATE_PATTERN),
                 (context, request) -> {
 
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/ComponentResourceContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/ComponentResourceContribution.java
index 937ad9d..e0c18bc 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/ComponentResourceContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/ComponentResourceContribution.java
@@ -21,7 +21,6 @@ package org.apache.sling.mcp.server.impl.contribs;
 import java.util.Collection;
 import java.util.List;
 import java.util.Locale;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 import io.modelcontextprotocol.server.McpStatelessServerFeatures;
@@ -65,9 +64,9 @@ public class ComponentResourceContribution implements McpServerContribution {
     public ComponentResourceContribution() {}
 
     @Override
-    public Optional<SyncResourceSpecification> getSyncResourceSpecification() {
+    public List<SyncResourceSpecification> getSyncResourceSpecification() {
 
-        return Optional.of(new McpStatelessServerFeatures.SyncResourceSpecification(
+        return List.of(new McpStatelessServerFeatures.SyncResourceSpecification(
                 new Resource.Builder()
                         .name("component")
                         .uri("component://")
@@ -93,8 +92,8 @@ public class ComponentResourceContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncResourceTemplateSpecification> getSyncResourceTemplateSpecification() {
-        return Optional.of(new McpStatelessServerFeatures.SyncResourceTemplateSpecification(
+    public List<SyncResourceTemplateSpecification> getSyncResourceTemplateSpecification() {
+        return List.of(new McpStatelessServerFeatures.SyncResourceTemplateSpecification(
                 new ResourceTemplate.Builder()
                         .uriTemplate("components://state/{state}")
                         .name("components")
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/LogToolContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/LogToolContribution.java
index 8e61147..b08ff8d 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/LogToolContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/LogToolContribution.java
@@ -25,7 +25,6 @@ import java.util.ArrayList;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.List;
-import java.util.Optional;
 import java.util.regex.Pattern;
 import java.util.regex.PatternSyntaxException;
 
@@ -60,7 +59,7 @@ public class LogToolContribution implements McpServerContribution {
     private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
 
     @Override
-    public Optional<SyncToolSpecification> getSyncToolSpecification() {
+    public List<SyncToolSpecification> getSyncToolSpecification() {
 
         var schema = """
                 {
@@ -86,7 +85,7 @@ public class LogToolContribution implements McpServerContribution {
                 }
                 """;
 
-        return Optional.of(new SyncToolSpecification(
+        return List.of(new SyncToolSpecification(
                 Tool.builder()
                         .name("aem-logs")
                         .description("Retrieve AEM/OSGi logs with optional filtering. "
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiBundleDiagnosticContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiBundleDiagnosticContribution.java
index fdc3be7..3515746 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiBundleDiagnosticContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiBundleDiagnosticContribution.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 import io.modelcontextprotocol.json.McpJsonMapper;
@@ -69,7 +68,7 @@ public class OsgiBundleDiagnosticContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncToolSpecification> getSyncToolSpecification() {
+    public List<SyncToolSpecification> getSyncToolSpecification() {
 
         var schema = """
                 {
@@ -84,7 +83,7 @@ public class OsgiBundleDiagnosticContribution implements McpServerContribution {
                 }
                 """;
 
-        return Optional.of(new SyncToolSpecification(
+        return List.of(new SyncToolSpecification(
                 Tool.builder()
                         .name("diagnose-osgi-bundle")
                         .description(
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiDiagnosticPromptContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiDiagnosticPromptContribution.java
index 21876ac..da68fc4 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiDiagnosticPromptContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiDiagnosticPromptContribution.java
@@ -19,7 +19,6 @@
 package org.apache.sling.mcp.server.impl.contribs;
 
 import java.util.List;
-import java.util.Optional;
 
 import io.modelcontextprotocol.server.McpStatelessServerFeatures.SyncPromptSpecification;
 import io.modelcontextprotocol.spec.McpSchema;
@@ -42,8 +41,8 @@ import org.osgi.service.component.annotations.Component;
 public class OsgiDiagnosticPromptContribution implements McpServerContribution {
 
     @Override
-    public Optional<SyncPromptSpecification> getSyncPromptSpecification() {
-        return Optional.of(new SyncPromptSpecification(
+    public List<SyncPromptSpecification> getSyncPromptSpecification() {
+        return List.of(new SyncPromptSpecification(
                 new Prompt(
                         "diagnose-osgi-issue",
                         "Diagnose OSGi Bundle Issues",
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/RecentRequestsContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/RecentRequestsContribution.java
index d4149b2..290c544 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/RecentRequestsContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/RecentRequestsContribution.java
@@ -19,7 +19,6 @@
 package org.apache.sling.mcp.server.impl.contribs;
 
 import java.util.List;
-import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
 
@@ -51,8 +50,8 @@ public class RecentRequestsContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncResourceSpecification> getSyncResourceSpecification() {
-        return Optional.of(new SyncResourceSpecification(
+    public List<SyncResourceSpecification> getSyncResourceSpecification() {
+        return List.of(new SyncResourceSpecification(
                 new Resource.Builder()
                         .uri("recent-requests://all")
                         .description(
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/RefreshPackagesContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/RefreshPackagesContribution.java
index 1e0b9ae..84da502 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/RefreshPackagesContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/RefreshPackagesContribution.java
@@ -18,7 +18,7 @@
  */
 package org.apache.sling.mcp.server.impl.contribs;
 
-import java.util.Optional;
+import java.util.List;
 
 import io.modelcontextprotocol.json.McpJsonMapper;
 import io.modelcontextprotocol.server.McpStatelessServerFeatures.SyncToolSpecification;
@@ -45,7 +45,7 @@ public class RefreshPackagesContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncToolSpecification> getSyncToolSpecification() {
+    public List<SyncToolSpecification> getSyncToolSpecification() {
 
         var schema = """
                 {
@@ -55,7 +55,7 @@ public class RefreshPackagesContribution implements McpServerContribution {
                 }
                 """;
 
-        return Optional.of(new SyncToolSpecification(
+        return List.of(new SyncToolSpecification(
                 Tool.builder()
                         .name("refresh-packages")
                         .description("Refresh Packages")
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/contribs/ServletPromptContribution.java b/src/main/java/org/apache/sling/mcp/server/impl/contribs/ServletPromptContribution.java
index cb2f181..d0354dc 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/contribs/ServletPromptContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/contribs/ServletPromptContribution.java
@@ -19,7 +19,6 @@
 package org.apache.sling.mcp.server.impl.contribs;
 
 import java.util.List;
-import java.util.Optional;
 
 import io.modelcontextprotocol.server.McpStatelessServerFeatures;
 import io.modelcontextprotocol.server.McpStatelessServerFeatures.SyncCompletionSpecification;
@@ -37,8 +36,8 @@ import org.osgi.service.component.annotations.Component;
 public class ServletPromptContribution implements McpServerContribution {
 
     @Override
-    public Optional<SyncPromptSpecification> getSyncPromptSpecification() {
-        return Optional.of(new SyncPromptSpecification(
+    public List<SyncPromptSpecification> getSyncPromptSpecification() {
+        return List.of(new SyncPromptSpecification(
                 new Prompt(
                         "new-sling-servlet",
                         "Create new Sling Servlet",
@@ -61,9 +60,9 @@ public class ServletPromptContribution implements McpServerContribution {
     }
 
     @Override
-    public Optional<SyncCompletionSpecification> getSyncCompletionSpecification() {
+    public List<SyncCompletionSpecification> getSyncCompletionSpecification() {
         // supply no completions for various resource types because it's supposed to be specified by the user
-        return Optional.of(new McpStatelessServerFeatures.SyncCompletionSpecification(
+        return List.of(new McpStatelessServerFeatures.SyncCompletionSpecification(
                 new McpSchema.PromptReference("ref/prompt", "new-sling-servlet"), (context, request) -> {
                     return new McpSchema.CompleteResult(new CompleteCompletion(List.of(), 0, false));
                 }));