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 请求,返回结构化结果
  • 安全与合规性:对敏感字段进行掩码处理;令牌校验、会话/心跳管理,避免跨进程的数据竞争和死锁

安装步骤

  1. 构建与运行后端服务
  • 需要环境:Java 17+、Maven/Gradle(项目保持Spring Boot结构),数据库(MySQL/PostgreSQL等)供JPA持久化。
  • 参考项目中的配置与代码,使用常规Spring Boot启动方式(如 mvn spring-boot:run 或 gradlew bootRun),确保 application.yml/环境变量配置正确(数据库连接、MCP服务器地址等)。
  1. 部署数据前置组件
  • 将Forwarder(侧车代理)部署在与目标应用相同的Docker网络中,通过共享日志卷读取目标应用的日志、并通过Actuator暴露健康信息等数据。
  • 按照 README 给出的示例 docker-compose.yml 设置,将日志卷、目标应用端口以及Forwarder镜像地址等配置好。
  1. 启动与验证
  • 启动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)的实现,适配更多日志源和指标源
  • 可集成更多告警渠道与通知策略

服务器信息