Skip to content

Feature: 支持 IDEA 内置 MCP Server 扩展点,注册 debug-tools 能力为 MCP Tool #286

Description

@cycle2zhou

功能描述

希望 debug-tools 能够支持 JetBrains IDEA 内置的 MCP Server(2025.2+),通过 com.intellij.mcpServer.mcpToolset 扩展点将现有的核心能力(调用任意 Java 方法、热重载、执行 Groovy 等)注册为 MCP Tools,使 AI 编程助手(如 OpenCode、Claude Code、Cursor 等)能够直接通过 MCP 协议调用这些能力,完成自动化方法测试。

背景

JetBrains IDEA 2025.2 已内置 MCP Server(bundled plugin com.intellij.mcpServer),并提供了扩展点机制让第三方插件注册自定义 MCP Tool:

<depends>com.intellij.mcpServer</depends>
<extensions defaultExtensionNs="com.intellij">
    <mcpServer.mcpToolset implementation="com.example.YourToolset" />
</extensions>
class YourToolset : McpToolset {
    @McpTool
    @McpDescription("调用 Java 方法")
    suspend fun invoke_java_method(
        @McpDescription("类全限定名") className: String,
        @McpDescription("方法名") methodName: String
    ): String {
        val project = currentCoroutineContext().project
        // 调用 debug-tools 已有的 Java API
        return "result"
    }
}

debug-tools 不需要自建 MCP Server,只需将自身能力注册到 IDEA 已有的 MCP 服务中即可。

使用场景

当前 AI 编码完成后的集成测试流程存在断点:

  1. AI 写完代码 → 需要通过 JetBrains 启动服务
  2. 服务启动后 → AI 无法直接调用项目中的 Java 方法来验证功能
  3. 只能依赖外部 HTTP 接口测试(如 Schemathesis),但很多业务逻辑并不暴露为 REST 接口

如果 debug-tools 将能力注册到 IDEA 内置 MCP Server,AI 可以:

  • 直接调用任意 Service/DAO 方法完成单元测试级别的验证
  • 通过 MCP 触发热重载,让代码修改立即生效
  • 执行 Groovy 脚本获取运行时状态
  • 形成完整的「编码 → 启动 → 方法测试 → 修复」闭环

建议暴露的 MCP Tools

MCP Tool 名称 对应功能 输入参数 返回值
invoke_java_method 调用任意 Java 方法 className, methodName, parameterTypes, args 方法执行结果
hot_reload_class 热重载指定类 className, classBytes 重载成功/失败
execute_groovy 执行 Groovy 脚本 script 脚本执行结果
list_available_methods 列出可调用的方法 className (可选) 方法列表
get_bean_info 获取 Spring Bean 信息 beanName Bean 类型、状态等

实现方案

  1. 依赖声明:在 build.gradle.kts 中添加 bundledPlugin("com.intellij.mcpServer")
  2. 扩展点注册:在 plugin.xml 中注册 <mcpServer.mcpToolset>
  3. Kotlin 桥接层:由于 @McpTool 注解和协程上下文是 Kotlin 特有的,需要编写 Kotlin Toolset 类,内部调用 debug-tools 已有的 Java API
  4. 安全控制:方法调用前增加确认机制或白名单配置,避免 AI 误调用危险方法

前提条件

  • 用户需使用 IntelliJ IDEA 2025.2 或更高版本
  • MCP Server 插件需启用(默认已启用)
  • debug-tools 需声明 <depends>com.intellij.mcpServer</depends>

参考

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions