使用说明
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——请参阅 许可证 了解详情。
作者 阿尔温德·梅农