
Arthas MCP Server 实战指南用 AI 工具调用驱动 Java 诊断【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthasArthas MCP Server 是 Alibaba Java 诊断利器 Arthas 的实验性模块它实现了基于 MCPModel Context Protocol版本 2025-03-26协议的服务端通过 HTTP/Netty 提供统一的 JSON-RPC 2.0 接口让 AI 助手如 Cherry Studio、Cline 等能够以工具调用tool calling的方式直接执行 Arthas 诊断命令。读完本文你将掌握 arthas-mcp-server 的架构原理、26 个诊断工具的完整清单、配置启动步骤以及如何在 AI 客户端中接入并完成认证。模块定位与架构概览什么是 Arthas MCP ServerMCPModel Context Protocol是由 Anthropic 提出的标准化协议用于连接 AI 助手与外部工具和数据源。arthas-mcp-server是 Arthas它把 Arthas 的终端命令封装成 MCP 协议下的工具ToolAI 客户端通过标准的 JSON-RPC 2.0 请求即可触发诊断动作从而实现自然语言下指令 → AI 调用工具 → 返回诊断结果的闭环。从模块依赖看arthas-mcp-server仅依赖arthas-model与 Nettynetty-buffer、netty-handler、netty-transport、netty-codec-http、fastjson2、Jackson 2.18.1 与 slf4jJava 编译级别为 8说明它是一套轻量、独立的协议服务端实现不耦合 Arthas 核心的 shell 层。服务端分层与启动链路MCP 服务端代码位于 arthas-mcp-server/src/main/java/com/taobao/arthas/mcp/server主要分为四层protocol/specMCP 协议规范层定义了McpSchema、McpSession、McpTransport、McpServerTransportProvider、事件存储EventStore等抽象与规范类对应 MCP 协议 2025-03-26 版本protocol/serverNetty 服务端实现包括McpNettyServer、McpStatelessNettyServer、HTTP 请求处理器McpHttpRequestHandler、McpStreamableHttpRequestHandler、McpStatelessHttpRequestHandler、传输层NettyStreamableServerTransportProvider、NettyStatelessServerTransport以及初始化握手McpInitRequestHandlertool工具抽象层定义了Tool/ToolParam注解、ToolDefinition工具定义、ToolCallback回调以及基于 JSON Schema 的入参校验生成器JsonSchemaGeneratortask任务管理扩展层提供TaskManager、TaskStore、TaskMessageQueue以及InMemoryTaskStore等实现支持长时间运行工具的异步任务化。在 Arthas 核心模块中ArthasMcpBootstrapcore/src/main/java/com/taobao/arthas/core/mcp/ArthasMcpBootstrap.java负责接收配置并创建ArthasMcpServer后者core/src/main/java/com/taobao/arthas/core/mcp/ArthasMcpServer.java完成实际的启动工作注册 Arthas 特定的 JSON 过滤器McpObjectVOFilter通过McpServerProperties.Builder构建服务端配置扫描com.taobao.arthas.core.mcp.tool.function基础包下的全部工具并分类按协议模式启动 Streamable 或 Stateless 服务器在启动日志中打印MCP Endpoint与Transport mode。其中命令的真正执行者是一个关键的CommandExecutor接口arthas-mcp-server/src/main/java/com/taobao/arthas/mcp/server/CommandExecutor.java它抽象了 Arthas 命令的同步/异步执行、session 生命周期管理、结果拉取、任务中断与认证注入等能力是 MCP 工具层与 Arthas 核心命令引擎之间的桥梁。两种传输协议模式从McpServerProperties.ServerProtocol枚举McpServerProperties.java可以看出服务端支持两种模式模式枚举值特点STREAMABLE默认STREAMABLE有状态模式通过 HTTP/SSE 维持持久连接支持流式工具、进度通知与会话状态适合交互式诊断STATELESSSTATELESS无状态模式每个请求相互独立适合简单的一次性查询在源码中协议值通过ServerProtocol.valueOf(protocol.toUpperCase())解析非法值会被记录警告并回退到默认的STREAMABLEStreamable 模式还会额外初始化ArthasCommandSessionManager会话管理器与固定大小的任务线程池线程名为mcp-task-*使用SynchronousQueue无缓冲队列 AbortPolicy兜底拒绝策略避免 I/O 密集任务污染公共 ForkJoinPool。支持的 26 个诊断工具清单Arthas MCP Server 将 Arthas 命令封装为 26 个工具对应core模块 core/src/main/java/com/taobao/arthas/core/mcp/tool/function 下按basic1000、jvm300、klass100、monitor200等包分类的*Tool.java实现按功能分为三大类JVM 相关工具13 个工具功能描述dashboard实时展示 JVM/应用面板支持自定义刷新间隔和次数控制heapdump生成 JVM heap dump 文件支持--live选项只导出存活对象jvm查看当前 JVM 的信息mbean查看或监控 MBean 属性信息支持实时刷新和模式匹配memory查看 JVM 的内存信息thread查看线程信息及堆栈支持查找阻塞线程和最忙线程sysprop查看或修改系统属性支持动态修改 JVM 系统属性sysenv查看系统环境变量vmoption查看或更新 VM 选项支持动态调整 JVM 参数perfcounter查看 Perf Counter 信息显示 JVM 性能计数器vmtool虚拟机工具集合支持强制 GC、获取实例、线程中断等getstatic查看类的静态字段值ognl执行 OGNL 表达式动态调用方法和访问字段Class/ClassLoader 相关工具8 个工具功能描述sc查看 JVM 已加载的类信息支持详细信息和统计sm查看已加载类的方法信息显示方法签名和修饰符jad反编译指定已加载类的源码将字节码反编译为 Java 代码classloaderClassLoader 诊断工具查看类加载器统计、继承树、URLsmc内存编译器将 Java 源码编译为字节码文件redefine重定义类加载外部 class 文件重新定义 JVM 中的类retransform重新转换类触发类的重新转换和字节码增强dump将 JVM 中实际运行的 class 字节码导出到指定目录监控诊断工具5 个工具功能描述monitor实时监控指定类的指定方法的调用情况stack输出当前方法被调用的调用路径帮助分析方法的调用链路trace追踪方法内部调用路径输出每个节点的耗时信息支持条件过滤和耗时阈值设置tt方法执行数据的时空隧道记录下指定方法每次调用的入参和返回信息支持事后查看和重放watch观察指定方法的调用情况包含入参、返回值和抛出异常等信息支持实时流式输出这些工具在服务启动时通过DefaultToolCallbackProvider扫描注册并依据tool.taskSupport属性被分类为普通工具FORBIDDEN、可选任务工具OPTIONAL与必需任务工具REQUIRED。其中watch、trace、monitor 等长时间运行工具在 Streamable 模式下可注册为任务感知工具task-aware tool配合内存版InMemoryTaskStore任务 TTL 默认 30 分钟与InMemoryTaskMessageQueue实现异步任务的创建、查询与取消对应tasks/list、tasks/cancel、tools/call增强等能力从源码结构看这是为长耗时诊断命令准备的异步化方案。快速开始从配置到 AI 客户端接入1. 配置 MCP 服务首先在arthas.properties中配置 MCP 服务的访问路径。该文件位于 core/src/main/java/arthas.properties默认配置为# MCP (Model Context Protocol) configuration arthas.mcpEndpoint/mcp配置项由Configure类core/src/main/java/com/taobao/arthas/core/config/Configure.java承载ArthasBootstrap在启动时会检测该配置并触发 MCP 服务初始化。arthas.properties还支持以下 MCP 相关配置项配置项说明默认值arthas.mcpEndpointMCP 服务的访问路径/mcparthas.mcpProtocol传输协议模式STREAMABLE有状态或STATELESS无状态STREAMABLEarthas.httpPortHTTP 服务端口8563arthas.password认证密码开启认证时使用无2. 启动应用正常启动 Arthas 或带有 Arthas 的 Java 应用后MCP 服务会在 HTTP 端口 8563 上对外暴露。可以先用 curl 验证服务是否就绪curl http://localhost:8563/mcp如果返回 MCP 协议相关信息说明服务已成功启动。服务端启动日志中也会打印MCP Endpoint与Transport mode两行信息便于确认实际生效的端点与协议。3. 在 AI 客户端中配置 MCP 服务器在 Cherry Studio、Cline 等 AI 客户端的设置中添加 MCP 服务器{ mcpServers: { arthas-mcp: { type: streamableHttp, url: http://localhost:8563/mcp } } }配置完成后AI 即可通过工具调用方式执行 Arthas 命令例如看一下这个 JVM 的线程状态追踪 demo.MathGame 的 run 方法等AI 会选择合适的工具thread、trace等完成诊断。开启认证Bearer Token 鉴权当在arthas.properties中设置了arthas.password时MCP Server 会自动开启鉴权功能AI 客户端需要在请求头中携带 Bearer Tokentoken 值就是配置的密码本身。配置文件示例arthas.passwordyour-secure-passwordAI 客户端配置示例{ mcpServers: { arthas-mcp-streamable-server: { type: streamableHttp, url: http://localhost:8563/mcp, headers: { Authorization: Bearer your-secure-password } } } }注意Authorizationheader 中的 token 必须与arthas.password配置的值完全一致否则鉴权失败。从源码看认证支持由 core/src/main/java/com/taobao/arthas/core/mcp/util/McpAuthExtractor.java 与协议层的McpAuthExtractorarthas-mcp-server/src/main/java/com/taobao/arthas/mcp/util/McpAuthExtractor.java实现认证主体subject会被挂载到 Netty Channel 的AttributeKeyarthas.auth.subject上供后续命令执行时注入 session同时支持通过X-User-Id请求头携带用户 ID用于命令执行的统计上报。BasicHttpAuthenticatorHandlercore/src/main/java/com/taobao/arthas/core/shell/term/impl/http/BasicHttpAuthenticatorHandler.java也会对 MCP 端点做统一认证校验。进阶协议模式与配置要点显式指定协议模式默认情况下服务以STREAMABLE模式启动如需切换为无状态的STATELESS模式可在arthas.properties中显式配置arthas.mcpEndpoint/mcp # 可选默认为 STREAMABLE arthas.mcpProtocolSTREAMABLE两种模式的取舍Streamable 适合 watch、trace、monitor 等需要流式输出和会话状态的交互式诊断场景Stateless 模式每个请求相互独立适合一次性查询且该模式不注册任务感知工具源码中enableTasks false所有工具一律以普通工具方式注册。服务端默认参数从McpServerProperties.BuilderMcpServerProperties.java的默认值可以看出服务端的关键默认参数参数默认值说明namemcp-server服务端名称实际启动时被设置为arthas-mcp-serverversion1.0.0服务端版本号mcpEndpoint/mcpMCP 端点路径requestTimeout10 秒请求超时时间initializationTimeout30 秒MCP 初始化握手超时时间toolChangeNotificationtrue工具变更通知能力protocolSTREAMABLE传输协议模式总结Arthas MCP Server 打通了AI 大模型 ↔ MCP 协议 ↔ Arthas 命令引擎的链路让 Java 应用的日常诊断从人肉敲命令演进为自然语言对话式诊断。它基于 Netty 与 JSON-RPC 2.0 实现了标准 MCP 服务端支持 Streamable HTTP 与 Stateless 两种传输模式内置 26 个覆盖 JVM 监控、Class/ClassLoader 诊断与方法级追踪的工具并提供 Bearer Token 认证与异步任务扩展能力。如需深入了解可继续阅读模块源码arthas-mcp-server/src/main/java/com/taobao/arthas/mcp/server核心装配与工具扫描core/src/main/java/com/taobao/arthas/core/mcp官方文档site/docs/doc/mcp-server.md 与英文版 site/docs/en/doc/mcp-server.md提示Arthas MCP Server 目前属于实验性功能接口与配置可能在后续版本中调整请以当前仓库实际内容为准。【免费下载链接】arthasAlibaba Java Diagnostic Tool Arthas/Alibaba Java诊断利器Arthas项目地址: https://gitcode.com/gh_mirrors/ar/arthas创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考