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;
