JVM监控诊断服务器

一个基于原生JDK工具的轻量级JVM监控和诊断MCP服务器实现,为AI代理提供监控和分析Java应用程序的强大能力,无需依赖Arthas等第三方工具。

  • by xzq-xu
  • Python
  • 本地部署
  • 91 星标
  • 更新于
在 GitHub 查看 xzq-xu/jvm-mcp-server

使用说明

JVM MCP服务器

英语 | 中文

基于原生JDK工具的轻量级JVM监控和诊断MCP(多代理通信协议)服务器实现。为AI代理提供强大的功能来监视和分析Java应用程序,而不需要Arthas等第三方工具。

托管部署

托管部署可在 Frontier AI.

特性

  • 零依赖:仅使用本机JDK工具(jps、jstack、jmap等)
  • 轻量级:与基于代理的解决方案相比,资源消耗最小
  • 高兼容性:适用于所有Java版本和平台
  • 非侵入式:无需对目标应用程序进行修改
  • 安全:仅使用JDK认证的工具和命令
  • 远程监控:支持通过SSH进行本地和远程JVM监控

核心能力

基础监控

  • Java进程列表和标识
  • JVM基本信息检索
  • 内存使用监控
  • 线程信息和堆栈跟踪分析
  • 类加载统计
  • 详细的类结构信息

高级功能

  • 方法调用路径分析
  • 类反编译
  • 方法搜索和检查
  • 方法调用监控
  • 记录器级别管理
  • 系统资源仪表板

系统要求

  • Python 3.6+
  • JDK 8+
  • Linux/Unix/Windows操作系统
  • SSH访问(用于远程监控)

安装

使用紫外线(推荐)

# Install uv if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh  # Linux/macOS
# or
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"  # Windows

# Install the package
uv pip install jvm-mcp-server

使用pip

pip install jvm-mcp-server

来自源头

# Clone the repository
git clone https://github.com/your-repo/jvm-mcp-server.git
cd jvm-mcp-server

# Using uv (recommended)
uv venv  # Create virtual environment
uv sync  # Install dependencies

# Or install in development mode
uv pip install -e .

快速开始

启动服务器

使用紫外线(推荐)

# Local mode
uv run jvm-mcp-server

# Using environment variables file for remote mode
uv run --env-file .env jvm-mcp-server

# In specific directory
uv --directory /path/to/project run --env-file .env jvm-mcp-server

使用uvx

# Local mode
uvx run jvm-mcp-server

# With environment variables
uvx run --env-file .env jvm-mcp-server

直接使用Python

from jvm_mcp_server import JvmMcpServer

# Local mode
server = JvmMcpServer()
server.run()

# Remote mode (via environment variables)
# Set SSH_HOST, SSH_PORT, SSH_USER, SSH_PASSWORD or SSH_KEY
import os
os.environ['SSH_HOST'] = 'user@remote-host'
os.environ['SSH_PORT'] = '22'
server = JvmMcpServer()
server.run()

与MCP配置一起使用

{
  "mcpServers": {
    "jvm-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/jvm-mcp-server",
        "run",
        "--env-file",
        "/path/to/jvm-mcp-server/.env",
        "jvm-mcp-server"
      ]
    }
  }
}

可用工具

JVM MCP Server为JVM监控和诊断提供了一套全面的工具:

  • list_java_processes:列出所有Java进程
  • get_thread_info:获取特定进程的线程信息
  • get_jvm_info:获取JVM基本信息
  • get_memory_info:获取内存使用情况信息
  • get_stack_trace:获取线程堆栈跟踪信息
  • get_class_info:获取包括结构在内的详细类信息
  • get_stack_trace_by_method:获取方法调用路径
  • decompile_class:解压缩类源代码
  • search_method:在类中搜索方法
  • watch_method:监视方法调用
  • get_logger_info:获取记录器信息
  • set_logger_level:设置记录器级别
  • get_dashboard:获取系统资源仪表板
  • get_jcmd_output:执行JDK jcmd命令
  • get_jstat_output:执行JDK jstat命令

有关每个工具的详细文档,请参阅 可用工具.

建筑

JVM MCP服务器基于模块化架构构建:

  1. 命令层:包装JDK本机命令
  2. 执行器层:处理本地和远程命令执行
  3. 格式化程序层:处理和格式化命令输出
  4. MCP接口:通过FastMCP协议公开功能

关键组件

  • BaseCommand:所有命令的抽象基类
  • CommandExecutor:命令执行接口(本地和远程)
  • OutputFormatter:格式化命令输出的接口
  • JvmMcpServer:注册所有工具的主服务器类

开发状态

该项目正在积极开发中。看 Native_TOD.md 对于当前的进展。

完成

  • 核心架构和指挥框架
  • 基本命令实现(jps、jstack、jmap、jinfo、jcmd、jstat)
  • 班级信息检索系统
  • MCP工具参数类型兼容性修复

进行中

  • 缓存机制
  • 方法跟踪
  • 性能监控
  • 错误处理改进

贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

NP |##致谢 #MH| #TK|-JDK工具文档 #WY|-FastMCP协议规范 #JK |-贡献者和测试者 #BP| #KG |##许可要求 #YM。 #KB|一些JVM诊断命令(jstack、jmap、jinfo、jcmd等)需要足够的权限才能附加到目标JVM进程。如果遇到权限错误,请尝试以下解决方案: #YB| #KB|###常见错误 #RR| #KB|- Permission denied:权限不足 #YZ|- Unable to open socket file:无法连接到JVM进程 #KD|- No such process:进程不存在或已退出 #MH| #KB|###解决方案 #BR| #KB|1。 使用sudo运行 (推荐): sudo uv run jvm-mcp-server #XZ|2。 以与目标Java进程相同的用户身份运行:检查Java进程的用户ID并以该用户身份运行 #HM|3。 向JDK添加实验性附加权限:添加到JVM启动参数:

```

-XX: +AllowRedefinition添加删除方法

```

#XQ|4。 在Docker中:确保容器具有足够的权限(--privileged或mount/proc) #KB| #KB|注意: list_java_processes 使用jps命令,不需要特殊权限。可能需要根据上述解决方案配置其他命令。

  • JDK工具文档
  • FastMCP协议规范
  • 贡献者和测试者