Go MCP服务器模板

一个用于构建Go语言Model Context Protocol(MCP)服务器的生产就绪模板,提供标准化的开发结构和工具。

  • by glen0xFFF
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 glen0xFFF/go-mcp-server

使用说明

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|test
  • MCP_LOG_LEVEL (默认值: info)允许: debug|info|warn|error
  • MCP_PORT (默认值: 8080)
  • MCP_SHUTDOWN_TIMEOUT (默认值: 10s)
  • MCP_ENV_FILE (默认值: .env)

使用 .env.example 作为你的模板。

在本地运行

  1. 复制环境模板:
cp .env.example .env
  1. 启动服务器:
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.