🚀 Go-Zero MCP 工具
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 定义和配置进行全面验证。
📦 安装指南
前提条件
- Go(版本 1.19 或更高)
- Go-Zero CLI(goctl):使用命令
go install github.com/zeromicro/go-zero/tools/goctl@latest 进行安装。
- Claude Desktop(或其他支持 MCP 的客户端)
详细的安装说明,请参阅 快速开始指南。
安装步骤
- 为 MCP 工具创建一个新目录:
mkdir go-zero-mcp && cd go-zero-mcp
- 初始化 Go 模块:
go mod init go-zero-mcp
- 安装依赖项:
go get github.com/modelcontextprotocol/go-sdk
go get gopkg.in/yaml.v3
- 将主工具代码保存为
main.go。
- 构建工具:
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/claude_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"
}
}
}
}
💻 使用示例
创建新的 API 服务
请创建一个名为 "user-service" 的新 Go-Zero API 服务,端口为 8080
创建 RPC 服务
使用以下 Protobuf 定义创建一个名为 "auth-service" 的新 Go-Zero RPC 服务:
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 数据库(连接字符串为 "user:password@tcp(localhost:3306)/mydb")生成 Go-Zero 模型
创建 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 规范文件
📚 详细文档
可用工具
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)
项目结构
构建完成后,你的 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 实现协议。
- 传输:基于标准输入输出与 Claude Desktop 进行通信。
- 代码生成:借助 Go-Zero 的 goctl CLI 工具生成生产就绪的代码。
- 验证:进行全面的输入验证,确保安全性和正确性。
- 安全:通过环境变量替换安全处理凭证。
- 可观测性:内置日志记录和指标,用于监控工具性能。
最佳实践
- 服务命名:使用小写字母和连字符(例如,"user-service"、"auth-api")。
- 端口配置:为每个服务选择唯一的端口(建议范围:8080 - 8090)。
- 代码风格:遵循 "go_zero" 风格,以保持与官方约定一致。
- 配置管理:使用特定环境的配置(开发、测试、生产)。
- 文档查询:定期查询文档,以遵循 Go-Zero 最佳实践。
- 输入验证:在生成代码之前始终验证输入,以便尽早捕获错误。
故障排除
常见问题
- 找不到 goctl 命令:确保 goctl 已安装,并已添加到系统的 PATH 环境变量中。
- 权限被拒绝:确保 MCP 工具可执行文件具有正确的权限。
- 数据库连接错误:验证连接字符串和数据库的可访问性。
调试模式
要启用调试日志记录,请设置环境变量:
export MCP_DEBUG=1
贡献
欢迎扩展此工具,添加更多 Go-Zero 特性,例如:
- Dockerfile 生成
- Kubernetes 清单文件生成
- Docker Compose 文件创建
- API 文档生成
- 测试模板创建
📄 许可证
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。
版权所有 (c) 2025 Go-Zero 团队