Token导航 LogoToken导航TokenDH.com
Heap Seance logo
开发工具stdio官方级别未说明来源级核验

Heap Seance

MCP Server

一个结合jcmd、jmap、jstat、jfr、Eclipse MAT和async-profiler的堆内存泄漏检测工具,用于结构化内存泄漏调查工作流,可在Claude Code中运行。

工具数

8

提示词数

0

GitHub Stars

3

资源数

0
开发工具PythonClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

SegfaultSorcerer

提供方

SegfaultSorcerer

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run heap-seance --mode scan --match your-app

详细介绍

Heap Seance

Summoning retained objects from the heap — so you can interrogate what refuses to die.

An MCP server + CLI toolkit that channels the spirits of jcmd, jmap, jstat, jfr, Eclipse MAT, and async-profiler into a structured leak investigation workflow — designed to run inside Claude Code.

2 slash commands. 8 MCP tools. Conservative by default.

______________________________________________________________________

How It Works • Quick Start • MCP Tools • Workflow • Prerequisites • Contributing

______________________________________________________________________

运作原理

Heap-Seance遵循两阶段升级模型。除非证据要求,否则没有深入的取证。

 /leak-scan                          /leak-deep
     |                                   |
     v                                   v
  3x class histogram               (all of scan, plus)
  + GC pressure snapshot            JFR recording
     |                              heap dump
     v                              MAT leak suspects
  monotonic growth?                 async-profiler alloc profile
  old-gen pressure?                     |
     |                                  v
     +--- both true? -----> auto-escalate to deep
     |
     +--- otherwise ------> verdict + next steps

信心是赢得的,而不是假设的。 high 需要至少两个独立的强信号。一个不断壮大的阶级是 watch增长加上GC压力 suspicious.添加MAT支配者或JFR相关性,您将得到 probable_memory_leak.

快速开始

需要 紫外线Python 3.10+,以及用于工具的JDK 17+(目标应用程序可以运行任何Java版本)。

1.克隆

git clone https://github.com/your-org/heap-seance.git

2.添加 .mcp.json 到您的Java项目

在要调查的项目中,创建 .mcp.json:

{
  "mcpServers": {
    "heap-seance": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/heap-seance", "python", "-m", "heap_seance_mcp.server"],
      "env": {
        "JAVA_HOME": "/path/to/jdk-17",
        "MAT_BIN": "/path/to/ParseHeapDump.sh",
        "ASYNC_PROFILER_BIN": "/path/to/asprof"
      }
    }
  }
}

--directory 指向您克隆Heap Seance的位置。 uv run 自动处理虚拟环境和依赖关系。 ASYNC_PROFILER_BIN 是可选的——如果缺失,深度模式将继续使用JFR+MAT。

3.复制克劳德代码命令

复制 .claude/commands/ 将文件夹放入Java项目中,以便 /leak-scan/leak-deep 斜线命令可用:

cp -r /path/to/heap-seance/.claude/commands/ .claude/commands/

4.跑步

/leak-scan my-service        # conservative scan
/leak-deep 12345             # full forensics by PID

Heap-Seance解析目标进程,收集证据,并返回结构化判决。

MCP工具

工具它做什么
java_list_processes()通过以下方式发现正在运行的JVM jcmd -l
java_class_histogram(pid)每个类的快照实时对象计数
java_gc_snapshot(pid)样品 jstat -gcutil 随着时间的推移
java_jfr_start(pid)捕获JFR录制
java_jfr_summary(jfr_file)总结JFR事件类型和计数
java_heap_dump(pid)全堆转储(.hprof)
java_mat_suspects(heap_dump)运行MAT泄漏嫌疑分析
java_async_alloc_profile(pid)通过异步分析器分配火焰图

每个工具都返回相同的统一模式:

{
  "status": "ok | warn | error",
  "evidence": ["..."],
  "metrics": {},
  "confidence": "none | low | medium | high",
  "next_recommended_action": "...",
  "raw_artifact_path": "..."
}

调查工作流程

  1. 启动您的应用程序 并让它完全初始化。
  2. /leak-scan --拍摄第一个直方图快照。
  3. 练习可疑行为 --扫描会提示您在3个直方图样本之间执行您怀疑正在泄漏的操作(打开/关闭视图、发送请求、重复工作流)。这一点至关重要——在样品之间没有负载的情况下,泄漏保持不可见。
  4. 宣读判决书。 专注于 Confidence, Key Evidence, Suspect Types.
  5. /leak-deep 如果扫描标志着增长,或者不管你是否想要完整的取证。
  6. 修复并重新扫描。 有界缓存、弱引用、监听器清理——然后 /leak-scan 再次确认信号下降。
  7. 保留文物。 .jfr, .hprof,MAT报告将保存以供团队审查。

你得到了什么

/leak-scan 返回:判决、信心、关键证据、嫌疑人类型、人工制品、下一步行动。

/leak-deep 更进一步:判决、置信度、根持有者假说(谁保留了生长的对象以及通过哪个字段/链)、支持证据、伪影、补救假说(具体的修复建议)、验证计划。

信心阶梯

信心这意味着什么需要信号
none无泄漏证据--
low增长缓慢,无GC压力仅直方图
medium增长+GC正在下降直方图+GC压力
high可能泄漏,已证实直方图+GC+MAT/JFR

先决条件

工具JDK (必填):

  • JDK 17+for jcmd, jmap, jstat --通过设置 JAVA_HOME.mcp.json
  • 目标应用程序可以运行任何Java版本(包括Java 8)

深度取证 (为 /leak-deep):

可选工具:

  • jfr CLI——用于JFR摘要(如果可用),可追溯到 jcmd JFR.view 否则。对于Java 8目标(不兼容格式),完全跳过JFR。

检查您的设置:

./scripts/check_prereqs.sh          # macOS / Linux
scripts\check_prereqs.bat           # Windows

环境覆盖

将这些设置在您的 .mcp.json env block(推荐)或作为shell变量:

变量必填描述
JAVA_HOME推荐JDK 17+安装路径-- $JAVA_HOME/bin 首先搜索 jcmd, jmap, jstat, jfr。也用于使用正确的Java版本启动MAT。
MAT_BIN深度模式路径 ParseHeapDump.sh (macOS/Linux)或 .bat (Windows)
ASYNC_PROFILER_BIN可选异步分析器二进制文件的路径——断开证据,深度模式在没有它的情况下工作
HEAP_SEANCE_ARTIFACT_DIR可选在哪里 .jfr, .hprof,并保存报告(默认:系统临时目录)
MCP_TRANSPORT可选传输协议: stdio (默认), sse,或 streamable-http
MCP_HOST可选SSE/HTTP传输的绑定地址(默认值: 0.0.0.0)
MCP_PORT可选SSE/HTTP传输端口(默认值: 8000)

CLI标志 --sse--streamable-http 可以代替 MCP_TRANSPORT.

.mcp.json.example 获取完整的配置模板。

兼容性说明

  • Java 8目标:直方图+GC+MAT工作充分。跳过JFR(v0.9格式与现代工具不兼容)。
  • 视窗:MAT通过以下方式工作 ParseHeapDump.bat.async分析器是可选的——如果缺少,深度模式将继续使用JFR+MAT。特定于区域设置的十进制分隔符(逗号vs点) jstat 输出是自动处理的。
  • MAT+JAVA_HOME:MAT与JDK一起从 JAVA_HOME,因此即使系统默认Java对于MAT来说太旧,它也能工作。

CLI用法(不含Claude代码)

uv run heap-seance --mode scan --match your-app
uv run heap-seance --mode deep --pid 12345 --output json

Installing uv

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

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

Manual setup (without uv)

python3 -m venv .venv
source .venv/bin/activate       # Windows: .\.venv\Scripts\Activate.ps1
pip install -e .

heap-seance --mode scan --match your-app

测试

python3 -m unittest discover -s tests -p "test_*.py"

实时验证的Java场景示例 examples/java-scenarios/ --真正的泄漏、有界缓存(无泄漏)和突发分配器(无泄露)。

贡献

欢迎投稿!看 贡献.md 有关添加工具、信号和技能的指南。

许可证

该项目在以下任一情况下获得双重许可

由您选择。

目录标签

目录标签

开发工具PythonClaude内存分析本地部署Java工具性能调优内存泄漏检测

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP