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 <[email protected]> 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)); }));
