Arthas MCP Proxy
Arthas MCP Proxy
Диагностический прокси-сервер Arthas на базе MCP (Model Context Protocol), поддерживающий динамическое подключение к любому серверу через SSH для диагностики JVM в реальном времени прямо в диалоге с Claude.
Функциональные возможности
Динамическое подключение в диалоге: прямая передача SSH-адреса, имени пользователя, пароля/ключа для подключения к целевому серверу в реальном времени.
Параллельная диагностика нескольких процессов: для каждого процесса JVM используется отдельный агент Arthas, переключение PID происходит без задержек.
Автоматическое повторное использование пула соединений: кэширование SSH-соединений по
user@host:port, автоматическое освобождение после 5 минут простоя.Автоматический attach Arthas: автоматический фоновый attach при первом использовании целевого PID, последующее повторное использование.
Удаленное развертывание SSE: поддержка постоянного развертывания в режиме HTTP SSE, подключение Claude через URL.
Поддержка оффлайн-сборки: возможность сборки Docker в изолированных сетях с помощью предварительно загруженных пакетов whl.
Related MCP server: javaperf
Список инструментов MCP
Название инструмента | Описание |
| Установка SSH-соединения, возвращает session_id |
| Список Java-процессов на целевой машине (отображает статус подключения Arthas) |
| Получение стека потоков (top N по CPU) |
| Просмотр информации о памяти/Dashboard |
| Отслеживание входных параметров и возвращаемых значений метода |
| Выполнение любой команды Arthas |
| Разрыв SSH-соединения и освобождение ресурсов |
Модель параллельной диагностики
Важно: для каждого процесса JVM в Arthas требуется отдельный экземпляр агента
PID 1234 (web) <---> Arthas agent (port 3658)
PID 5678 (cpu) <---> Arthas agent (port 3660)
PID 9012 (memory) <---> Arthas agent (port 3661)Первое использование: автоматический фоновый attach, Arthas автоматически назначает порт (около 5 секунд).
Последующее переключение: прямое подключение к существующему агенту, нулевая задержка.
Поддержка нескольких процессов: возможность одновременного поддержания работы нескольких агентов, переключение в любой момент.
Потребление ресурсов: каждый агент потребляет около 20-30 МБ памяти, рекомендуется использовать не более 10 одновременно.
Освобождение: автоматическая очистка при выполнении команды
stopчерезexec_commandили при разрыве SSH-соединения.
Технологический стек
Компонент | Выбор |
Язык | Python 3.11+ |
MCP SDK | mcp >= 1.6.0 |
SSH-библиотека | paramiko >= 3.4.0 |
HTTP-фреймворк | starlette + uvicorn |
Быстрый старт
1. Сборка онлайн (при наличии сети)
docker build -t arthas-mcp-proxy .
# 或
docker-compose up -d2. Сборка оффлайн (в изолированной сети)
Шаг 1: Предварительная загрузка зависимостей на машине с доступом в интернет
bash download-packages.sh
# 完成后 packages/ 目录包含所有 .whl 文件Шаг 2: Упаковка и перенос в изолированную сеть
zip -r arthas-mcp-proxy.zip arthas-mcp-proxy/
# 通过 U 盘/SCP 传入内网服务器Шаг 3: Сборка в изолированной сети
cd arthas-mcp-proxy
docker build --build-arg PIP_SOURCE=offline -t arthas-mcp-proxy .
# 或
PIP_SOURCE=offline docker-compose up -d --build3. Настройка Claude
Режим SSE (удаленное развертывание):
{
"mcpServers": {
"arthas": {
"type": "sse",
"url": "http://your-server-ip:8000/sse"
}
}
}Режим stdio (локальное встраивание):
{
"mcpServers": {
"arthas": {
"command": "python",
"args": ["/path/to/main.py", "--transport", "stdio"]
}
}
}Пример использования
В диалоге с Claude:
连接到 192.168.1.100,用户 root,密码 xxx,查看上面的 Java 进程。Claude автоматически вызовет connect_ssh -> list_java_processes.
Затем:
查看 PID 1234 的线程栈 top 10,然后查看 PID 5678 的内存情况。Claude автоматически переключится между диагностикой различных PID, выполняя автоматический attach при первом использовании каждого PID и повторно используя его в дальнейшем.
Структура проекта
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 # 本文档Требования к целевой машине
Установлен Arthas (
/opt/arthas/as.shили пользовательский путь).Доступность по SSH, пользователь имеет права на выполнение attach к целевой JVM.
Доступна команда
jps(входит в состав JDK).
Лицензия
MIT License
This server cannot be deployed
Maintenance
Related MCP Connectors
Run commands and read/write files on your servers over Termalin's keyless tunnels (hosted MCP).
Create, deploy, and operate MCP servers directly from your GitHub repositories.
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
- AgentCatOAuthcom.agentcat
Analytics and debugging for your MCP server — explore usage and sessions, then root-cause errors.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceJava diagnostics MCP server for LLM integration with Alibaba Arthas, enabling analysis and diagnosis of Java applications.56MIT
- AlicenseAqualityDmaintenanceMCP server for profiling Java applications via JDK utilities (jcmd, jfr, jps). Enables AI assistants to diagnose performance, analyze threads, and inspect JFR recordings without manual CLI usage.262610MIT
- AlicenseAqualityDmaintenanceEnables AI tools to manage SSH connections, execute commands, transfer files, and perform remote server diagnostics via MCP protocol.1713MIT
- AlicenseAqualityCmaintenanceA Model Context Protocol server that connects AI agents to live Java processes via Alibaba Arthas, enabling real-time diagnostics, debugging, and performance analysis without code changes.25MIT