Go-Zero项目生成工具

一个帮助开发者快速搭建和生成go-zero项目的MCP工具,支持API服务、RPC服务、数据库模型等多种代码生成功能。

  • by zeromicro
  • Go
  • 本地部署
  • 47 星标
  • 更新于
在 GitHub 查看 zeromicro/mcp-zero

使用说明

Go Zero MCP工具

一种模型上下文协议(MCP)工具,可帮助开发人员轻松快速构建和生成零项目。

快速开始

新加入mcp zero? 查看我们的 快速入门指南 获取入门的分步教程!

快速入门包括:

  • 安装与配置
  • 创建您的第一个API服务
  • 常见用例和工作流程
  • 与Claude Desktop集成

特性

核心服务生成

  • 创建API服务:使用可自定义的端口和样式生成新的REST API服务
  • 创建RPC服务:从protobuf定义生成gRPC服务
  • 生成API代码:将API规范文件转换为Go代码
  • 生成模型:从各种来源(MySQL、PostgreSQL、MongoDB、DDL)创建数据库模型
  • 创建API规范:生成示例API规范文件

高级功能

  • 分析项目:分析现有的归零项目,以了解结构和依赖关系
  • 管理配置:生成具有适当结构验证的配置文件
  • 生成模板:创建中间件、错误处理程序和部署模板
  • 查询文档:从其他框架中获取零排放概念和迁移指南
  • 验证输入:API规范、原型定义和配置的全面验证

先决条件

  1. 去 (1.19或更高版本)

  2. go zero命令行界面(goctl):安装 go install github.com/zeromicro/go-zero/tools/goctl@latest

  3. 克劳德桌面版 (或其他MCP兼容客户端)

有关详细的安装说明,请参阅 快速入门指南.

安装

  1. 为您的MCP工具创建一个新目录:

    mkdir go-zero-mcp && cd go-zero-mcp
    
  2. 初始化Go模块:

    go mod init go-zero-mcp
    
  3. 安装依赖项:

    go get github.com/modelcontextprotocol/go-sdk
    go get gopkg.in/yaml.v3
    
  4. 将主工具代码另存为 main.go

  5. 构建工具:

    go build -o go-zero-mcp main.go
    

Claude桌面配置

将此配置添加到您的Claude Desktop MCP设置中:

macOS

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

{
  "mcpServers": {
    "mcp-zero": {
      "command": "/path/to/your/mcp-zero",
      "env": {
        "GOCTL_PATH": "/Users/yourname/go/bin/goctl"
      }
    }
  }
}

Linux

编辑 ~/.config/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-zero": {
      "command": "/path/to/your/mcp-zero",
      "env": {
        "GOCTL_PATH": "/usr/local/bin/goctl"
      }
    }
  }
}

视窗

编辑 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-zero": {
      "command": "C:\\path\\to\\your\\mcp-zero.exe",
      "env": {
        "GOCTL_PATH": "C:\\Go\\bin\\goctl.exe"
      }
    }
  }
}

可用工具

1.create_api_service

创建一个新的gozero API服务。

参数:

  • service_name (必需):API服务的名称
  • port (可选):端口号(默认值:8888)
  • style (可选):代码样式-“go_zero”或“gozero”(默认值:“go_zero”)
  • output_dir (可选):输出目录(默认:当前目录)

2.create_rpc_service

从protobuf定义创建新的零RPC服务。

参数:

  • service_name (必需):RPC服务的名称
  • proto_content (必填):Protobuf定义内容
  • output_dir (可选):输出目录(默认:当前目录)

3.generate_api_from_spec

从API规范文件生成gozero API代码。

参数:

  • api_file (必填):.api规范文件的路径
  • output_dir (可选):输出目录(默认:当前目录)
  • style (可选):代码样式-“go_zero”或“gozero”(默认值:“go_zero”)

4.generate_model

从数据库架构生成数据库模型代码。

参数:

  • source_type (必填):源类型-“mysql”、“postgresql”、“mongo”或“ddl”
  • source (必需):数据库连接字符串或DDL文件路径
  • table (可选):特定表名(用于数据库源)
  • output_dir (可选):输出目录(默认:“./model”)

5.create_api_spec

创建示例API规范文件。

参数:

  • service_name (必需):API服务的名称
  • endpoints (必需):包含方法、路径和处理程序的端点对象数组
  • output_file (可选):输出文件路径(默认:service_name.api)

6.分析项目

分析现有的归零项目结构和依赖关系。

参数:

  • project_dir (必填):项目目录的路径
  • analysis_type (可选):分析类型-“api”、“rpc”、“模型”或“完整”(默认值:“完整”)

7.generate_config

为归零服务生成配置文件。

参数:

  • service_name (必填):服务名称
  • service_type (必填):服务类型-“api”或“rpc”
  • config_type (可选):配置类型-“dev”、“test”或“prod”(默认值:“dev)
  • output_file (可选):输出文件路径(默认:etc/{service_name}.yaml)

8.生成模板

为go zero服务生成通用代码模板。

参数:

  • template_type (必填):模板类型-“中间件”、“error_handler”、“dockerfile”、“Dockercompose”或“kubernetes”
  • service_name (必填):服务名称
  • output_path (可选):输出文件路径(根据模板类型使用默认值)

9.query_docs

查询零文档和迁移指南。

参数:

  • query (必填):关于go zero概念或迁移的自然语言查询
  • doc_type (可选):文档类型-“概念”、“迁移”或“两者”(默认值:“两者”)

10.validate_input

验证API规范、原型定义或配置文件。

参数:

  • input_type (必填):输入类型-“api_spec”、“proto”或“config”
  • content (必填):要验证的内容
  • strict (可选):启用严格验证模式(默认值:false)

用法示例

创建新的API服务

Please create a new go-zero API service called "user-service" on port 8080

创建RPC服务

Create a new go-zero RPC service called "auth-service" with this protobuf definition:

syntax = "proto3";

package auth;

option go_package = "./auth";

service AuthService {
  rpc Login(LoginRequest) returns (LoginResponse);
  rpc Logout(LogoutRequest) returns (LogoutResponse);
}

message LoginRequest {
  string username = 1;
  string password = 2;
}

message LoginResponse {
  string token = 1;
  int64 expires_at = 2;
}

message LogoutRequest {
  string token = 1;
}

message LogoutResponse {
  bool success = 1;
}

从数据库生成模型

Generate go-zero models from my MySQL database with connection string "user:password@tcp(localhost:3306)/mydb"

创建API规范

Create an API specification for a "blog-service" with these endpoints:
- GET /api/posts (handler: GetPostsHandler)
- POST /api/posts (handler: CreatePostHandler)
- GET /api/posts/:id (handler: GetPostHandler)
- PUT /api/posts/:id (handler: UpdatePostHandler)
- DELETE /api/posts/:id (handler: DeletePostHandler)

分析项目

Analyze my go-zero project in /path/to/myproject to understand its structure

正在生成配置

Generate a production configuration file for my "order-service" API service

生成模板

Generate a middleware template for my "auth-service"

查询文档

How do I implement JWT authentication in go-zero?
How do I migrate from Express.js to go-zero?

验证输入

Validate this API spec file at /path/to/service.api with strict mode enabled

项目结构

构建后,您的MCP服务器将具有以下结构:

mcp-zero/
├── main.go                    # Entry point and tool registration
├── tools/                     # Tool implementations
│   ├── create_api_service.go
│   ├── create_rpc_service.go
│   ├── generate_api.go
│   ├── generate_model.go
│   ├── create_api_spec.go
│   ├── analyze_project.go
│   ├── generate_config.go
│   ├── generate_template.go
│   ├── query_docs.go
│   └── validate_input.go
├── internal/                  # Internal packages
│   ├── analyzer/             # Project analysis
│   ├── validation/           # Input validation
│   ├── security/             # Credential handling
│   ├── templates/            # Code templates
│   ├── docs/                 # Documentation database
│   ├── logging/              # Structured logging
│   └── metrics/              # Performance metrics
└── tests/                     # Test suites
    ├── integration/
    └── unit/

建筑

MCP服务器由以下组件构建:

  • MCP-SDK:使用github/modelcontextprotocol/go-sdk实现协议
  • 运输:与Claude Desktop进行基于stdio的通信
  • 代码生成:利用go zero的goctl CLI工具生成生产就绪代码
  • 验证:安全性和正确性的全面输入验证
  • 安全:使用环境变量替换进行安全凭证处理
  • 可观测性:用于监控工具性能的内置日志记录和指标

最佳实践

  1. 服务命名:使用带连字符的小写字母(例如,“用户服务”、“auth-api”)
  2. 端口配置:为每种服务选择唯一的端口(建议使用8080-8090范围)
  3. 代码风格:坚持“go_zero”风格,与官方惯例保持一致
  4. 配置:使用特定于环境的配置(开发、测试、产品)
  5. 文档:定期查询文档,以保持与零排放最佳实践的一致性
  6. 验证:始终在生成之前验证输入,以便及早发现错误

故障排除

常见问题

  1. 找不到goctl命令:确保goctl已安装并位于您的PATH中
  2. 权限不足:确保MCP工具可执行文件具有适当的权限
  3. 数据库连接错误:验证连接字符串和数据库可访问性

调试模式

要启用调试日志记录,请设置环境变量:

export MCP_DEBUG=1

贡献

您可以随时使用其他归零功能扩展此工具,例如:

  • Docker文件生成
  • Kubernetes清单生成
  • Docker编写文件
  • API文档生成
  • 测试模板创建

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

版权所有(c)2025归零团队