SqlToCode 是一个基于 Spring Boot 3.4 与 Spring AI MCP Server Starter 构建的示例服务,提供 SQL 字段定义 → Java 实体代码 的自动化转换能力。项目通过 @Tool 注解将 SqlToCodeService 暴露为 MCP 工具,可以被兼容 MCP 协议的客户端(如 Claude、Cursor、vscode 扩展等)直接调用。
- SQL→Java 自动转换:将简化后的
CREATE TABLE字段列表转换为带@Data注解的 Java 类。 - 类型映射内置:支持
BIGINT / INT / VARCHAR / DECIMAL / DATETIME等常见 SQL 类型自动映射至 Java 类型。 - 标准 MCP 能力:已开启
tool / resource / prompt / completion能力,可通过 SSE 或 stdio 模式对接。 - 日志与配置:默认将运行日志输出到
data/log/SqlToCode.log,方便排查。
- Java 17
- Spring Boot 3.4.3
- Spring AI MCP Server & WebFlux Starter
- Lombok
- Maven
├─src/main/java/cn/maysjl/ai
│ ├─Application.java // Spring Boot 启动类
│ ├─config/ToolConfig.java // 注册 MCP ToolCallbackProvider
│ ├─model/ // 请求/响应模型
│ └─service/SqlToCodeService // 核心 SQL→Code 逻辑
├─src/main/resources/application.yml
├─data/log/SqlToCode.log
└─pom.xml
- JDK 17+
- Maven 3.9+
-
克隆与编译
git clone <repo-url> cd SqlToCode mvn clean package -DskipTests
-
运行服务
mvn spring-boot:run
默认监听
http://localhost:8701,同时暴露 MCP SSE 端点/mcp/messages。 -
MCP 客户端接入
- SSE:配置客户端指向
http://localhost:8701/mcp/messages。 - stdio:可在
application.yml中取消注释spring.main.web-application-type: none并按需调整。
- SSE:配置客户端指向
{
"codeType": "java",
"sqlTableName": "Product",
"sql": [
{ "name": "id", "type": "BIGINT" },
{ "name": "name", "type": "VARCHAR(100)" },
{ "name": "price", "type": "INT" }
]
}{
"codeType": "java",
"resCode": "import lombok.Data;\n\n@Data\npublic class Product {\n\n private Long id;\n private String name;\n private Integer price;\n}"
}server.port: 默认 8701,可自行修改。spring.ai.mcp.server.*: MCP 服务器的名称、版本、能力与 SSE 端点。按需调整instructions以向客户端描述工具用途。logging.file.name: 日志文件位置,默认落盘到data/log/SqlToCode.log。
- 修改
SqlToCodeService.sqlToJavaType可扩展类型映射。 - 通过
MethodToolCallbackProvider可以继续注册更多工具。 - 如需添加资源/提示词等 MCP 能力,可在
application.yml中开启对应配置并实现相关组件。
- 支持更多编程语言(如 Kotlin、TypeScript DTO)。
- 根据完整
CREATE TABLE语句自动解析字段列表,减少手工输入。 - 增加单元测试覆盖核心类型映射逻辑。
欢迎根据业务需要进行二次开发,如有问题可直接提 issue 或与作者联系。