使用说明
Go MCP服务器启动器
用于在Go中构建模型上下文协议(MCP)服务器的生产就绪启动模板。
特性
- 使用stdio传输的官方Go MCP SDK引导
- 干净的架构,为工具、资源和提示提供单独的注册表
- 服务层设计(精简MCP处理程序、可测试的业务逻辑)
- 集中的错误处理和可重用的验证助手
- 结构化JSON日志记录
log/slog .env支持类型化配置解析+验证- 优雅关闭
SIGINT/SIGTERM具有可配置的超时 - 使用小型无发行版运行时映像的多阶段Docker构建
项目布局
cmd/server:应用程序入口点和生命周期管理config:.env加载、环境解析和配置验证internal/app:MCP服务器引导和注册连接internal/service:业务逻辑服务internal/errors:集中式应用程序错误模型+MCP工具保护internal/validation:可重用的输入验证助手tools:MCP工具和集中式工具注册表resources:MCP资源和集中式资源注册表prompts:MCP提示和集中式提示注册表logging:结构化记录器包装器tests:服务和工具测试
配置
支持的环境变量:
MCP_SERVER_NAME(默认值:go-mcp-server)MCP_SERVER_VERSION(默认值:0.1.0)MCP_ENV(默认值:development)允许:development|staging|production|testMCP_LOG_LEVEL(默认值:info)允许:debug|info|warn|errorMCP_PORT(默认值:8080)MCP_SHUTDOWN_TIMEOUT(默认值:10s)MCP_ENV_FILE(默认值:.env)
使用 .env.example 作为你的模板。
在本地运行
- 复制环境模板:
cp .env.example .env
- 启动服务器:
go run ./cmd/server
运行测试
go test ./...
MCP工具示例
包括入门工具:
greet:按名称问候用户health_check:服务器状态、UTC时间戳、服务器名称/版本calculator:带验证和错误的算术echo:返回标准化文本+长度server_time:当前UTC时间+unix时间戳
码头工人
构建图像:
docker build -t go-mcp-server:latest .
运行容器(stdio MCP,保持stdin打开):
docker run --rm -i --env-file .env go-mcp-server:latest
内联env变量示例:
docker run --rm -i \
-e MCP_SERVER_NAME=go-mcp-server \
-e MCP_SERVER_VERSION=0.1.0 \
-e MCP_ENV=production \
-e MCP_LOG_LEVEL=info \
-e MCP_PORT=8080 \
-e MCP_SHUTDOWN_TIMEOUT=10s \
go-mcp-server:latest
学分
由以下人员为此项目创建 glen0xFFF.
