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-whiteboard.git

commit 0a1683ae033a9b9817197ceeda6c200b01747ca0
Author: Robert Munteanu <[email protected]>
AuthorDate: Tue Jan 13 14:57:02 2026 +0100

    chore(mcp-server): extract SPI so contributions can be moved to other 
bundles
---
 .../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 +++++++-
 .../main/java/org/apache/sling/mcp/server/spi/package-info.java   | 2 ++
 11 files changed, 18 insertions(+), 9 deletions(-)

diff --git 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java
index 06bb9c41..316b8a0d 100644
--- a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/McpServlet.java
+++ b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/BundleResourceContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/BundleResourceContribution.java
index 833264cb..d54e5981 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/BundleResourceContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/ComponentResourceContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/ComponentResourceContribution.java
index 7a307fda..937ad9dd 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/ComponentResourceContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/LogToolContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/LogToolContribution.java
index 37fe051b..8e611473 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/LogToolContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiBundleDiagnosticContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiBundleDiagnosticContribution.java
index 4efaf3d1..fdc3be7f 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiBundleDiagnosticContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiDiagnosticPromptContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiDiagnosticPromptContribution.java
index 25ea95ba..10e6e382 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/OsgiDiagnosticPromptContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/RecentRequestsContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/RecentRequestsContribution.java
index 5d4f0775..d4149b2f 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/RecentRequestsContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/RefreshPackagesContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/RefreshPackagesContribution.java
index c02d808a..1e0b9ae5 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/RefreshPackagesContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/ServletPromptContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/ServletPromptContribution.java
index 3e676669..cb2f181b 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/contribs/ServletPromptContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/McpServerContribution.java
 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/spi/McpServerContribution.java
similarity index 89%
rename from 
mcp-server/src/main/java/org/apache/sling/mcp/server/impl/McpServerContribution.java
rename to 
mcp-server/src/main/java/org/apache/sling/mcp/server/spi/McpServerContribution.java
index c32a5263..58a5d42e 100644
--- 
a/mcp-server/src/main/java/org/apache/sling/mcp/server/impl/McpServerContribution.java
+++ 
b/mcp-server/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/mcp-server/src/main/java/org/apache/sling/mcp/server/spi/package-info.java 
b/mcp-server/src/main/java/org/apache/sling/mcp/server/spi/package-info.java
new file mode 100644
index 00000000..13b75258
--- /dev/null
+++ b/mcp-server/src/main/java/org/apache/sling/mcp/server/spi/package-info.java
@@ -0,0 +1,2 @@
[email protected]("1.0.0")
+package org.apache.sling.mcp.server.spi;

Reply via email to