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/01/15 14:40:30 UTC
(sling-org-apache-sling-mcp-server) 24/27: chore(mcp-server): extract SPI so contributions can be moved to other bundles
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.git
commit daa8d7ad5f82acaa89b192435773f1d172fd99f7
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Tue Jan 13 14:57:02 2026 +0100
chore(mcp-server): extract SPI so contributions can be moved to other bundles
---
src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java | 1 +
.../mcp/server/impl/contribs/BundleResourceContribution.java | 2 +-
.../mcp/server/impl/contribs/ComponentResourceContribution.java | 2 +-
.../sling/mcp/server/impl/contribs/LogToolContribution.java | 2 +-
.../server/impl/contribs/OsgiBundleDiagnosticContribution.java | 2 +-
.../server/impl/contribs/OsgiDiagnosticPromptContribution.java | 2 +-
.../mcp/server/impl/contribs/RecentRequestsContribution.java | 2 +-
.../mcp/server/impl/contribs/RefreshPackagesContribution.java | 2 +-
.../sling/mcp/server/impl/contribs/ServletPromptContribution.java | 2 +-
.../sling/mcp/server/{impl => spi}/McpServerContribution.java | 8 +++++++-
src/main/java/org/apache/sling/mcp/server/spi/package-info.java | 2 ++
11 files changed, 18 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java b/src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java
index 06bb9c4..316b8a0 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java
+++ b/src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java
@@ -41,6 +41,7 @@ import jakarta.servlet.http.HttpServletResponse;
import org.apache.sling.api.SlingJakartaHttpServletRequest;
import org.apache.sling.api.SlingJakartaHttpServletResponse;
import org.apache.sling.api.servlets.SlingJakartaAllMethodsServlet;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.apache.sling.servlets.annotations.SlingServletPaths;
import org.jetbrains.annotations.NotNull;
import org.osgi.framework.BundleContext;
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 833264c..d54e598 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
@@ -34,7 +34,7 @@ import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult;
import io.modelcontextprotocol.spec.McpSchema.Resource;
import io.modelcontextprotocol.spec.McpSchema.ResourceTemplate;
import io.modelcontextprotocol.spec.McpSchema.TextResourceContents;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.wiring.BundleRevision;
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 7a307fd..937ad9d 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
@@ -32,7 +32,7 @@ import io.modelcontextprotocol.spec.McpSchema.ReadResourceResult;
import io.modelcontextprotocol.spec.McpSchema.Resource;
import io.modelcontextprotocol.spec.McpSchema.ResourceTemplate;
import io.modelcontextprotocol.spec.McpSchema.TextResourceContents;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
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 37fe051..8e61147 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
@@ -33,7 +33,7 @@ import io.modelcontextprotocol.json.McpJsonMapper;
import io.modelcontextprotocol.server.McpStatelessServerFeatures.SyncToolSpecification;
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
import io.modelcontextprotocol.spec.McpSchema.Tool;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
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 4efaf3d..fdc3be7 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
@@ -29,7 +29,7 @@ import io.modelcontextprotocol.json.McpJsonMapper;
import io.modelcontextprotocol.server.McpStatelessServerFeatures.SyncToolSpecification;
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
import io.modelcontextprotocol.spec.McpSchema.Tool;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
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 25ea95b..10e6e38 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
@@ -28,7 +28,7 @@ import io.modelcontextprotocol.spec.McpSchema.Prompt;
import io.modelcontextprotocol.spec.McpSchema.PromptArgument;
import io.modelcontextprotocol.spec.McpSchema.PromptMessage;
import io.modelcontextprotocol.spec.McpSchema.Role;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.service.component.annotations.Component;
/**
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 5d4f077..d4149b2 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
@@ -29,7 +29,7 @@ import io.modelcontextprotocol.spec.McpSchema.Resource;
import io.modelcontextprotocol.spec.McpSchema.TextResourceContents;
import org.apache.sling.engine.RequestInfo;
import org.apache.sling.engine.RequestInfoProvider;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
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 c02d808..1e0b9ae 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
@@ -24,7 +24,7 @@ import io.modelcontextprotocol.json.McpJsonMapper;
import io.modelcontextprotocol.server.McpStatelessServerFeatures.SyncToolSpecification;
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
import io.modelcontextprotocol.spec.McpSchema.Tool;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.framework.BundleContext;
import org.osgi.framework.wiring.FrameworkWiring;
import org.osgi.service.component.annotations.Activate;
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 3e67666..cb2f181 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
@@ -30,7 +30,7 @@ import io.modelcontextprotocol.spec.McpSchema.Prompt;
import io.modelcontextprotocol.spec.McpSchema.PromptArgument;
import io.modelcontextprotocol.spec.McpSchema.PromptMessage;
import io.modelcontextprotocol.spec.McpSchema.Role;
-import org.apache.sling.mcp.server.impl.McpServerContribution;
+import org.apache.sling.mcp.server.spi.McpServerContribution;
import org.osgi.service.component.annotations.Component;
@Component
diff --git a/src/main/java/org/apache/sling/mcp/server/impl/McpServerContribution.java b/src/main/java/org/apache/sling/mcp/server/spi/McpServerContribution.java
similarity index 89%
rename from src/main/java/org/apache/sling/mcp/server/impl/McpServerContribution.java
rename to src/main/java/org/apache/sling/mcp/server/spi/McpServerContribution.java
index c32a526..58a5d42 100644
--- a/src/main/java/org/apache/sling/mcp/server/impl/McpServerContribution.java
+++ b/src/main/java/org/apache/sling/mcp/server/spi/McpServerContribution.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.mcp.server.impl;
+package org.apache.sling.mcp.server.spi;
import java.util.Optional;
@@ -32,6 +32,12 @@ import io.modelcontextprotocol.server.McpStatelessServerFeatures.SyncToolSpecifi
// is activated and therefore it does not take into account added/changed/removed contributions
//
// Expect this abstraction to change
+/**
+ * Provisional API for registering MCP server contributions
+ *
+ * <p>This abstraction is needed because the contributions themselves are Java records and cannot
+ * be registered as OSGi services directly.</p>
+ */
public interface McpServerContribution {
default Optional<SyncToolSpecification> getSyncToolSpecification() {
diff --git a/src/main/java/org/apache/sling/mcp/server/spi/package-info.java b/src/main/java/org/apache/sling/mcp/server/spi/package-info.java
new file mode 100644
index 0000000..13b7525
--- /dev/null
+++ b/src/main/java/org/apache/sling/mcp/server/spi/package-info.java
@@ -0,0 +1,2 @@
+@org.osgi.annotation.versioning.Version("1.0.0")
+package org.apache.sling.mcp.server.spi;