返回市场
麦普零号

麦普零号

作者:zeromicro8 星标更新:2025-11-16

项目介绍

Go-Zero MCP 工具

一个模型上下文协议(MCP)工具,帮助开发者快速搭建并生成 go-zero 项目。

快速开始

首次使用 mcp-zero? 查看我们的快速入门指南,了解逐步教程!

快速入门包括:

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

功能

核心服务生成

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

高级功能

  • 分析项目:分析现有的 go-zero 项目以理解结构和依赖关系
  • 管理配置:生成具有适当结构验证的配置文件
  • 生成模板:创建中间件、错误处理器和部署模板
  • 查询文档:访问 go-zero 概念和从其他框架迁移的指南
  • 验证输入:对 API 规范、protobuf 定义和配置进行全面验证

先决条件

  1. Go (1.19 或更高版本)

  2. go-zero CLI (goctl):通过 go install github.com/zeromicro/go-zero/tools/goctl@latest 安装

  3. Claude Desktop (或其他兼容 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 Desktop 配置

在您的 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/claclude_desktop_config.json

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

Windows

编辑 %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

创建一个新的 go-zero API 服务。

参数:

  • service_name (必需):API 服务名称
  • port (可选):端口号 (默认:8888)
  • style (可选):代码风格 - "go_zero" 或 "gozero" (默认:"go_zero")
  • output_dir (可选):输出目录 (默认:当前目录)

2. create_rpc_service

根据 protobuf 定义创建一个新的 go-zero RPC 服务。

参数:

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

3. generate_api_from_spec

根据 API 规范文件生成 go-zero 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. analyze_project

分析现有 go-zero 项目的结构和依赖关系。

参数:

  • project_dir (必需):项目目录路径
  • analysis_type (可选):分析类型 - "api"、"rpc"、"model" 或 "full" (默认:"full")

7. generate_config

为 go-zero 服务生成配置文件。

参数:

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

8. generate_template

为 go-zero 服务生成常见代码模板。

参数:

  • template_type (必需):模板类型 - "middleware"、"error_handler"、"dockerfile"、"docker_compose" 或 "kubernetes"
  • service_name (必需):服务名称
  • output_path (可选):输出文件路径 (基于模板类型使用默认值)

9. query_docs

查询 go-zero 文档和迁移指南。

参数:

  • query (必需):关于 go-zero 概念或迁移的自然语言查询
  • doc_type (可选):文档类型 - "concept"、"migration" 或 "both" (默认:"both")

10. validate_input

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

参数:

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

使用示例

创建一个新的 API 服务

请创建一个名为 "user-service" 的新 go-zero API 服务,并将其绑定到端口 8080

创建一个 RPC 服务

创建一个名为 "auth-service" 的新 go-zero RPC 服务,使用以下 protobuf 定义:

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;
}

从数据库生成模型

从我的 MySQL 数据库生成 go-zero 模型,连接字符串为 "user:password@tcp(localhost:3306)/mydb"

创建 API 规范

为 "blog-service" 创建一个 API 规范,包含以下端点:
- GET /api/posts (处理器:GetPostsHandler)
- POST /api/posts (处理器:CreatePostHandler)
- GET /api/posts/:id (处理器:GetPostHandler)
- PUT /api/posts/:id (处理器:UpdatePostHandler)
- DELETE /api/posts/:id (处理器:DeletePostHandler)

分析项目

分析我在 /path/to/myproject 的 go-zero 项目以了解其结构

生成配置

为我的 "order-service" API 服务生成生产配置文件

生成模板

为我的 "auth-service" 生成中间件模板

查询文档

如何在 go-zero 中实现 JWT 认证?
如何从 Express.js 迁移到 go-zero?

验证输入

验证位于 /path/to/service.api 的 API 规范文件,并启用严格模式

项目结构

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

mcp-zero/
├── main.go                    # 入口点和工具注册
├── tools/                     # 工具实现
│   ├── 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/                  # 内部包
│   ├── analyzer/             # 项目分析
│   ├── validation/           # 输入验证
│   ├── security/             # 凭据处理
│   ├── templates/            # 代码模板
│   ├── docs/                 # 文档数据库
│   ├── logging/              # 结构化日志
│   └── metrics/              # 性能指标
└── tests/                     # 测试套件
    ├── integration/
    └── unit/

架构

MCP 服务器构建于:

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

最佳实践

  1. 服务命名:使用小写加连字符 (例如:"user-service"、"auth-api")
  2. 端口配置:选择每个服务的独特端口 (推荐范围 8080-8090)
  3. 代码风格:坚持 "go_zero" 风格以符合官方惯例
  4. 配置:使用环境特定的配置 (dev、test、prod)
  5. 文档:定期查询文档以保持与 go-zero 最佳实践的一致性
  6. 验证:在生成之前始终验证输入以尽早捕获错误

故障排除

常见问题

  1. goctl 命令未找到:确保 goctl 已安装并在您的 PATH 中
  2. 权限被拒绝:确保 MCP 工具可执行文件具有适当的权限
  3. 数据库连接错误:验证连接字符串和数据库可达性

调试模式

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

export MCP_DEBUG=1

贡献

欢迎扩展此工具,增加更多 go-zero 特性,如:

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

许可证

MIT 许可证 - 详情请参阅LICENSE文件。

版权所有 (c) 2025 go-zero 团队