Skip to main content
Glama
narcissux

Arthas MCP Proxy

by narcissux

Arthas MCP Proxy

MCP (Model Context Protocol) ベースのArthas診断プロキシサーバー。Claudeの会話からSSH経由で任意のサーバーに動的に接続し、JVMのリアルタイム診断を行うことができます。

機能特性

  • 会話中の動的接続:SSHアドレス、ユーザー名、パスワード/鍵を直接渡して、ターゲットサーバーにリアルタイムで接続

  • マルチプロセス並行診断:各JVMプロセスが独立したArthasエージェントを持ち、PIDの切り替えが遅延なし

  • 接続プールの自動再利用user@host:port ごとにSSH接続をキャッシュし、5分間アイドル状態になると自動的に回収

  • Arthasの自動アタッチ:ターゲットPIDの初回使用時にバックグラウンドで自動アタッチし、以降は再利用

  • SSEリモートデプロイ:HTTP SSEモードでの常駐デプロイをサポートし、ClaudeがURL経由で接続可能

  • オフラインビルドサポート:インターネット環境がないイントラネット環境でも、事前にダウンロードしたwhlパッケージを使用してDockerビルドが可能

MCPツールリスト

ツール名

説明

connect_ssh

SSH接続を確立し、session_idを返す

list_java_processes

ターゲットマシンのJavaプロセスを一覧表示(Arthasのアタッチ状態を表示)

thread_dump

スレッドスタックを取得(CPU使用率上位N件)

heap_info

メモリ/Dashboard情報を表示

watch_method

メソッドの引数と戻り値を監視

exec_command

任意のArthasコマンドを実行

disconnect_ssh

SSH接続を切断し、リソースを解放

並行診断モデル

重要:ArthasはJVMプロセスごとに独立したエージェントインスタンスが必要です

PID 1234 (web)    <---> Arthas agent (port 3658)
PID 5678 (cpu)    <---> Arthas agent (port 3660)  
PID 9012 (memory) <---> Arthas agent (port 3661)
  • 初回使用時:バックグラウンドで自動アタッチし、Arthasが自動的にポートを割り当て(約5秒)

  • 以降の切り替え:既存のエージェントに直接接続し、遅延ゼロ

  • マルチプロセスサポート:複数のエージェントを同時に実行し、任意に切り替え可能

  • リソース消費:エージェント1つあたり約20-30MBのメモリを消費。同時実行数は10個以下を推奨

  • 解放exec_commandstop を実行するか、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間で自動的に診断を切り替えます。各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接続が可能であり、実行ユーザーがターゲット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