Skip to content

Commit bb337c9

Browse files
authored
Merge pull request #18576 from vshanbha/master
BAEL-9140 Quarkus MCP code
2 parents c55fda5 + 0538ebe commit bb337c9

File tree

19 files changed

+897
-8
lines changed

19 files changed

+897
-8
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ out/
2929
# Mac
3030
.DS_Store
3131

32+
# Quarkus
33+
.quarkus/
34+
3235
# Maven
3336
log/*
3437
target/

quarkus-modules/pom.xml

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,27 @@
1414
</parent>
1515

1616
<modules>
17+
<module>consume-rest-api</module>
1718
<module>jfr</module>
1819
<!-- <module>mongo-db</module> --> <!-- JAVA-42048 -->
1920
<module>quarkus</module>
2021
<module>quarkus-citrus</module>
2122
<module>quarkus-clientbasicauth</module>
2223
<module>quarkus-extension</module>
2324
<module>quarkus-elasticsearch</module>
24-
<module>quarkus-jandex</module>
25-
<module>quarkus-vs-springboot</module>
2625
<module>quarkus-funqy</module>
27-
<module>quarkus-kogito</module>
28-
<module>quarkus-testcontainers</module>
29-
<module>consume-rest-api</module>
30-
<module>quarkus-virtual-threads</module>
3126
<!--<module>quarkus-hibernate-reactive</module>--> <!--moved to heavy profile-->
27+
<module>quarkus-jandex</module>
28+
<module>quarkus-kogito</module>
3229
<module>quarkus-langchain4j</module>
33-
<!-- <module>quarkus-rbac</module> --> <!-- JAVA-42048 -->
34-
<module>quarkus-websockets-next</module>
3530
<module>quarkus-management-interface</module>
31+
<module>quarkus-mcp-langchain</module>
3632
<module>quarkus-panache</module>
33+
<!-- <module>quarkus-rbac</module> --> <!-- JAVA-42048 -->
34+
<module>quarkus-testcontainers</module>
35+
<module>quarkus-virtual-threads</module>
36+
<module>quarkus-vs-springboot</module>
37+
<module>quarkus-websockets-next</module>
3738
</modules>
3839

3940
</project>

quarkus-modules/quarkus-kogito/pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@
175175
<mapstruct.version>1.6.3</mapstruct.version>
176176
<!-- currently, the only version supporting Quarkus 3 -->
177177
<kogito.version>2.44.0.Alpha</kogito.version>
178+
<maven.compiler.release>17</maven.compiler.release>
178179
</properties>
179180

180181
</project>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="http://maven.apache.org/POM/4.0.0"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<artifactId>quarkus-mcp-langchain</artifactId>
7+
<name>quarkus-mcp-langchain</name>
8+
<packaging>pom</packaging>
9+
10+
<parent>
11+
<groupId>com.baeldung</groupId>
12+
<artifactId>quarkus-modules</artifactId>
13+
<version>1.0.0-SNAPSHOT</version>
14+
</parent>
15+
16+
<modules>
17+
<module>quarkus-mcp-server</module>
18+
<module>quarkus-mcp-client</module>
19+
</modules>
20+
21+
<dependencyManagement>
22+
<dependencies>
23+
<dependency>
24+
<groupId>io.quarkus.platform</groupId>
25+
<artifactId>quarkus-bom</artifactId>
26+
<version>${quarkus.platform.version}</version>
27+
<type>pom</type>
28+
<scope>import</scope>
29+
</dependency>
30+
</dependencies>
31+
</dependencyManagement>
32+
33+
<dependencies>
34+
<dependency>
35+
<groupId>io.quarkus</groupId>
36+
<artifactId>quarkus-arc</artifactId>
37+
</dependency>
38+
<dependency>
39+
<groupId>io.quarkus</groupId>
40+
<artifactId>quarkus-junit5</artifactId>
41+
<scope>test</scope>
42+
</dependency>
43+
</dependencies>
44+
45+
<properties>
46+
<maven.compiler.release>17</maven.compiler.release>
47+
<compiler-plugin.version>3.14.0</compiler-plugin.version>
48+
<quarkus.platform.version>3.22.3</quarkus.platform.version>
49+
<skipITs>true</skipITs>
50+
<surefire-plugin.version>3.5.2</surefire-plugin.version>
51+
<quarkus-langchain4j.version>1.0.0.CR2</quarkus-langchain4j.version>
52+
<junit-jupiter.version>5.12.2</junit-jupiter.version>
53+
</properties>
54+
55+
</project>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<modelVersion>4.0.0</modelVersion>
6+
<artifactId>quarkus-mcp-client</artifactId>
7+
<name>quarkus-mcp-client</name>
8+
9+
<parent>
10+
<groupId>com.baeldung</groupId>
11+
<artifactId>quarkus-mcp-langchain</artifactId>
12+
<version>1.0.0-SNAPSHOT</version>
13+
</parent>
14+
15+
<dependencies>
16+
<dependency>
17+
<groupId>io.quarkiverse.langchain4j</groupId>
18+
<artifactId>quarkus-langchain4j-mcp</artifactId>
19+
<version>${quarkus-langchain4j.version}</version>
20+
</dependency>
21+
<dependency>
22+
<groupId>io.quarkiverse.langchain4j</groupId>
23+
<artifactId>quarkus-langchain4j-ollama</artifactId>
24+
<version>${quarkus-langchain4j.version}</version>
25+
</dependency>
26+
<dependency>
27+
<groupId>io.quarkus</groupId>
28+
<artifactId>quarkus-vertx-http</artifactId>
29+
</dependency>
30+
</dependencies>
31+
32+
<build>
33+
<plugins>
34+
<plugin>
35+
<groupId>io.quarkus.platform</groupId>
36+
<artifactId>quarkus-maven-plugin</artifactId>
37+
<version>${quarkus.platform.version}</version>
38+
<extensions>true</extensions>
39+
<executions>
40+
<execution>
41+
<goals>
42+
<goal>build</goal>
43+
<goal>generate-code</goal>
44+
<goal>generate-code-tests</goal>
45+
<goal>native-image-agent</goal>
46+
</goals>
47+
</execution>
48+
</executions>
49+
</plugin>
50+
<plugin>
51+
<artifactId>maven-compiler-plugin</artifactId>
52+
<version>${compiler-plugin.version}</version>
53+
<configuration>
54+
<parameters>true</parameters>
55+
</configuration>
56+
</plugin>
57+
<plugin>
58+
<artifactId>maven-surefire-plugin</artifactId>
59+
<version>${surefire-plugin.version}</version>
60+
<configuration>
61+
<systemPropertyVariables>
62+
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
63+
<maven.home>${maven.home}</maven.home>
64+
</systemPropertyVariables>
65+
</configuration>
66+
</plugin>
67+
<plugin>
68+
<artifactId>maven-failsafe-plugin</artifactId>
69+
<version>${surefire-plugin.version}</version>
70+
<executions>
71+
<execution>
72+
<goals>
73+
<goal>integration-test</goal>
74+
<goal>verify</goal>
75+
</goals>
76+
</execution>
77+
</executions>
78+
<configuration>
79+
<systemPropertyVariables>
80+
<native.image.path>${project.build.directory}/${project.build.finalName}-runner</native.image.path>
81+
<java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
82+
<maven.home>${maven.home}</maven.home>
83+
</systemPropertyVariables>
84+
</configuration>
85+
</plugin>
86+
</plugins>
87+
</build>
88+
89+
<profiles>
90+
<profile>
91+
<id>native</id>
92+
<activation>
93+
<property>
94+
<name>native</name>
95+
</property>
96+
</activation>
97+
<properties>
98+
<skipITs>false</skipITs>
99+
<quarkus.native.enabled>true</quarkus.native.enabled>
100+
</properties>
101+
</profile>
102+
</profiles>
103+
</project>
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
####
2+
# This Dockerfile is used in order to build a container that runs the Quarkus application in JVM mode
3+
#
4+
# Before building the container image run:
5+
#
6+
# ./mvnw package
7+
#
8+
# Then, build the image with:
9+
#
10+
# docker build -f src/main/docker/Dockerfile.jvm -t quarkus/quarkus-mcp-client-jvm .
11+
#
12+
# Then run the container using:
13+
#
14+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-mcp-client-jvm
15+
#
16+
# If you want to include the debug port into your docker image
17+
# you will have to expose the debug port (default 5005 being the default) like this : EXPOSE 8080 5005.
18+
# Additionally you will have to set -e JAVA_DEBUG=true and -e JAVA_DEBUG_PORT=*:5005
19+
# when running the container
20+
#
21+
# Then run the container using :
22+
#
23+
# docker run -i --rm -p 8080:8080 quarkus/quarkus-mcp-client-jvm
24+
#
25+
# This image uses the `run-java.sh` script to run the application.
26+
# This scripts computes the command line to execute your Java application, and
27+
# includes memory/GC tuning.
28+
# You can configure the behavior using the following environment properties:
29+
# - JAVA_OPTS: JVM options passed to the `java` command (example: "-verbose:class") - Be aware that this will override
30+
# the default JVM options, use `JAVA_OPTS_APPEND` to append options
31+
# - JAVA_OPTS_APPEND: User specified Java options to be appended to generated options
32+
# in JAVA_OPTS (example: "-Dsome.property=foo")
33+
# - JAVA_MAX_MEM_RATIO: Is used when no `-Xmx` option is given in JAVA_OPTS. This is
34+
# used to calculate a default maximal heap memory based on a containers restriction.
35+
# If used in a container without any memory constraints for the container then this
36+
# option has no effect. If there is a memory constraint then `-Xmx` is set to a ratio
37+
# of the container available memory as set here. The default is `50` which means 50%
38+
# of the available memory is used as an upper boundary. You can skip this mechanism by
39+
# setting this value to `0` in which case no `-Xmx` option is added.
40+
# - JAVA_INITIAL_MEM_RATIO: Is used when no `-Xms` option is given in JAVA_OPTS. This
41+
# is used to calculate a default initial heap memory based on the maximum heap memory.
42+
# If used in a container without any memory constraints for the container then this
43+
# option has no effect. If there is a memory constraint then `-Xms` is set to a ratio
44+
# of the `-Xmx` memory as set here. The default is `25` which means 25% of the `-Xmx`
45+
# is used as the initial heap size. You can skip this mechanism by setting this value
46+
# to `0` in which case no `-Xms` option is added (example: "25")
47+
# - JAVA_MAX_INITIAL_MEM: Is used when no `-Xms` option is given in JAVA_OPTS.
48+
# This is used to calculate the maximum value of the initial heap memory. If used in
49+
# a container without any memory constraints for the container then this option has
50+
# no effect. If there is a memory constraint then `-Xms` is limited to the value set
51+
# here. The default is 4096MB which means the calculated value of `-Xms` never will
52+
# be greater than 4096MB. The value of this variable is expressed in MB (example: "4096")
53+
# - JAVA_DIAGNOSTICS: Set this to get some diagnostics information to standard output
54+
# when things are happening. This option, if set to true, will set
55+
# `-XX:+UnlockDiagnosticVMOptions`. Disabled by default (example: "true").
56+
# - JAVA_DEBUG: If set remote debugging will be switched on. Disabled by default (example:
57+
# true").
58+
# - JAVA_DEBUG_PORT: Port used for remote debugging. Defaults to 5005 (example: "8787").
59+
# - CONTAINER_CORE_LIMIT: A calculated core limit as described in
60+
# https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt. (example: "2")
61+
# - CONTAINER_MAX_MEMORY: Memory limit given to the container (example: "1024").
62+
# - GC_MIN_HEAP_FREE_RATIO: Minimum percentage of heap free after GC to avoid expansion.
63+
# (example: "20")
64+
# - GC_MAX_HEAP_FREE_RATIO: Maximum percentage of heap free after GC to avoid shrinking.
65+
# (example: "40")
66+
# - GC_TIME_RATIO: Specifies the ratio of the time spent outside the garbage collection.
67+
# (example: "4")
68+
# - GC_ADAPTIVE_SIZE_POLICY_WEIGHT: The weighting given to the current GC time versus
69+
# previous GC times. (example: "90")
70+
# - GC_METASPACE_SIZE: The initial metaspace size. (example: "20")
71+
# - GC_MAX_METASPACE_SIZE: The maximum metaspace size. (example: "100")
72+
# - GC_CONTAINER_OPTIONS: Specify Java GC to use. The value of this variable should
73+
# contain the necessary JRE command-line options to specify the required GC, which
74+
# will override the default of `-XX:+UseParallelGC` (example: -XX:+UseG1GC).
75+
# - HTTPS_PROXY: The location of the https proxy. (example: "[email protected]:8080")
76+
# - HTTP_PROXY: The location of the http proxy. (example: "[email protected]:8080")
77+
# - NO_PROXY: A comma separated lists of hosts, IP addresses or domains that can be
78+
# accessed directly. (example: "foo.example.com,bar.example.com")
79+
#
80+
###
81+
FROM registry.access.redhat.com/ubi9/openjdk-21:1.21
82+
83+
ENV LANGUAGE='en_US:en'
84+
85+
86+
# We make four distinct layers so if there are application changes the library layers can be re-used
87+
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
88+
COPY --chown=185 target/quarkus-app/*.jar /deployments/
89+
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
90+
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
91+
92+
EXPOSE 8080
93+
USER 185
94+
ENV JAVA_OPTS_APPEND="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
95+
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
96+
97+
ENTRYPOINT [ "/opt/jboss/container/java/run/run-java.sh" ]
98+

0 commit comments

Comments
 (0)