Arthas MCP Proxy
Arthas MCP Proxy
Ein auf MCP (Model Context Protocol) basierender Arthas-Diagnose-Proxy-Server, der es ermöglicht, sich in Claude-Gesprächen dynamisch per SSH mit beliebigen Servern zu verbinden, um JVM-Echtzeitdiagnosen durchzuführen.
Funktionsmerkmale
Dynamische Verbindung im Gespräch: Übergeben Sie direkt SSH-Adresse, Benutzername, Passwort/Schlüssel, um sich in Echtzeit mit dem Zielserver zu verbinden.
Parallele Diagnose mehrerer Prozesse: Jeder JVM-Prozess verfügt über einen unabhängigen Arthas-Agenten, PID-Wechsel erfolgen ohne Verzögerung.
Automatische Wiederverwendung von Verbindungspools: SSH-Verbindungen werden nach
user@host:portzwischengespeichert und nach 5 Minuten Inaktivität automatisch freigegeben.Automatisches Arthas-Attach: Beim ersten Zugriff auf eine Ziel-PID erfolgt automatisch ein Attach im Hintergrund, bei weiteren Zugriffen wird die Verbindung wiederverwendet.
SSE-Remote-Bereitstellung: Unterstützt die permanente Bereitstellung im HTTP-SSE-Modus, wobei Claude über eine URL eine Verbindung herstellt.
Unterstützung für Offline-Builds: Ermöglicht Docker-Builds in internen Netzwerken ohne Internetzugang durch vorab heruntergeladene whl-Pakete.
MCP-Tool-Liste
Tool-Name | Beschreibung |
| Baut eine SSH-Verbindung auf und gibt eine session_id zurück |
| Listet Java-Prozesse auf der Zielmaschine auf (zeigt Arthas-Attach-Status an) |
| Ruft den Thread-Stack ab (top N nach CPU) |
| Zeigt Speicher-/Dashboard-Informationen an |
| Überwacht Methodenparameter und Rückgabewerte |
| Führt einen beliebigen Arthas-Befehl aus |
| Trennt die SSH-Verbindung und gibt Ressourcen frei |
Modell für parallele Diagnosen
Wichtig: Jeder JVM-Prozess benötigt eine unabhängige Arthas-Agenten-Instanz
PID 1234 (web) <---> Arthas agent (port 3658)
PID 5678 (cpu) <---> Arthas agent (port 3660)
PID 9012 (memory) <---> Arthas agent (port 3661)Erstmalige Verwendung: Automatisches Attach im Hintergrund, Arthas weist automatisch einen Port zu (ca. 5 Sekunden).
Nachfolgende Wechsel: Direkte Verbindung zum bestehenden Agenten, null Verzögerung.
Unterstützung für mehrere Prozesse: Mehrere Agenten können gleichzeitig ausgeführt werden, ein Wechsel ist jederzeit möglich.
Ressourcenverbrauch: Jeder Agent benötigt ca. 20-30 MB Arbeitsspeicher; es wird empfohlen, gleichzeitig <= 10 Agenten zu betreiben.
Freigabe: Automatische Bereinigung bei Ausführung von
stopüberexec_commandoder beim Trennen der SSH-Verbindung.
Technologiestack
Komponente | Auswahl |
Sprache | Python 3.11+ |
MCP SDK | mcp >= 1.6.0 |
SSH-Bibliothek | paramiko >= 3.4.0 |
HTTP-Framework | starlette + uvicorn |
Schnellstart
1. Online-Build (mit Internetverbindung)
docker build -t arthas-mcp-proxy .
# 或
docker-compose up -d2. Offline-Build (internes Netzwerk ohne Internetverbindung)
Schritt 1: Abhängigkeiten auf einer Maschine mit Internetzugang vorab herunterladen
bash download-packages.sh
# 完成后 packages/ 目录包含所有 .whl 文件Schritt 2: Packen und in das interne Netzwerk übertragen
zip -r arthas-mcp-proxy.zip arthas-mcp-proxy/
# 通过 U 盘/SCP 传入内网服务器Schritt 3: Build im internen Netzwerk
cd arthas-mcp-proxy
docker build --build-arg PIP_SOURCE=offline -t arthas-mcp-proxy .
# 或
PIP_SOURCE=offline docker-compose up -d --build3. Claude-Konfiguration
SSE-Modus (Remote-Bereitstellung):
{
"mcpServers": {
"arthas": {
"type": "sse",
"url": "http://your-server-ip:8000/sse"
}
}
}stdio-Modus (lokale Einbettung):
{
"mcpServers": {
"arthas": {
"command": "python",
"args": ["/path/to/main.py", "--transport", "stdio"]
}
}
}Anwendungsbeispiel
Im Claude-Gespräch:
连接到 192.168.1.100,用户 root,密码 xxx,查看上面的 Java 进程。Claude ruft automatisch connect_ssh -> list_java_processes auf.
Anschließend:
查看 PID 1234 的线程栈 top 10,然后查看 PID 5678 的内存情况。Claude wechselt automatisch zwischen den Diagnosen der verschiedenen PIDs; bei der ersten Verwendung einer PID erfolgt ein automatisches Attach, danach wird die Verbindung wiederverwendet.
Projektstruktur
arthas-mcp-proxy/
├── main.py # MCP Server 入口(SSE + stdio 双模式)
├── ssh_pool.py # SSH 连接池(动态连接 + session 复用)
├── arthas_client.py # Arthas 命令封装(多 PID 并行支持)
├── requirements.txt # Python 依赖
├── Dockerfile # 双模式构建 Dockerfile
├── docker-compose.yml # Docker Compose 配置
├── download-packages.sh # 外网预下载脚本
├── packages/ # 离线 whl 包目录
└── README.md # 本文档Anforderungen an die Zielmaschine
Arthas ist installiert (
/opt/arthas/as.shoder benutzerdefinierter Pfad).SSH ist erreichbar, der ausführende Benutzer hat Berechtigungen für das Attach an die Ziel-JVM.
Der Befehl
jpsist verfügbar (im JDK enthalten).
Lizenz
MIT-Lizenz
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/narcissux/arthas-mcp-proxy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server