"Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools."
This extension provides a declarative API that enables developers to implement the MCP server features easily.
Step #1 - add the following dependency to your POM file:
<dependency>
<groupId>io.quarkiverse.mcp</groupId>
<artifactId>quarkus-mcp-server</artifactId>
<version>${project-version}</version>
</dependency>
Step #2 - add server features (prompts, resources and tools) represented by an annotated business method of a CDI bean.
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;
// This class is automatically registered as a @Singleton CDI bean
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));
}
}
Step #3 - run your Quarkus app!
Note
Currently, only the HTTP/SSE transport is supported.
Read the full documentation.
Thanks goes to these wonderful people (emoji key):
Martin Kouba 💻 🚧 |
This project follows the all-contributors specification. Contributions of any kind welcome!