Token导航 LogoToken导航TokenDH.com
code generator MCP server logo
开发工具未说明官方级别未说明来源级核验

code generator MCP server

MCP Server

基于模板的代码生成器服务,支持Handlebars和Velocity模板引擎,提供灵活的自定义规则解析能力,适用于Java代码生成和模块开发。

工具数

6

提示词数

0

GitHub Stars

0

资源数

0
代码生成开发工具TypeScriptClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

hyqf98

提供方

hyqf98

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Easy Generator MCP Server

基于模板的代码生成器 MCP 服务,支持 Handlebars 和 Velocity 模板引擎,提供灵活的自定义规则解析能力。

MCP 配置

方式一:快速配置到 Claude Code(推荐)

使用 claude mcp add 命令通过 npx 快速添加:

# 基本配置(使用当前项目内的 .code-generator 目录)
claude mcp add code-generator --scope user -- npx @hyqf98/easy_generator_mcp_server@latest

# 指定模板路径(使用环境变量)
claude mcp add code-generator --scope user -e CODE_GENERATOR_PATH=/path/to/templates -- npx @hyqf98/easy_generator_mcp_server@latest
说明: --scope user 将 MCP 配置到用户全局环境(~/.claude/settings.json),所有项目均可使用。

方式二:手动配置

编辑 Claude Code 用户配置文件 ~/.claude/settings.json

{
  "mcpServers": {
    "code-generator": {
      "command": "npx",
      "args": ["@hyqf98/easy_generator_mcp_server@latest"],
      "env": {
        "CODE_GENERATOR_PATH": "/path/to/templates"
      }
    }
  }
}

本地开发

# 克隆项目
git clone https://github.com/hyqf98/easy_generator_mcp_server.git
cd easy_generator_mcp_server

# 安装依赖
npm install

# 编译
npm run build

# 开发模式(热重载)
npm run dev

模板路径优先级

  1. 当前工作目录下的 .code-generator 目录
  2. 环境变量 CODE_GENERATOR_PATH 指定的路径

配合数据库 MCP 使用

本代码生成器可配合 easy_db_mcp_server 数据库 MCP 服务使用,直接从数据库表结构生成代码。详细配置请查看该项目的 README.md。

工具列表

工具名称描述
code_generator_list_groups列出所有模板分组
code_generator_list_templates列出指定分组的模板
code_generator_get_template_config获取模板配置(包含字段解析规则)
code_generator_generate_code生成单个模板代码
code_generator_generate_module批量生成完整模块代码(推荐)
code_generator_parse_rules解析自定义规则

工作流程

1. AI读取数据库表结构(通过数据库MCP)
          ↓
2. AI读取模板配置的 fieldParsingGuide(解析规则说明)
          ↓
3. AI根据规则从SQL注释中解析字段属性
          ↓
4. AI调用 generate_module 工具,传递解析后的参数
          ↓
5. 工具生成完整模块代码

generate_module 工具(推荐)

批量生成完整模块代码。AI需要先根据模板规则从SQL注释中解析字段属性。

参数说明:

参数必填说明
group模板分组名称,如 atom
basePackage基础包名(不包含模块名),如 io.github.atom.ai.sales.module
moduleName模块名(小写),如 project
className类名(大驼峰),如 AiProject
tableName数据库表名,如 ai_project
comment模块注释/描述
outputDirJava代码输出目录
resourcesDir资源文件输出目录(用于XML等)
fields字段列表(AI解析后的结构)
author作者
date日期
version版本号
email邮箱后缀

字段结构(AI解析后):

{
  "columnName": "project_name",     // 数据库列名(下划线命名)
  "fieldName": "projectName",       // Java字段名(驼峰命名)
  "fieldType": "String",            // Java类型(基础类型或枚举类名)
  "comment": "项目名称",             // 清理后的字段注释
  "isPrimaryKey": false,            // 是否主键
  "isQueryField": true,             // 是否查询字段
  "ignore": false,                  // 是否忽略
  "atomEnum": null,                 // Atom枚举定义(可选)
  "dict": null                      // 字典引用(可选)
}

使用示例:

{
  "group": "atom",
  "basePackage": "io.github.atom.ai.sales.module",
  "moduleName": "project",
  "className": "AiProject",
  "tableName": "ai_project",
  "outputDir": "/path/to/project/src/main/java",
  "fields": [
    { "columnName": "id", "fieldName": "id", "fieldType": "Long", "comment": "主键id", "isPrimaryKey": true },
    { "columnName": "project_name", "fieldName": "projectName", "fieldType": "String", "comment": "项目名称", "isQueryField": true },
    {
      "columnName": "project_type",
      "fieldName": "projectType",
      "fieldType": "ProjectType",
      "comment": "项目类型",
      "isQueryField": true,
      "atomEnum": {
        "name": "ProjectType",
        "valueType": "Integer",
        "values": [
          { "code": "1", "desc": "硬件销售" },
          { "code": "2", "desc": "综合项目" }
        ]
      }
    }
  ]
}

生成结果:

  • Entity (PO)、DTO、Form、Query
  • Mapper 接口和 XML
  • Service 接口和实现
  • Controller
  • 枚举类(自动从atomEnum提取)

字段解析规则说明

AI需要从模板配置的 fieldParsingGuide 中读取规则,理解如何从SQL注释中提取字段属性。

类型映射:

SQL类型Java类型
bigint, bigint unsignedLong
varchar, char, textString
tinyint, intInteger
decimalBigDecimal
dateLocalDate
datetime, timestampLocalDateTime

注释标记规则:

标记说明输入示例解析结果
Q@查询字段Q@项目名称isQueryField: true, comment: "项目名称"
自定义枚举枚举定义自定义枚举:Integer:项目类型:1(1,"硬件销售");atomEnum: {...}, fieldType: "ProjectType"
@dict字典引用@dict(USER_STATUS)dict: { code: "USER_STATUS" }
@ignore忽略字段@ignoreignore: true

示例模板

demo_template 目录下提供了示例配置代码生成器,可供参考和学习:

MyBatis-Plus 模板

demo_template/
└── mybatis-plus/              # MyBatis-Plus 代码生成模板示例
    ├── template.json          # 模板配置文件
    ├── entity.java.vm         # 实体类模板
    ├── controller.java.vm     # 控制器模板
    ├── service.java.vm        # 服务接口模板
    ├── service-impl.java.vm   # 服务实现模板
    ├── mapper.java.vm         # Mapper 接口模板
    ├── mapper.xml.vm          # Mapper XML 模板
    ├── form.java.vm           # 表单类模板
    ├── req.java.vm            # 请求类模板
    └── enum.java.vm           # 枚举类模板

Atom 框架模板

demo_template/
└── atom/                      # Atom 框架代码生成模板
    ├── template.json          # 模板配置文件
    ├── entity.java.vm         # 实体类(PO)模板
    ├── dto.java.vm            # 数据传输对象模板
    ├── form.java.vm           # 表单对象模板
    ├── query.java.vm          # 查询对象模板
    ├── mapper.java.vm         # Mapper 接口模板
    ├── mapper.xml.vm          # Mapper XML 模板
    ├── service.java.vm        # 服务接口模板
    ├── serviceImpl.java.vm    # 服务实现模板
    ├── controller.java.vm     # 控制器模板
    ├── converter.java.vm      # MapStruct 转换器模板
    └── enum.java.vm           # 枚举类模板

Atom 框架特有规则

Atom 框架模板支持以下特有规则:

规则语法说明
queryFieldQ@字段描述标记字段为查询字段,将生成到 Query 类中
atomEnum自定义枚举:类型:枚举名:值列表;解析 Atom 框架枚举定义

Atom 枚举规则示例:

SQL 注释格式:

project_type tinyint default 1 not null comment 'Q@自定义枚举:Integer:项目类型:1(1, "硬件销售"),2(2, "综合项目");'

解析结果:

{
  "comment": "项目类型",
  "rules": {
    "isQueryField": true,
    "atomEnum": {
      "valueType": "Integer",
      "name": "ProjectType",
      "values": [
        { "code": "1", "desc": "硬件销售" },
        { "code": "2", "desc": "综合项目" }
      ]
    }
  }
}

使用示例模板:

# 复制 MyBatis-Plus 示例模板到项目目录
cp -r demo_template/mybatis-plus .code-generator/

# 或复制 Atom 框架模板
cp -r demo_template/atom .code-generator/

# 或指定示例模板路径
export CODE_GENERATOR_PATH=/path/to/demo_template/atom

Template.json 标准模板配置

目录结构

.code-generator/
├── java/                      # 分组名称
│   ├── template.json          # 分组配置文件
│   ├── entity.hbs             # Handlebars 模板
│   ├── controller.hbs
│   └── mapperXml.vm           # Velocity 模板

Template.json 字段说明

{
  "name": "java",                    // 分组名称(必填)
  "description": "Java 标准代码生成模板",  // 分组描述(可选)
  "version": "1.0.0",                // 版本号(可选)
  "templates": [...],                // 模板列表(必填)
  "rules": [...]                     // 自定义规则列表(可选)
}

Templates 字段详解

{
  "name": "entity",                  // 模板名称(必填),用于调用时指定
  "file": "entity.hbs",              // 模板文件名(必填),支持 .hbs 和 .vm
  "description": "生成 Java 实体类",  // 模板描述(可选)
  "inputParams": [...],              // 输入参数定义(可选)
  "output": {...}                    // 输出配置(可选)
}

InputParams 参数定义

{
  "name": "fields",                  // 参数名称(必填)
  "type": "array",                   // 参数类型:string/number/boolean/array/object
  "required": true,                  // 是否必填(可选,默认 false)
  "description": "字段列表",          // 参数描述(可选)
  "defaultValue": [],                // 默认值(可选)
  "items": {...},                    // 数组元素结构(type=array 时)
  "properties": [...],               // 对象属性列表(type=object 时)
  "example": [...]                   // 示例值(可选,帮助 AI 理解格式)
}

Output 输出配置

{
  "extension": ".java",              // 输出文件扩展名
  "suffix": "Entity",                // 文件名后缀
  "prefix": "",                      // 文件名前缀
  "namingRule": "PascalCase",        // 命名规则:PascalCase/camelCase/snake_case/kebab-case
  "pathTemplate": "src/main/java/{{packageName}}/{{className}}.java"
}

Rules 规则定义

{
  "name": "enum",                    // 规则名称
  "pattern": "@enum\\(([\\w]+):([^)]+)\\)",  // 正则表达式
  "description": "解析枚举定义",      // 规则描述
  "params": [                        // 正则捕获组参数
    { "name": "enumName", "group": 1, "description": "枚举名称" },
    { "name": "values", "group": 2, "separator": ",", "description": "枚举值列表" }
  ],
  "parse": {                         // 解析配置
    "valueFormat": "{code}:{desc}",  // 值格式
    "output": {                      // 输出映射
      "name": "enumName",
      "values": [
        { "code": "valueCode", "desc": "valueDesc" }
      ]
    }
  }
}

完整配置示例

Java 标准模板配置

{
  "name": "java",
  "description": "Java 标准代码生成模板",
  "version": "1.0.0",
  "templates": [
    {
      "name": "entity",
      "file": "entity.hbs",
      "description": "生成 Java 实体类代码",
      "inputParams": [
        { "name": "className", "type": "string", "required": true, "description": "类名" },
        { "name": "packageName", "type": "string", "required": true, "description": "包名" },
        { "name": "tableName", "type": "string", "required": true, "description": "表名" },
        { "name": "comment", "type": "string", "required": false, "description": "类注释" },
        {
          "name": "fields",
          "type": "array",
          "required": true,
          "description": "字段列表",
          "items": {
            "type": "object",
            "properties": [
              { "name": "name", "type": "string", "required": true, "description": "字段名称(驼峰命名)" },
              { "name": "columnName", "type": "string", "required": true, "description": "数据库列名" },
              { "name": "type", "type": "string", "required": true, "description": "Java类型" },
              { "name": "comment", "type": "string", "required": false, "description": "字段注释" },
              { "name": "primaryKey", "type": "boolean", "required": false, "description": "是否主键" },
              { "name": "autoIncrement", "type": "boolean", "required": false, "description": "是否自增" },
              { "name": "nullable", "type": "boolean", "required": false, "description": "是否允许为空" },
              { "name": "length", "type": "number", "required": false, "description": "字段长度" }
            ]
          },
          "example": [
            { "name": "id", "columnName": "id", "type": "Long", "comment": "主键ID", "primaryKey": true },
            { "name": "userName", "columnName": "user_name", "type": "String", "comment": "用户名" }
          ]
        }
      ],
      "output": {
        "extension": ".java",
        "namingRule": "PascalCase"
      }
    }
  ],
  "rules": [
    {
      "name": "enum",
      "pattern": "@enum\\(([\\w]+):([^)]+)\\)",
      "description": "解析字段 comment 中的枚举定义",
      "params": [
        { "name": "enumName", "group": 1, "description": "枚举名称" },
        { "name": "values", "group": 2, "separator": ",", "description": "枚举值列表" }
      ],
      "parse": {
        "valueFormat": "{code}:{desc}",
        "output": {
          "name": "enumName",
          "values": [
            { "code": "valueCode", "desc": "valueDesc" }
          ]
        }
      }
    }
  ]
}

自定义规则示例

内置规则

服务内置以下规则,可直接使用:

规则语法说明
enum@enum(名称:值1:描述1,值2:描述2)解析枚举定义
dict@dict(字典编码)解析字典引用
ignore@ignore标记字段忽略生成

枚举规则示例

输入数据:

{
  "className": "User",
  "fields": [
    {
      "name": "gender",
      "type": "Integer",
      "comment": "性别 @enum(GENDER:1:男,2:女)"
    }
  ]
}

解析结果:

{
  "original": { "comment": "性别 @enum(GENDER:1:男,2:女)" },
  "parsed": {
    "comment": "性别",
    "_rules": {
      "enum": {
        "name": "GENDER",
        "values": [
          { "code": "1", "desc": "男" },
          { "code": "2", "desc": "女" }
        ]
      }
    }
  }
}

字典规则示例

输入数据:

{
  "fields": [
    {
      "name": "status",
      "comment": "状态 @dict(USER_STATUS)"
    }
  ]
}

解析结果:

{
  "parsed": {
    "comment": "状态",
    "_rules": {
      "dict": { "code": "USER_STATUS" }
    }
  }
}

自定义规则示例

template.json 中添加自定义规则:

{
  "rules": [
    {
      "name": "validation",
      "pattern": "@validation\\(([^)]+)\\)",
      "description": "解析字段验证规则",
      "params": [
        { "name": "rules", "group": 1, "separator": ";" }
      ],
      "parse": {
        "separator": ":",
        "output": {
          "rules": [
            { "type": "ruleType", "value": "ruleValue" }
          ]
        }
      }
    },
    {
      "name": "encrypt",
      "pattern": "@encrypt\\(([\\w]+)\\)",
      "description": "标记字段需要加密",
      "params": [
        { "name": "algorithm", "group": 1 }
      ],
      "output": {
        "encrypted": true,
        "algorithm": "algorithm"
      }
    }
  ]
}

使用自定义规则:

{
  "fields": [
    {
      "name": "phone",
      "comment": "手机号 @validation(required;mobile) @encrypt(AES)"
    }
  ]
}

使用示例

1. 查看可用分组

调用 code_generator_list_groups

2. 查看分组下的模板

调用 code_generator_list_templates
参数: { "group": "java" }

3. 获取模板详细配置

调用 code_generator_get_template_config
参数: { "group": "java", "template": "entity" }

4. 生成代码

调用 code_generator_generate_code
参数: {
  "group": "java",
  "template": "entity",
  "data": {
    "className": "User",
    "packageName": "com.example.entity",
    "tableName": "sys_user",
    "comment": "用户实体",
    "fields": [
      { "name": "id", "columnName": "id", "type": "Long", "comment": "主键", "primaryKey": true },
      { "name": "userName", "columnName": "user_name", "type": "String", "comment": "用户名" },
      { "name": "gender", "columnName": "gender", "type": "Integer", "comment": "性别 @enum(GENDER:1:男,2:女)" }
    ]
  },
  "outputPath": "./output/User.java"
}

开发命令

# 开发模式(热重载)
npm run dev

# 编译
npm run build

# 使用 MCP Inspector 测试
npm run inspector

许可证

MIT

目录标签

目录标签

代码生成开发工具TypeScriptClaude本地部署模板引擎Java开发自动化工具开发效率

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

6

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP