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) 传输协议。
- 会话管理和能力声明: 服务器端负责会话管理和向客户端声明自身能力。
安装步骤:
-
在您的 Quarkus 项目的 'pom.xml' 文件中添加以下依赖:
<dependency> <groupId>io.quarkiverse.mcp</groupId> <artifactId>quarkus-mcp-server</artifactId> <version>${project.version}</version> </dependency>请将 '${project.version}' 替换为实际的版本号。
-
创建 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()); } } -
运行您的 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 服务器端使用的协议版本一致。
基本使用方法:
- 启动您的 Quarkus MCP 服务器应用。
- 配置您的 MCP 客户端,将 'command' 参数指向您的 Quarkus MCP 服务器的 SSE 端点 URL,并确保 'protocolVersion' 和 'transport' 等参数配置正确。
- 客户端可以通过 MCP 协议与服务器进行通信,例如列出可用的 Prompt 模板、调用工具或读取资源。具体的操作方式请参考 MCP 客户端的文档和 MCP 协议规范。
通过 Quarkus MCP Server 扩展,您可以专注于业务逻辑的实现,而无需关注 MCP 协议底层的复杂性,从而快速构建强大的 LLM 应用后端。
信息
分类
开发者工具