Skip to content

feat(solon-webrx): Add solon-webrx adaptive #110

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 11 commits into
base: main
Choose a base branch
from
11 changes: 9 additions & 2 deletions mcp-bom/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,20 +40,27 @@
<version>${project.version}</version>
</dependency>

<!-- MCP Transport - WebFlux SSE -->
<!-- MCP Transport - Spring WebFlux SSE -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webflux</artifactId>
<version>${project.version}</version>
</dependency>

<!-- MCP Transport - WebMVC SSE -->
<!-- MCP Transport - Spring WebMVC SSE -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webmvc</artifactId>
<version>${project.version}</version>
</dependency>

<!-- MCP Transport - Solon WebRx SSE -->
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-solon-webrx</artifactId>
<version>${project.version}</version>
</dependency>

</dependencies>
</dependencyManagement>

Expand Down
14 changes: 14 additions & 0 deletions mcp-solon/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
## solon is a java enterprise application development framework similar to spring.

There is no java-ee. Compared to the spring framework:

* more concurrency (300%),
* less memory (50%),
* faster startup (1000%),
* smaller packaging (10%),
* support for java8 ~ java24, native runtime.


github:

* https://github.com/opensolon/solon
30 changes: 30 additions & 0 deletions mcp-solon/mcp-solon-webrx/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Solon WebRx SSE Server Transport

```xml
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-solon-webrx</artifactId>
</dependency>
```


```java
String MESSAGE_ENDPOINT = "/mcp/message";

@Configuration
static class MyConfig {

@Bean
public WebRxSseServerTransportProvider webMvcSseServerTransport() {
return WebRxSseServerTransportProvider.builder()
.objectMapper(new ObjectMapper())
.messageEndpoint(MESSAGE_ENDPOINT)
.build();
}

@Bean
public void routerFunction(WebRxSseServerTransportProvider transport, AppContext context) {
transport.toHttpHandler(context.app());
}
}
```
146 changes: 146 additions & 0 deletions mcp-solon/mcp-solon-webrx/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId>
<version>0.10.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<artifactId>mcp-solon-webrx</artifactId>
<packaging>jar</packaging>
<name>Solon WebRx implementation of the Java MCP SSE transport</name>
<description></description>
<url>https://github.com/modelcontextprotocol/java-sdk</url>

<scm>
<url>https://github.com/modelcontextprotocol/java-sdk</url>
<connection>git://github.com/modelcontextprotocol/java-sdk.git</connection>
<developerConnection>[email protected]/modelcontextprotocol/java-sdk.git</developerConnection>
</scm>

<dependencies>
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp</artifactId>
<version>0.9.0-SNAPSHOT</version>
</dependency>

<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-test</artifactId>
<version>0.9.0-SNAPSHOT</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-web-rx</artifactId>
<version>${solon.version}</version>
</dependency>

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-web-sse</artifactId>
<version>${solon.version}</version>
</dependency>

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-net-httputils</artifactId>
<version>${solon.version}</version>
</dependency>

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-logging-simple</artifactId>
<version>${solon.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-lib</artifactId>
<version>${solon.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-boot-smarthttp</artifactId>
<version>${solon.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>${assert4j.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${testcontainers.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>${awaitility.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>${junit-jupiter.version}</version>
<scope>test</scope>
</dependency>
</dependencies>

<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
</pluginRepository>
</pluginRepositories>
</project>
Loading