Spring Boot MCP服务器–AI代理监控工具
让AI代理监控您的Spring Boot服务 使用 模型上下文协议(MCP).
这是一个 生产就绪的MCP服务器 这允许 AI代理(克劳德代码等) 致:
- ✅ 检查服务是否 向上/向下
- ⏱️ 测量 响应时间
- 📊 获取 弹簧靴执行器指标
______________________________________________________________________
特性
- Spring Boot集成 -利用执行器端点
- 符合MCP协议 -完整的JSON-RPC 2.0实现
- 标准运输 -与Claude Code无缝协作
- 零配置 健康与指标检查
- 快速 -使用Java
HttpClient具有可配置的超时 - 全面的错误处理 -正确的错误代码和消息
- 日志记录 -内置Java日志用于调试
______________________________________________________________________
Claude Code快速入门
1.先决条件
- Java 21或更高版本
- Maven(或使用附带的
mvnw包装) - 克劳德代码CLI
2.建设项目
cd /absolute/path/to/spring-monitoring-mcp-server
./mvnw clean compile3.配置克劳德代码
将此MCP服务器添加到您的Claude Code设置文件中(~/.claude/settings.json):
{
"mcpServers": {
"spring-monitoring": {
"command": "/absolute/path/to/spring-monitoring-mcp-server/run-mcp-server.sh"
}
}
}或者创建一个本地 .mcp.json 项目中的文件:
{
"mcpServers": {
"spring-monitoring": {
"command": "/absolute/path/to/spring-monitoring-mcp-server/run-mcp-server.sh"
}
}
}4.测试一下!
1.使用执行器端点进行http调用
http://localhost:3450/tools/checkServiceHealth
{
"serviceUrl": "http://localhost:{your-running-application-port}"
}或测试度量端点:
http://localhost:3450/tools/getServiceMetrics
{
"serviceUrl": "http://localhost:{your-running-application-port}"
}2-使用克劳德代码
启动Claude Code并询问:
Check the health of my service at http://localhost:{your-running-application-port}或
Get metrics from http://localhost:{your-running-application-port}______________________________________________________________________
可用工具
1. checkServiceHealth
检查Spring Boot服务是否已启动,并测量其响应时间。
输入:
{
"serviceUrl": "http://localhost:{your-running-application-port}"
}输出:
{
"serviceUrl": "http://localhost:{your-running-application-port}",
"status": "UP",
"statusCode": 200,
"responseTimeMs": 45,
"body": {
"status": "UP",
"components": {...}
}
}2. getServiceMetrics
从服务中获取Spring Boot执行器指标。
输入:
{
"serviceUrl": "http://localhost:{your-running-application-port}"
}输出:
{
"serviceUrl": "http://localhost:{your-running-application-port}",
"status": "UP",
"statusCode": 200,
"responseTimeMs": 32,
"metrics": {
"names": ["jvm.memory.used", "http.server.requests", ...]
}
}______________________________________________________________________
建筑
此MCP服务器使用 stdio传输 型号:
Claude Code MCP Server Your Spring Boot Services
(stdio) (REST)组件
- McpServer.java -实现JSON-RPC 2.0协议的主标准io MCP服务器
- HealthTool.java -通过以下方式检查服务健康状况的工具
/actuator/health - MetricsTool.java -通过以下方式获取指标的工具
/actuator/metrics - 运行mcp-server.sh -构建和启动服务器的启动脚本
协议流
- Claude Code通过启动脚本启动MCP服务器
- 服务器从stdin读取JSON-RPC请求
- 服务器处理请求(初始化、工具/列表、工具/调用)
- 服务器对目标Spring Boot服务进行HTTP调用
- 服务器将JSON-RPC响应写入stdout
______________________________________________________________________
故障排除
检查服务器是否已配置
claude mcp list你应该看看 spring-monitoring 在列表中。
手动测试启动脚本
cd /Users/Edem/Documents/IdeaProjects/spring-monitoring-mcp-server
./run-mcp-server.sh然后键入:
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}按Enter键。您应该看到一个JSON响应。
启用调试日志记录
修改启动脚本以添加日志标记:
exec java -Djava.util.logging.config.file=logging.properties -cp ...常见问题
问题: 克劳德代码中未显示服务器
- ✓ 检查settings.json中的路径是否为绝对路径
- ✓ 确保run-mcp-server.sh可执行(
chmod +x) - ✓ 先构建项目(
./mvnw clean compile)
问题: 检查服务时连接超时
- ✓ 验证目标服务是否正在运行
- ✓ 检查URL格式(必须包含http://或https://)
- ✓ 确保该服务已启用弹簧启动执行器
问题: 权限不足
- ✓ 确保已安装Java 21+(
java --version) - ✓ 检查Maven是否可以运行(
./mvnw --version)
______________________________________________________________________
发展
项目结构
spring-monitoring-mcp-server/
├── src/main/java/com/example/mcp/
│ ├── McpServer.java # Main MCP server (stdio)
│ ├── Tool.java # Tool interface
│ ├── HealthTool.java # Health check tool
│ ├── MetricsTool.java # Metrics tool
│ ├── controller/
│ │ └── McpController.java # HTTP endpoints (optional)
│ ├── service/
│ │ └── MonitoringService.java
│ └── dto/
│ ├── HealthResponse.java
│ ├── MetricsResponse.java
│ └── ServiceRequest.java
├── src/main/resources/
│ ├── mcp.json # Tool definitions
│ └── application.yaml # Spring Boot config
├── run-mcp-server.sh # Startup script
├── mcp-config-example.json # Example MCP config
├── pom.xml # Maven dependencies
└── readME.md # This file添加新工具
- 创建一个新类来实现
Tool接口:
public class MyNewTool implements Tool {
@Override
public JsonObject run(JsonObject args) {
// Your implementation
JsonObject result = new JsonObject();
result.addProperty("message", "Hello from MyNewTool");
return result;
}
}- 在中注册
McpServer.java:
tools.put("myNewTool", new MyNewTool());- 在中添加工具定义
handleListTools具有适当模式的方法。
运行测试
./mvnw test构建JAR
./mvnw clean package
java -jar target/spring-monitoring-mcp-server-0.0.1-SNAPSHOT.jar______________________________________________________________________
替代方案:基于HTTP的MCP(可选)
该项目还包括在端口8082上运行的基于HTTP的MCP实现。 要使用它:
./mvnw spring-boot:run然后访问:
GET http://localhost:8082/mcp/mcp.json-工具清单POST http://localhost:8082/mcp/check_service_health-健康检查POST http://localhost:8082/mcp/get_service_metrics-指标
注: Claude Code主要使用stdio传输,因此HTTP端点主要用于测试或与其他系统集成。
______________________________________________________________________
贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加测试
- 提交拉取请求
______________________________________________________________________
许可证
\[在此处添加您的许可证\]
______________________________________________________________________
资源
______________________________________________________________________
支持
对于问题或疑问:
- 在GitHub上打开一个问题
- 查看Claude Code文档
- 查看上面的故障排除部分
