Spring数据存储库MCP工具生成器

MCP Scaffold分析现有的Spring Boot应用程序并生成带有@McpTool注解的包装类,通过模型上下文协议将存储库和服务暴露给AI助手。

  • by arvindand
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 arvindand/mcp-scaffold

使用说明

MCP脚手架

将您的Spring数据存储库转化为支持AI的MCP工具

MCP脚手架分析您现有的Spring Boot应用程序并生成 @McpTool-带注释的包装类,通过 模型上下文协议.

文档

指南 说明
入门指南 分步设置指南
配置参考 解释了所有YAML选项
运作原理 架构和内部

为什么选择MCP支架?

  • 零手动注释 --使用现有代码,无需更改
  • 智能描述 --从Javadoc、方法名和实体元数据自动生成
  • 只读检测 --自动识别安全操作
  • 可再生 --每当代码发生更改时再次运行

谁应该使用这个

MCP脚手架设计用于:

  • Spring Boot+Spring Data JPA应用程序 希望将数据暴露给AI助手
  • 拥有现有存储库的团队 希望快速生成MCP工具
  • 读取繁重的查询工作负载 AI助手需要访问数据库

目前不支持:

  • MongoDB、R2DBC或其他非JPA数据层
  • Gradle项目(仅限Maven)
  • 自定义业务逻辑综合

快速开始

1.添加插件和依赖项

<dependencies>
    <!-- MCP Annotations (required for generated code) -->
    <dependency>
        <groupId>org.springaicommunity</groupId>
        <artifactId>mcp-annotations</artifactId>
        <version>0.8.0</version>
    </dependency>
    
    <!-- Spring AI MCP Server -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>io.github.arvindand</groupId>
            <artifactId>mcp-scaffold-maven-plugin</artifactId>
            <version>0.1.3</version>
            <executions>
                <execution>
                    <goals>
                        <goal>generate</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

2.生成配置

mvn mcp-scaffold:suggest
mv mcp-scaffold-suggested.yaml mcp-scaffold.yaml

3.建造

mvn compile

您的MCP工具生成于 target/generated-sources/mcp --准备好让AI助手使用了!

完整设置指南→

生成什么?

给定此存储库:

@Repository
public interface OwnerRepository extends JpaRepository<Owner, Long> {
    /**
     * Find owners by last name (case-insensitive, partial match).
     */
    List<Owner> findByLastNameContainingIgnoreCase(String lastName);
}

MCP脚手架生成:

@Component
public class OwnerRepositoryMcpTools {

    @McpTool(
        name = "owner_find_by_last_name_containing_ignore_case",
        description = "Find owners by last name (case-insensitive, partial match). " +
                      "Returns Owner with: id, firstName, lastName, address, city, telephone. [Read-only]"
    )
    public List<Owner> findByLastNameContainingIgnoreCase(
        @McpToolParam(description = "The last name to search for", required = true) 
        String lastName
    ) {
        return ownerRepository.findByLastNameContainingIgnoreCase(lastName);
    }
}

生成的描述包括:

  • Javadoc评论
  • 实体字段信息
  • 枚举参数的枚举值
  • 只读标记

参见宠物诊所示例→

配置

创建 mcp-scaffold.yaml 在项目根目录中(或使用 mvn mcp-scaffold:suggest 生成一个):

mcp:
  scaffold:
    scan:
      packages:
        - com.example.repository
        - com.example.service
    filter:
      include-patterns:
        - "*Repository"
        - "*Service"
      exclude-methods:
        - flush
        - deleteAll
    descriptions:
      include-javadoc: true
      include-entity-fields: true
      include-enum-values: true

完整配置参考→

试试看

这 宠物诊所示例 是一个完整的工作演示,您可以运行:

./mvnw clean install
./mvnw -pl mcp-scaffold-examples/petclinic-mcp spring-boot:run

然后将Claude Desktop或任何MCP客户端连接到 http://localhost:8080/mcp.

带有测试说明的完整示例→

需求

组件 版本 注释
Java 21+ 必填
Maven 3.9+ Gradle尚不支持
Spring Boot 3.x 使用3.2+进行测试
Spring AI 1.1.2+ 使用MCP服务器启动器
mcp注释 0.8.0 来自spring ai社区

当前限制

  • 仅限Maven --计划支持Gradle插件
  • 仅限JPA存储库 --不支持MongoDB、R2DBC、自定义DAO
  • 无自定义方法合成 --仅包装现有的存储库/服务方法
  • 仅限Java 21+ --目前不支持Java 17

从源头构建

git clone https://github.com/arvindand/mcp-scaffold.git
cd mcp-scaffold
./mvnw clean install

安全注意事项

重要提示: 生成的MCP工具提供对数据层的直接访问。

  • 无内置身份验证 --默认情况下,工具绕过Spring Security
  • 完全读/写访问 --AI助手可以调用任何公开的存储库方法
  • 使用 exclude-methods --过滤危险操作,如 deleteAll, save, flush

用于生产用途:

  • 仅向AI公开只读存储库
  • 使用 filter.exclude-methods 配置以阻止写入操作
  • 考虑用身份验证中间件包装MCP服务器

许可证

Apache许可证2.0——请参阅 许可证 了解详情。


作者 阿尔温德·梅农