An open API service indexing awesome lists of open source software.

https://github.com/quarkiverse/quarkus-mcp-server

This extension enables developers to implement the MCP server features easily.
https://github.com/quarkiverse/quarkus-mcp-server

quarkus-extension

Last synced: 5 months ago
JSON representation

This extension enables developers to implement the MCP server features easily.

Awesome Lists containing this project

README

          

# Quarkus MCP Server

[![All Contributors](https://img.shields.io/badge/all_contributors-14-orange.svg?style=flat-square)](#contributors-)

[![Version](https://img.shields.io/maven-central/v/io.quarkiverse.mcp/quarkus-mcp-server-parent?logo=apache-maven&style=flat-square)](https://central.sonatype.com/artifact/io.quarkiverse.mcp/quarkus-mcp-server-parent)

This Quarkus extension provides both declarative and programmatic APIs that enable developers to easily implement [MCP](https://modelcontextprotocol.io/)[^1] server features.

[^1]: _"[Model Context Protocol](https://modelcontextprotocol.io/) (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools."_

> [!NOTE]
> The [LangChain4j](https://github.com/langchain4j/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:

```xml

io.quarkiverse.mcp
quarkus-mcp-server-http
${quarkus-mcp-server-version}

```

> [!NOTE]
> This dependency includes both the legacy "HTTP/SSE" and the "Streamable HTTP" transport. Use the `quarkus-mcp-server-stdio` artifactId if you want to use the STDIO transport instead. See also the [Supported transports](https://docs.quarkiverse.io/quarkus-mcp-server/dev/#_supported_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.

```java
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 MyServerFeatures {

@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")
BlobResourceContents alpha(RequestUri uri) throws IOException{
return BlobResourceContents.create(uri.value(), 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](https://allcontributors.org/docs/en/emoji-key)):



Martin Kouba
Martin Kouba

💻 🚧
Georgios Andrianakis
Georgios Andrianakis

💻
Max Rydahl Andersen
Max Rydahl Andersen

💡
Rostislav Svoboda
Rostislav Svoboda

💻
George Gastaldi
George Gastaldi

🚇
Jan Martiska
Jan Martiska

📖
Ioannis Canellos
Ioannis Canellos

💻


Sergey Beryozkin
Sergey Beryozkin

💡
Konstantin Pavlov
Konstantin Pavlov

⚠️ 🚇
Martijn van Duijnhoven
Martijn van Duijnhoven

💻 ⚠️ 📖
Pierre Beitz
Pierre Beitz

💻 ⚠️
Matthieu Recouly
Matthieu Recouly

📖
Willem Jan Glerum
Willem Jan Glerum

🚇
Sascha Steffen
Sascha Steffen

💻 ⚠️

This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!