Server Doctor MCP Server
使用说明
项目简介
Server Doctor MCP Server 是一个用Spring Boot实现的后端服务,遵循MCP(Model Context Protocol)设计理念,为LLM客户端提供统一的上下文数据源与工具集,用于对Spring Boot服务器的健康状态、日志、以及资源使用情况进行分析与诊断。核心能力包括:
- 通过 MCP 风格的工具集提供对目标服务器的诊断能力
- 接收并存储来自前置采集端(Forwarder)的日志、健康与指标数据
- 提供健康状态、最新指标和错误日志的查询工具,供LLM进行分析
- 支持注册新监控目标、获取设置向导等管理操作
- 使用Web/SSE等多种传输方式,提供稳定的上下文服务
主要功能点
- 服务器注册与认证:注册新监控目标服务器,分发一组用于鉴权的令牌(Ingest Token)
- 数据摄取与持久化:接收日志、健康检查、资源指标数据并落库
- 异步诊断与通知:基于数据分析结果,向指定的Discord通道发送告警与AI诊断结果
- LLM工具端点(工具集合):通过MCP工具提供“诊断服务器”、“获取错误日志”、“获取健康状态”等功能
- MCP工具与客户端交互:支持 initialize、tools/list、tools/call、ping 等 MCP 请求,返回结构化结果
- 安全与合规性:对敏感字段进行掩码处理;令牌校验、会话/心跳管理,避免跨进程的数据竞争和死锁
安装步骤
- 构建与运行后端服务
- 需要环境:Java 17+、Maven/Gradle(项目保持Spring Boot结构),数据库(MySQL/PostgreSQL等)供JPA持久化。
- 参考项目中的配置与代码,使用常规Spring Boot启动方式(如 mvn spring-boot:run 或 gradlew bootRun),确保 application.yml/环境变量配置正确(数据库连接、MCP服务器地址等)。
- 部署数据前置组件
- 将Forwarder(侧车代理)部署在与目标应用相同的Docker网络中,通过共享日志卷读取目标应用的日志、并通过Actuator暴露健康信息等数据。
- 按照 README 给出的示例 docker-compose.yml 设置,将日志卷、目标应用端口以及Forwarder镜像地址等配置好。
- 启动与验证
- 启动MCP服务器后,使用客户端工具向 /legacy/sse/ 或 /api/ 相关端点发起连接,以完成MCP握手、工具列表获取、以及后续调用。
- 使用管理员/注册流程来注册需要监控的目标服务器,获取Ingest Token与Setup Guide。
服务器配置(MCP 客户端启动配置示例)
以下为示例配置,帮助MCP客户端在连接服务器时了解需要的启动信息。实际值请替换为你的环境参数。
- serverName: target
- command: mcp-forwarder
- args:
- --mcp-domain: http://your-mcp-server-host:8080/legacy
- --server-name: target
- --ingest-token: 你从注册得到的Ingest Token
- --health-url: http://target:9090/actuator/health
- --actuator-url: http://target:9090/actuator/metrics
- --log-path: /logs/application.log
- --mcp-token: 与服务器绑定的Token(若客户端需要自带认证)
注释说明
- serverName 用于在服务端建立与目标服务器的关联,确保数据路由正确
- command/args 提供给MCP客户端的启动信息,确保客户端能够正确连接到MCP服务器并开始数据摄取与命令请求
基本使用方法
- 注册服务器:通过API端点将待监控的服务器名称提交注册请求,获取Ingest Token与生成的Setup Guide
- 启动前端/代理:按照配置运行前述的Forwarder代理,将日志、健康与指标数据推送至MCP服务器
- 远程诊断:通过MCP工具(如ServerDoctor_diagnose_server、ServerDoctor_fetch_error_logs等)进行服务器诊断数据的提取与分析
- 监控与告警:当资源使用超过阈值,自动向配置的Discord通道发送告警信息,同时LLM分析结果可用于更深入的诊断
- 获取健康与趋势:通过工具接口获取当前健康状态、最近趋势等信息,供LLM进行上下文分析
参与与扩展
- 可以扩展更多 MCP Tools,以覆盖更多监控维度与诊断策略
- 可以替换或扩展前置采集端(Forwarder)的实现,适配更多日志源和指标源
- 可集成更多告警渠道与通知策略