servy mcp
基于Quarkus的MCP服务器,支持外部工具插件。
建筑
此MCP服务器结合了两个强大的功能:
- 用于核心MCP协议实现的Quarkus MCP服务器SSE扩展
- 一个插件系统,允许在外部开发工具并通过Java的ServiceLoader加载
快速开始
在开发模式下构建和运行:
./gradlew quarkusDev服务器公开了两个MCP端点:
/mcp-流式HTTP端点(推荐)/mcp/sse-服务器发送事件端点
您可以使用MCP检查器与服务器交互:
npx @modelcontextprotocol/inspector外部工具开发
工具可以作为单独的模块/JAR开发,并添加到MCP服务器中。方法如下:
- 创建一个新的Java项目并添加Tool API依赖项:
dependencies {
implementation 'com.servy:mcp-tool-api:1.0.0' // The Tool interface
}- 实现工具界面:
public class MyTool implements Tool {
@Override
public String name() {
return "mytool";
}
@Override
public String description() {
return "Description of what my tool does";
}
@Override
public ToolResult execute(String input) {
return ToolResult.builder()
.toolName(name())
.success(true)
.output("Result: " + input)
.build();
}
}- 通过注册您的工具
META-INF/services:
创建 src/main/resources/META-INF/services/tool.de.floydkretschmar.mcp.Tool 包含:
com.example.MyTool- 将您的工具构建为JAR并将其添加到MCP服务器的类路径中。
工作原理
- 启动时,MCP服务器:
- 通过ServiceLoader发现外部工具 - 在Quarkus MCP的ToolManager中注册每个工具 - 处理适当的生命周期和执行上下文
- 当调用工具时:
- 请求通过MCP协议传入 - ToolManager将路由到相应的处理程序 - 外部工具在执行时进行了适当的错误处理 - 结果通过MCP协议返回
建筑
构建项目:
./gradlew build运行测试:
./gradlew test后续步骤
- 添加示例外部工具模块
- 添加动态插件加载(JAR的热重新加载)
- 添加指标和监控
- 添加身份验证/授权
