Quarkus MCP Server 扩展

本项目是 Model Context Protocol (MCP) 服务器的 Quarkus 扩展,旨在帮助开发者快速构建 MCP 服务器端应用。它提供了一套声明式的 API,允许开发者通过简单的注解和方法定义即可实现 MCP 服务器的核心功能,例如资源管理、工具注册和 Prompt 模板定义。

主要功能点:

  • 资源 (Resources) 管理: 通过注解声明即可将 Java 方法暴露为 MCP 资源,支持文本和二进制资源。
  • 工具 (Tools) 注册与执行: 通过注解声明即可将 Java 方法注册为 MCP 工具,允许 LLM 客户端调用外部功能。
  • Prompt 模板 (Prompts) 定义: 通过注解声明即可定义 Prompt 模板,支持参数化 Prompt 构建。
  • 基于 JSON-RPC 协议通信: 使用标准的 JSON-RPC 协议与 MCP 客户端进行通信。
  • HTTP/SSE 传输协议: 目前支持 HTTP/SSE (Server-Sent Events) 传输协议。
  • 会话管理和能力声明: 服务器端负责会话管理和向客户端声明自身能力。

安装步骤:

  1. 在您的 Quarkus 项目的 'pom.xml' 文件中添加以下依赖:

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

    请将 '${project.version}' 替换为实际的版本号。

  2. 创建 Java 类并添加 '@Singleton' 注解 (或使用其他 CDI 管理的 Bean Scope 注解,例如 '@ApplicationScoped')。在该类中,使用 '@Resource', '@Tool', 和 '@Prompt' 注解标注方法,以声明您的 MCP 服务器功能。

    例如,以下代码片段展示了如何定义资源、工具和 Prompt 模板:

    import jakarta.inject.Inject;
    import jakarta.inject.Singleton;
    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;
    
    @Singleton
    public class ServerFeatures {
    
        @Inject
        CodeService 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) {
            return BlobResourceContents.create(uri, "文件内容".getBytes());
        }
    }
  3. 运行您的 Quarkus 应用。MCP 服务器将通过 HTTP/SSE 协议在 '/mcp/sse' 路径下提供服务 (默认根路径为 '/mcp')。

服务器配置 (MCP 客户端配置):

MCP 客户端需要配置连接到此 MCP 服务器的信息。以下是一个 JSON 格式的配置示例,您需要根据实际情况进行调整:

{
  "serverName": "MyQuarkusMCP",  // MCP 服务器的名称,您可以自定义
  "command": "http://your-server-host:your-server-port/mcp/sse", // MCP 服务器的 SSE 端点 URL,请替换为实际的服务器地址和端口
  "args": [],  // 启动命令参数,对于 HTTP/SSE 连接,通常不需要额外的参数,保持为空数组即可
  "transport": "sse", // 指定传输协议为 SSE
  "protocolVersion": "2024-11-05" // MCP 协议版本,请与服务器端保持一致
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,用于客户端识别,您可以自定义设置。
  • 'command': 重要参数。MCP 服务器的启动命令,对于 HTTP/SSE 传输,这里需要配置 MCP 服务器的 SSE 端点 URL。请将 'http://your-server-host:your-server-port/mcp/sse' 替换为您实际部署的 Quarkus MCP 服务器的地址和端口。例如,如果您的服务器运行在 'localhost:8080',则应配置为 'http://localhost:8080/mcp/sse'。
  • 'args': 启动命令参数,对于 HTTP/SSE 传输,通常不需要额外的参数,保持为空数组 '[]' 即可。如果服务器端需要特定的启动参数,请查阅服务器端文档进行配置。
  • 'transport': 指定 MCP 客户端使用的传输协议。对于本项目,请设置为 '"sse"',表示使用 Server-Sent Events over HTTP。
  • 'protocolVersion': 重要参数。MCP 协议版本,请设置为 '"2024-11-05"',确保与 Quarkus MCP 服务器端使用的协议版本一致。

基本使用方法:

  1. 启动您的 Quarkus MCP 服务器应用。
  2. 配置您的 MCP 客户端,将 'command' 参数指向您的 Quarkus MCP 服务器的 SSE 端点 URL,并确保 'protocolVersion' 和 'transport' 等参数配置正确。
  3. 客户端可以通过 MCP 协议与服务器进行通信,例如列出可用的 Prompt 模板、调用工具或读取资源。具体的操作方式请参考 MCP 客户端的文档和 MCP 协议规范。

通过 Quarkus MCP Server 扩展,您可以专注于业务逻辑的实现,而无需关注 MCP 协议底层的复杂性,从而快速构建强大的 LLM 应用后端。

信息

分类

开发者工具