quarkiverse_quarkus-mcp-server

quarkiverse_quarkus-mcp-server

3.5

The Quarkus Model Context Protocol (MCP) Server is an extension that provides a declarative API for implementing MCP server features, enabling seamless integration between LLM applications and external data sources and tools.

The Quarkus Model Context Protocol (MCP) Server is designed to facilitate the integration of large language model (LLM) applications with external data sources and tools through the Model Context Protocol. This open protocol allows developers to create a server that can handle various features such as prompts, resources, and tools using a declarative API. The server is implemented as a Quarkus extension, making it easy to integrate into existing Quarkus applications. By using annotations on business methods within CDI beans, developers can define server features that are automatically registered and managed by the Quarkus framework. The server currently supports HTTP/SSE transport, allowing for efficient communication between the server and clients.

Features

  • Declarative API for implementing MCP server features
  • Integration with Quarkus framework
  • Support for HTTP/SSE transport
  • Automatic registration of server features via CDI beans
  • Seamless integration with LLM applications and external data sources

MCP Tools

  • {'toLowerCase': 'Converts a given string to lowercase using the TextContent tool.'}

MCP Resources

  • {'alpha': 'Provides blob resource contents from a specified URI.'}

Usage with Different Platforms

maven

<dependency>
    <groupId>io.quarkiverse.mcp</groupId>
    <artifactId>quarkus-mcp-server</artifactId>
    <version>${project-version}</version>
</dependency>

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.Tool;
import io.quarkiverse.mcp.server.Resource;
import io.quarkiverse.mcp.server.TextContent;

public class ServerFeatures {

    @Inject
    CodeService codeService;

    @Tool
    TextContent toLowerCase(String value) {
        return new TextContent(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(String uri) throws IOException{
        return BlobResourceContents.create(uri, Files.readAllBytes(Paths.ALPHA));
    }

}