Skip to main content
Glama
narcissux

Arthas MCP Proxy

by narcissux

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.

Список инструментов MCP

Название инструмента

Описание

connect_ssh

Установка SSH-соединения, возвращает session_id

list_java_processes

Список Java-процессов на целевой машине (отображает статус подключения Arthas)

thread_dump

Получение стека потоков (top N по CPU)

heap_info

Просмотр информации о памяти/Dashboard

watch_method

Отслеживание входных параметров и возвращаемых значений метода

exec_command

Выполнение любой команды Arthas

disconnect_ssh

Разрыв 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 -d

2. Сборка оффлайн (в изолированной сети)

Шаг 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 --build

3. Настройка 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

F
license - not found
-
quality - not tested
C
maintenance

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