Quarkus Model Context Protocol (MCP) Server
LocalAbout Quarkus Model Context Protocol (MCP) Server
A Quarkus extension for developers building MCP servers. It offers both declarative and programmatic APIs for defining server capabilities in Quarkus applications.
Key features
- 01Declarative and programmatic APIs
- 02Annotated CDI business methods
- 03HTTP/SSE and Streamable HTTP transports
- 04STDIO transport option
Use cases
- 01Adding MCP capabilities to a Quarkus app
- 02Defining prompts, resources, and tools
- 03Serving MCP over HTTP or STDIO
MCP support
The extension enables Quarkus applications to implement MCP server features. Applications can expose prompts, resources, and tools to MCP clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEQuarkus MCP Server
This Quarkus extension provides both declarative and programmatic APIs that enable developers to easily implement MCP1 server features.
Note
The LangChain4j project provides the MCP client functionality, either as a low-level programmatic API or as a full-fledged integration into AI-infused applications.
Get Started
Step #1
Add the following dependency to your POM file:
<dependency>
<groupId>io.quarkiverse.mcp</groupId>
<artifactId>quarkus-mcp-server-http</artifactId>
<version>${quarkus-mcp-server-version}</version>
</dependency>
Note
This dependency includes both the legacy "HTTP/SSE" and the "Streamable HTTP" transport. Use thequarkus-mcp-server-stdioartifactId if you want to use the STDIO transport instead. See also the Transports section in the docs for more information.
Step #2
Add server features (prompts, resources and tools) represented by annotated business methods of CDI beans.
import jakarta.inject.Inject;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import io.quarkiverse.mcp.server.BlobResourceContents;
import io.quarkiverse.mcp.server.Prompt;
import io.quarkiverse.mcp.server.PromptArg;
import io.quarkiverse.mcp.server.PromptMessage;
import io.quarkiverse.mcp.server.Resource;
import io.quarkiverse.mcp.server.TextContent;
import io.quarkiverse.mcp.server.Tool;
// This class is automatically registered as a @Singleton CDI bean
public class MyFeatures {
@Inject
CodeService codeService;
@Tool(description = "Converts the string value to lower case")
String toLowerCase(String value) {
return value.toLowerCase();
}
@Prompt(name = "code_assist")
PromptMessage codeAssist(@PromptArg(name = "lang") String language) {
return PromptMessage.withUserRole(new TextContent(codeService.assist(language)));
}
@Resource(uri = "file:///project/alpha.txt")
byte[] alpha() throws IOException{
return Files.readAllBytes(Path.of("alpha.txt"));
}
}
Step #3
Run your Quarkus app and have fun!
Documentation
The full documentation is available at https://quarkiverse.github.io/quarkiverse-docs/quarkus-mcp-server/dev/index.html.
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
Footnotes
-
"Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools." ↩
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.