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));
}));