我想做一件事:让 Claude Code 直接跑 Arthas 的 thread、jad 这些命令,省掉每次 SSH 上去手敲的麻烦。Arthas 4.x 支持了 MCP,理论上可以让 AI 直接调 Arthas,但实际接的时候卡在两个地方。
本文涉及的主要依赖版本如下:
- Arthas:4.1.8
- Claude Code CLI:v2.1.91
MCP 服务怎么开——和我一开始想的不一样
我最初以为 Arthas 的 MCP 是通过启动参数开的,类似 --mcp 这种 flag,试了几种写法都没效果。后来翻了 Arthas 的 Configure 类和 HTTP 处理逻辑才搞明白:MCP 不是独立的服务,而是挂在 HTTP Server 上的一个特殊路径。
具体来说,McpHttpRequestHandler 负责拦截匹配 mcpEndpoint 配置的请求,这个路径需要在 arthas.properties 或系统变量里显式定义,否则默认不开。
解决 Claude Code 的 Stdio 对接问题
搞定服务端之后又碰到一个问题:Arthas MCP 暴露的是 HTTP SSE 流,但 Claude Code 只认 Stdio 接口。所以需要一个中间层把 SSE 转成 Stdio。找了一圈,社区的 mcp-remote 刚好能干这事。
最终配置步骤
开启 Arthas MCP 端点
在 arthas-boot.jar 的运行目录下创建 arthas.properties:
1 | # 开启 MCP 路径,不配的话默认不激活 |
然后正常启动 Arthas 挂载目标进程,MCP 端点就在 http://localhost:8563/mcp 上了。
用 mcp-remote 桥接到 Claude Code
先装桥接工具:
1 | npm install -g mcp-remote |
然后在 Claude Code 里添加 Arthas MCP:
1 | # 把远端 HTTP SSE 转成本地 Stdio |
确认连接
跑 claude mcp list 能看到状态:
1 | arthas: http://localhost:8563/mcp (HTTP) - ✓ Connected |
跑起来的效果
