MCP HubMCP Hub
xzq-xu

jvm-mcp-server

by: xzq-xu

This is an implementation project of a JVM-based MCP (Model Context Protocol) server. The project aims to provide a standardized MCP server implementation for the JVM platform, enabling AI models to better interact with the Java ecosystem.

49created 10/03/2025
Visit
JVM
AI

📌Overview

Purpose: The JVM MCP Server is designed to provide an easy-to-use interface for monitoring and analyzing Java processes, leveraging Arthas for enhanced insights.

Overview: This framework offers a comprehensive monitoring solution for Java applications through a Python interface, facilitating both local and remote process management. Users can efficiently track JVM performance, memory usage, and threading issues in real-time.

Key Features:

  • Automatic Arthas Management: Seamlessly manages and downloads the Arthas tool for monitoring without user intervention.

  • Local and Remote Monitoring: Supports monitoring of Java processes on the local machine or remotely through SSH, enhancing flexibility for system administrators.

  • Real-time Performance Insights: Provides instant access to JVM thread information, memory usage stats, and threading stack traces to aid debugging and optimization.

  • Dynamic Logging and Analysis: Allows for on-the-fly adjustments to logging levels and includes AI-driven performance analytics to suggest improvements.

  • Decompilation Support: Facilitates class and method decompilation, enabling users to inspect and analyze code behavior accurately.


JVM MCP Server

A JVM monitoring MCP server implementation based on Arthas, providing a simple and easy-to-use Python interface for monitoring and analyzing Java processes.

Features

  • Automatic download and management of Arthas tools
  • Support for local and remote Java process monitoring
  • Java process list querying
  • Real-time JVM thread information
  • JVM memory usage monitoring
  • Thread stack trace information
  • Class loading information querying
  • Support for class and method decompilation
  • Method call monitoring
  • Dynamic log level adjustment
  • AI-driven JVM performance analysis

System Requirements

  • Python 3.10+
  • Java Runtime Environment (JRE) 8+
  • Network connection (for downloading Arthas)
  • SSH access to target server (if using remote mode)

Installation and Environment Setup

1. Install uv tool

# Linux shell
curl -LsSf https://astral.sh/uv/install.sh | sh

# Or install using pip
pip install uv

# Or install using pipx (if you have pipx installed)
pipx install uv

# Windows PowerShell
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

2. Clone the project

git clone https://github.com/xzq-xu/jvm-mcp-server.git
cd jvm-mcp-server

3. Initialize project environment using uv

# Create virtual environment
uv venv

# Sync project dependencies
uv sync

4. Configure environment variables (Optional, for remote connections)

Create a .env file and add the following configurations:

# Linux/Mac
ARTHAS_SSH_HOST=user@remote-host
ARTHAS_SSH_PORT=22  # Optional, default is 22
ARTHAS_SSH_PASSWORD=your-password  # If using password authentication

# Windows PowerShell
$env:ARTHAS_SSH_HOST="user@remote-host"
$env:ARTHAS_SSH_PORT="22"  # Optional, default is 22
$env:ARTHAS_SSH_PASSWORD="your-password"  # If using password authentication

Quick Start

  1. Start the server using uv:
# Start in local mode
uv run jvm-mcp-server

# Start with environment file (if remote connection is configured)
uv run --env-file .env jvm-mcp-server

# Start in a specific directory (if needed)
uv --directory /path/to/project run --env-file .env jvm-mcp-server
  1. Use in Python code:
from jvm_mcp_server import JvmMcpServer

server = JvmMcpServer()
server.run()
  1. Using MCP tools:

With configuration file:

{
  "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"
      ]
    }
  }
}

Without configuration file, it reads system environment variables; if not present, it monitors local threads:

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

Available Tools

Available Tools List

Important Notes

  1. Ensure Java is installed in the runtime environment.
  2. Arthas tool will be automatically downloaded on first run (downloaded to home directory as arthas-boot.jar, can be downloaded manually in advance).
  3. Requires access permissions to target Java process.
  4. Remote mode requires SSH access and appropriate user permissions.
  5. Recommended for use in development environment; production use should be carefully evaluated.

Feedback

If you encounter any issues, please submit an Issue or Pull Request.

License

MIT License