返回市场
弹簧初始化器-mcp

弹簧初始化器-mcp

作者:hpalma4 星标更新:2025-06-02

项目介绍

Spring Initializr MCP 服务器

一个提供访问 Spring Initializr 功能的 MCP(模型上下文协议)服务器,允许 AI 助手以编程方式生成和下载 Spring Boot 项目。

这是什么?

该项目实现了一个 MCP 服务器,封装了 Spring Initializr API,使 AI 助手(如 Claude)能够创建具有自定义配置的 Spring Boot 项目。无需手动访问 start.spring.io,现在你可以要求你的 AI 助手生成具有特定依赖项、Java 版本和项目结构的项目。

功能

  • 生成 Spring Boot 项目:创建具有自定义配置的新 Spring Boot 项目
  • 灵活配置:支持不同的项目类型(Maven/Gradle)、语言(Java/Kotlin/Groovy)和 Java 版本
  • 依赖管理:自动添加流行的 Spring Boot 依赖项
  • 原生编译:使用 GraalVM 原生编译实现快速启动时间
  • 跨平台:适用于 Linux、Windows 和 macOS(x64 和 ARM64)的原生二进制文件
  • 自动解压:可选地解压下载的 ZIP 文件
  • 动态元数据:自动获取最新的 Spring Boot 版本和依赖项

支持的参数

在生成项目时,可以指定:

  • 项目类型maven-project, gradle-project, gradle-project-kotlin
  • 语言java, kotlin, groovy
  • Java 版本17, 21, 24(默认为 11
  • 打包类型jar, war(默认为 jar
  • 依赖项:数百个 Spring Boot 启动器和依赖项
  • 项目元数据:Group ID、Artifact ID、名称、描述、包名
  • 下载选项:自定义下载位置和自动 ZIP 解压

安装

下载预构建二进制文件

Releases 页面下载适合您平台的二进制文件:

  • Linux x64springinitializr-mcp-linux-x64
  • Windows x64springinitializr-mcp-windows-x64.exe
  • macOS x64springinitializr-mcp-macos-x64
  • macOS ARM64springinitializr-mcp-macos-arm64

从源代码构建

需求:

  • Java 24
  • GraalVM(用于原生编译)
git clone https://github.com/hpalma/springinitializr-mcp.git
cd springinitializr-mcp
./gradlew build
./gradlew nativeCompile

使用 Claude Desktop

将 MCP 服务器添加到您的 Claude Desktop 配置中:

macOS/Linux

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "springinitializr": {
      "command": "/path/to/springinitializr-mcp-binary"
    }
  }
}

Windows

编辑 %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "springinitializr": {
      "command": "C:\\path\\to\\springinitializr-mcp-windows-x64.exe"
    }
  }
}

示例用法

配置完成后,您可以要求 Claude 生成 Spring Boot 项目:

"创建一个带有 Spring Data JPA、PostgreSQL 和 Spring Security 依赖项的 Spring Boot 网络应用程序"

"生成一个使用 Gradle 的 Kotlin Spring Boot 项目,包含 WebFlux 和 MongoDB"

"创建一个基于 Maven 的 Spring Boot 项目,包含 Thymeleaf、Validation 和 Actuator"

工具将生成并下载项目作为 ZIP 文件到您指定的位置,并可选地自动解压。

可用的依赖项

该服务器支持所有 Spring Initializr 依赖项,包括:

  • 网络:Spring Web、WebFlux、GraphQL、REST 存储库
  • 安全:Spring Security、OAuth2、LDAP
  • 数据:JPA、JDBC、MongoDB、Redis、Elasticsearch、R2DBC
  • 消息传递:RabbitMQ、Apache Kafka、WebSocket
  • :Spring Cloud Gateway、Config、Eureka、Feign
  • 操作:Actuator、Micrometer、分布式追踪
  • AI:Spring AI 与各种模型提供商
  • 测试:TestContainers、契约测试

依赖项列表通过从 Spring Initializr 获取最新元数据自动更新。

开发

在开发环境中运行

# 使用 dev 配置文件进行更多日志记录
./gradlew bootRun --args='--spring.profiles.active=dev'

# 从 Spring Initializr 生成更新的常量
./gradlew generateToolDescriptions

# 运行测试
./gradlew test

# 运行原生测试
./gradlew nativeTest

代码生成

该项目使用 Gradle 任务来获取最新的 Spring Initializr 元数据并生成支持的依赖项和 Java 版本的常量:

./gradlew generateToolDescriptions

这确保了工具始终支持最新的 Spring Boot 版本和依赖项:

  • https://start.spring.io/metadata/client 获取元数据
  • 生成 SpringInitializrConstants.java 包含当前依赖项
  • 更新支持的 Java 版本和默认值

测试

该项目包括全面的测试:

  • 单元测试:标准 JUnit 测试核心功能
  • 集成测试:测试 MCP 协议实现
  • 原生测试:验证原生编译正确工作
  • URL 构建测试:验证 Spring Initializr URL 构建
# 运行所有测试
./gradlew test nativeTest nativeIntegrationTest

# 仅运行单元测试
./gradlew test

# 仅运行原生集成测试
./gradlew nativeIntegrationTest

原生性能测试

集成测试包括启动时间验证,以确保原生编译提供了预期的性能优势:

  • 原生可执行文件启动时间小于 1 秒
  • 完整的 MCP 协议握手验证
  • 工具发现和调用测试

CI/CD

该项目使用 GitHub Actions 来:

  • 持续集成:每次推送或 PR 时构建和测试
  • 发布自动化:为所有平台创建原生二进制文件
  • 多平台支持:Linux、Windows、macOS(x64 和 ARM64)
  • 自动化测试:单元测试、集成测试和原生测试

发布过程

  1. 在 GitHub 上创建新版本或手动触发工作流
  2. 自动为所有平台构建原生二进制文件
  3. 将二进制文件附加到发布供下载

配置

应用程序配置

服务器使用 Spring Boot 配置,以下为主要属性:

spring:
  application:
    name: springinitializr-mcp
  ai:
    mcp:
      server:
        name: springinitializr
        version: 1.0.0

环境配置文件

  • 默认:生产使用的最小日志记录
  • Dev:开发和调试增强的日志记录

API 参考

工具:generate-spring-boot-project

生成并下载具有指定配置的 Spring Boot 项目。

参数:

  • downloadFolderPath(可选):目标下载目录
  • shouldExtract(可选):是否解压 ZIP 文件
  • projectType(可选):项目构建系统类型
  • language(可选):编程语言
  • groupId(可选):Maven/Gradle 组标识符
  • artifactId(可选):项目构件标识符
  • springBootVersion(可选):要使用的 Spring Boot 版本
  • name(可选):项目显示名称
  • description(可选):项目描述
  • packageName(可选):基础 Java 包名
  • packaging(可选):打包类型(JAR/WAR)
  • javaVersion(可选):目标 Java 版本
  • dependencies(可选):逗号分隔的依赖项列表

返回值: 下载文件或解压目录的绝对路径

贡献

  1. 分叉仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 进行更改
  4. 为新功能编写测试
  5. 确保所有测试通过 (./gradlew test nativeTest)
  6. 如需更新生成的常量,请运行 (./gradlew generateToolDescriptions)
  7. 提交更改 (git commit -m 'Add amazing feature')
  8. 推送到分支 (git push origin feature/amazing-feature)
  9. 打开拉取请求

故障排除

常见问题

原生可执行文件无法启动:

  • 确保您有适合您平台的二进制文件
  • 检查 Unix 系统上的二进制文件是否有执行权限
  • 验证没有防病毒软件阻止执行

项目生成失败:

  • 检查到 Spring Initializr 的互联网连接
  • 验证指定的依赖项是否有效
  • 确保下载目录存在且可写

MCP 连接问题:

  • 验证 Claude Desktop 配置是否正确
  • 检查二进制文件路径是否绝对且有效
  • 配置更改后重启 Claude Desktop

调试模式

使用 dev 配置文件进行增强的日志记录:

./gradlew bootRun --args='--spring.profiles.active=dev'

许可证

此项目根据 MIT 许可证发布 - 查看 LICENSE 文件了解详细信息。

致谢