Gradle项目协议服务器

一个基于Gradle Tooling API的协议服务器,用于程序化获取Gradle项目信息和执行构建任务,适用于AI工具集成和开发自动化场景。

  • by IlyaGulya
  • Kotlin
  • 本地部署
  • 47 星标
  • 更新于
在 GitHub 查看 IlyaGulya/gradle-mcp-server

使用说明

⚠️ 弃用

此项目不再维护。请使用 格雷德尔·麦克普 相反。

Gradle MCP服务器

模型上下文协议(MCP)服务器,使AI工具能够以编程方式与Gradle项目交互。它使用 分级工具API 查询项目信息并执行任务。

特性

提供以下工具:

  • 检查项目:检索有关Gradle项目的详细结构化信息,包括:
    • 构建结构(根项目、子项目)
    • 可用任务(根项目中)
    • 构建环境详细信息(Gradle版本、Java版本、JVM参数)
    • 根项目详细信息(名称、路径、描述、构建脚本路径)
    • 允许对信息类别进行选择性查询。
  • 执行任务:运行特定的Gradle任务(例如。, clean, build, assemble)使用自定义参数、JVM参数和环境变量。返回格式化的文本输出,包括stdout/stderr和状态。
  • 按层次结构运行测试:执行Gradle测试任务(例如。, test)并接收分层JSON格式的详细结构化结果(Suite->Class->Method)。包括:
    • 每个节点的结果(通过、失败、跳过)。
    • 失败消息和过滤/截断输出行(stdout/stderr)主要用于失败的测试(可配置)。
    • 支持通过模式进行测试过滤(--tests).
    • 控制输出包含和日志行限制的选项。

需求

  • JDK 17或更高版本
  • 对于命令行安装:
    • Linux/macOS: curl
    • Windows:PowerShell 5+

安装

推荐方法:命令行下载

此方法将服务器JAR下载到主目录中的标准位置。

Linux/macOS(需要 curl):

# Downloads gradle-mcp-server-all.jar to ~/mcp-servers/gradle-mcp-server/
TARGET_DIR="$HOME/mcp-servers/gradle-mcp-server" && mkdir -p "$TARGET_DIR" && curl -fSL -o "$TARGET_DIR/gradle-mcp-server-all.jar" "https://github.com/IlyaGulya/gradle-mcp-server/releases/latest/download/gradle-mcp-server-all.jar" && echo "Downloaded to '$TARGET_DIR'." || echo "Download failed."

Windows(PowerShell 5+):

# Downloads gradle-mcp-server-all.jar to %USERPROFILE%\mcp-servers\gradle-mcp-server\
$targetDir = Join-Path $env:USERPROFILE "mcp-servers\gradle-mcp-server"; if (-not (Test-Path $targetDir)) { New-Item -ItemType Directory -Path $targetDir -Force | Out-Null }; $outFile = Join-Path $targetDir "gradle-mcp-server-all.jar"; Write-Host "Downloading..."; Invoke-WebRequest -Uri "https://github.com/IlyaGulya/gradle-mcp-server/releases/latest/download/gradle-mcp-server-all.jar" -OutFile $outFile -ErrorAction Stop; Write-Host "Downloaded to '$targetDir'."

替代方法:手动下载

  1. 去 GitHub发布页面.
  2. 下载 gradle-mcp-server-all.jar 最新版本的资产。
  3. 将下载的JAR文件保存到稳定的位置。我们建议:
    • macOS/Linux: ~/mcp-servers/gradle-mcp-server/
    • 窗户: %USERPROFILE%\mcp-servers\gradle-mcp-server\ (如果目录不存在,则创建该目录)。

MCP客户端配置

要将此服务器与MCP客户端(如VSCode扩展或Claude Desktop应用程序)一起使用,您需要将其配置添加到客户端的设置文件中。

  1. 找到设置文件:

    • VSCode扩展(macOS示例): /Users/<YourUsername>/Library/Application Support/VSCodium/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json (调整标准VSCode或其他操作系统的路径)。
    • Claude桌面应用程序(macOS示例): ~/Library/Application Support/Claude/claude_desktop_config.json (调整其他操作系统的路径)。
  2. 添加服务器配置: 编辑JSON文件,并在 mcpServers 对象。 替换 <absolute_path_to_home> 您的主目录的实际绝对路径。

    {
      "mcpServers": {
        "gradle-mcp-server": {
          "command": "java",
          "args": [
            "-jar",
            "<absolute_path_to_home>/mcp-servers/gradle-mcp-server/gradle-mcp-server-all.jar"
          ],
          "env": {},
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    

用法

  1. 在添加配置之后, 重新启动MCP客户端 (例如,重新加载VSCode窗口或重新启动Claude应用程序)。
  2. “Gradle MCP服务器”及其工具(如下所列)现在应该可以在客户端中使用。当客户端需要时,服务器会通过stdio自动运行。

可用工具

服务器通过模型上下文协议公开以下工具:

  1. get_gradle_project_info

    • 描述:检索Gradle项目的特定详细信息,返回结构化JSON。仅允许请求必要的信息类别(buildStructure, tasks, environment, projectDetails).如果 requestedInfo 如果省略,则提取所有类别。
    • 关键输入:
      • projectPath (字符串,必填):Gradle项目根的绝对路径。
      • requestedInfo (字符串数组,可选):要检索的类别列表(例如。, ["tasks", "environment"]).
    • 输出:JSON对象(GradleProjectInfoResponse)包含所请求的数据字段和潜在错误。
  2. execute_gradle_task

    • 描述:执行一般Gradle任务(如 build, clean). 如果需要详细的结果,不建议运行测试 (改用测试工具)。返回格式化的文本输出,总结执行情况,包括捕获的stdout/stderr。
    • 关键输入:
      • projectPath (字符串,必填):Gradle项目根的绝对路径。
      • tasks (字符串数组,必填):要执行的任务名称列表(例如。, ["clean", "assemble"]).
      • arguments (字符串数组,可选):Gradle命令行参数(例如。, ["--info", "-PmyProp=value"]).
      • jvmArguments (字符串数组,可选):Gradle的JVM参数(例如。, ["-Xmx4g"]).
      • environmentVariables (object,可选):构建的环境变量(例如。, {"CI": "true"}).
    • 输出:带有执行摘要、最终状态的格式化文本响应(Success/Failure),并组合了stdout/stderr。
  3. run_gradle_tests

    • 描述:执行Gradle测试任务,并将结果作为结构化JSON层次结构返回(Suite>Class>test)。默认情况下过滤/截断输出行,重点关注故障。提供选项以包含已通过测试的输出和控制日志限制。
    • 关键输入:
      • projectPath (字符串,必填):Gradle项目根的绝对路径。
      • gradleTasks (字符串数组,可选):要运行的测试任务(默认为 ["test"]).
      • arguments (字符串数组,可选):其他Gradle参数(详细标志,如 --info/--debug 被过滤掉)。
      • environmentVariables (object,可选):测试执行的环境变量。
      • testPatterns (字符串数组,可选):测试通过传递的过滤模式 --tests (例如。, ["*.MyTestClass"]).
      • includeOutputForPassed (布尔值,可选):设置为 true 包含已通过测试的输出(默认 false).
      • maxLogLines (整数,可选):覆盖每个测试输出行的默认限制(0表示无限制)。
      • defaultMaxLogLines (整数,可选):设置默认输出行限制(内部默认为100)。
    • 输出:JSON对象(GradleHierarchicalTestResponse)包含执行细节、总体构建成功状态、信息注释和 test_hierarchy 树。每个节点都包括显示名称、类型、结果、失败消息(如果有的话)、过滤/截断的输出行和子节点。

发展

从源头构建

如果你想自己构建服务器:

  1. 克隆存储库。
  2. 请确保您已安装JDK 17或更高版本。
  3. 运行build命令:
    ./gradlew shadowJar
    
  4. 自包含的JAR(gradle-mcp-server-<version>-all.jar)将在中创建 build/libs/ 目录。然后,您可以配置MCP客户端以使用此JAR(请记住在配置中使用正确的绝对路径和版本)。

本地运行(用于测试)

您可以直接从命令行运行构建的JAR进行测试。默认情况下,服务器通过stdio进行通信。

# Run the packaged JAR in stdio mode
java -jar build/libs/gradle-mcp-server-<version>-all.jar

# Run with specific arguments (see Configuration section)
java -jar build/libs/gradle-mcp-server-<version>-all.jar --sse 8080 --debug

配置(命令行参数)

当直接运行服务器JAR(主要用于测试/开发)时,可以通过命令行参数控制其行为:

  • --stdio:(默认)MCP通信使用标准输入/输出。
  • --sse [port]:在指定的上作为SSE服务器运行 port (如果省略端口,则默认为3001)。将MCP客户端(如Anthropic控制台检查器)连接到 http://localhost:<port>/sse.
  • --debug:在服务器控制台上启用详细日志记录。

依赖项