关于 Golang Mcp Server
Golang Mcp Server 为 Go 项目开发者提供 MCP 工具,供 AI 助手执行代码、构建、测试和分析项目。除 Go 工作流工具外,还提供项目资源、操作提示词及可选的 LSP 支持。
主要功能
- 01运行 Go 文件并构建项目
- 02测试、格式化和管理模块
- 03性能分析、基准测试与竞态检测
- 04启动和管理后台服务器
- 05检索 Go 包文档与示例
- 06可选 LSP 工具
适用场景
- 01让 AI 助手运行 Go 代码和测试
- 02分析性能并排查竞态问题
- 03查询依赖包文档和代码示例
- 04通过 LSP 获取项目诊断
MCP 相关
该 MCP 服务向 AI 客户端公开 Go 执行与开发工具、项目资源和指导提示词。启用 ENABLE_LSP=true 后,还可提供 LSP 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP Go Server
MCP Go Server 是一个模型上下文协议(MCP)服务实现,旨在为 AI 助手提供全面的工具,用于执行、优化和管理 Go 项目。该项目充当 AI 助手(如 Claude)与 Go 运行时之间的桥梁,使 AI 能够与基于 Go 的开发工作流交互并对其进行控制。
目录
- 快速开始
- 功能特性
- 快速参考
- 前置条件
- 安装方式
- 平台专属指南(36 个平台,点击展开)
- 配置
- 故障排除(点击展开)
- 常见问题
- 可用工具(点击展开查看详细文档)
- 可用资源
- 可用提示词
- 使用示例(点击展开)
- 资源用法
- 高级模式(点击展开)
- 安全注意事项
- 许可证
- 贡献(开发指南请参阅 CONTRIBUTING.md)
- 更新日志
快速开始
选择你的平台,快速开始:
常用平台
- Claude Desktop - 最受欢迎的桌面应用
- Cursor - AI 驱动的代码编辑器
- VS Code - 支持 MCP 的热门代码编辑器
- Docker - 基于容器的安装方式
- 预编译二进制文件 - 直接下载二进制文件
安装方式
- Go Install - 通过 Go 工具链安装(推荐)
- 从源代码安装 - 从 GitHub 仓库构建
- 预编译二进制文件 - 下载现成的二进制文件
- Docker - 使用容器化版本
开始前的准备
- Go 1.24 或更高版本 - 使用
go version检查 - Git - 用于克隆仓库(如果从源代码构建)
快速参考表
平台兼容性
| 平台 | macOS | Windows | Linux | 难度 |
|---|---|---|---|---|
| Claude Desktop | ✅ | ✅ | ✅ | ⭐ 简单 |
| Cursor | ✅ | ✅ | ✅ | ⭐ 简单 |
| VS Code | ✅ | ✅ | ✅ | ⭐ 简单 |
| Docker | ✅ | ✅ | ✅ | ⭐⭐ 中等 |
| JetBrains IDEs | ✅ | ✅ | ✅ | ⭐⭐ 中等 |
| Windsurf | ✅ | ✅ | ✅ | ⭐ 简单 |
| Zed | ✅ | ✅ | ✅ | ⭐ 简单 |
安装方式对比
| 方式 | 速度 | 需要 Go | 需要 Docker | 适用对象 |
|---|---|---|---|---|
| Go Install | ⚡ 快 | ✅ 是 | ❌ 否 | 大多数用户 |
| 预编译二进制文件 | ⚡ 快 | ❌ 否 | ❌ 否 | 未安装 Go 的用户 |
| 从源代码安装 | 🐌 较慢 | ✅ 是 | ❌ 否 | 开发人员 |
| Docker | ⚡ 快 | ❌ 否 | ✅ 是 | 容器环境 |
各操作系统的配置文件位置
| 平台 | macOS | Windows | Linux |
|---|---|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json | %APPDATA%\Claude\claude_desktop_config.json | ~/.config/Claude/claude_desktop_config.json |
| VS Code | ~/.vscode/settings.json 或工作区 .vscode/settings.json | %APPDATA%\Code\User\settings.json | ~/.config/Code/User/settings.json |
| Cursor | ~/.cursor/settings.json | %APPDATA%\Cursor\User\settings.json | ~/.config/Cursor/User/settings.json |
常见问题快速修复
| 问题 | 快速修复 |
|---|---|
| 找不到命令 | 添加到 PATH:export PATH=$PATH:$HOME/go/bin |
| 权限被拒绝 | chmod +x /path/to/mcp-go |
| 配置未生效 | 验证 JSON、检查路径并重启客户端 |
| 未显示工具 | 重启客户端、验证配置并检查日志 |
| LSP 不可用 | 安装 gopls:go install golang.org/x/tools/gopls@latest |
快速参考
工具(共 22 个)
代码执行(1 个):
go_run- 直接执行 Go 文件
Go 操作(7 个):
go_build- 构建 Go 包go_test- 运行测试并生成覆盖率go_fmt- 格式化 Go 代码go_mod- 管理 Go 模块go_doc- 生成文档go_lint- 检查 Go 代码go_cross_compile- 为不同平台交叉编译
优化(6 个):
go_profile- 生成性能分析文件go_trace- 生成执行跟踪记录go_benchmark- 运行基准测试go_race_detect- 检测竞态条件go_memory_profile- 生成内存分析文件go_optimize_suggest- 获取优化建议
服务管理(5 个):
go_server_start- 启动后台服务go_server_stop- 停止服务go_server_list- 列出正在运行的服务go_server_logs- 获取服务日志go_server_status- 获取服务状态
包文档(3 个):
go_pkg_docs- 从 go.dev 获取包文档go_pkg_search- 搜索包go_pkg_examples- 提取示例
LSP 工具(5 个,可选 - 需要 ENABLE_LSP=true):
lsp_start_session- 启动 LSP 会话lsp_shutdown_session- 关闭 LSP 会话lsp_request- 发送 LSP 请求lsp_notify- 发送 LSP 通知lsp_subscribe_diagnostics- 订阅诊断信息
资源(共 8 个)
go://modules- Go 模块和依赖项go://build-tags- 构建标签和约束go://tests- 测试文件和基准测试go://workspace- 工作区结构go://pkg-docs/{path}- 包文档go://tools- 列出所有可用工具go://prompts- 列出所有可用提示词go://resources- 列出所有可用资源
提示词(共 7 个)
setup-go-project- 项目设置指南write-go-tests- 编写测试模板optimize-go-performance- 性能优化指南debug-go-issue- 调试指南add-go-dependency- 依赖管理指南go-code-review- 代码审查清单go-server-deployment- 部署指南
功能
- 22 个全面的工具:代码执行、Go 操作、优化、服务管理、包文档和可选的 LSP 支持
- 8 个发现资源:访问 Go 模块、构建标签、测试、工作区结构和包文档
- 7 个引导式提示词:项目设置、测试、优化、调试、依赖项、代码审查和部署的分步指南
- 代码执行:直接使用
go run执行 Go 文件 - Go 操作:构建、测试、格式化和管理 Go 模块
- 优化工具:性能分析、基准测试和竞态检测
- 服务管理:启动、停止和监控长期运行的 Go 服务
- 包文档:从 go.dev(pkg.go.dev)获取包文档
- 项目发现:发现 Go 模块、构建标签、测试文件和工作区结构
- LSP 支持:可选的语言服务器协议集成(需要
ENABLE_LSP=true) - 跨平台:支持 Linux、macOS 和 Windows
- 交叉编译:针对不同平台和架构进行构建
先决条件
必需:
- Go 1.24 或更高版本 - 使用
go version检查 - Git - 用于克隆仓库(从源代码构建时)
✅ 验证先决条件:
go version # Should show go1.24 or higher
git --version # Should show git version
安装方式
选择最适合你的安装方式:
| 方式 | 适用对象 | 速度 | 难度 |
|---|---|---|---|
| Go Install | 大多数用户 | ⚡ 快 | ⭐ 简单 |
| 预构建二进制文件 | 无需 Go | ⚡ 快 | ⭐ 简单 |
| 从源代码构建 | 开发 | 🐌 较慢 | ⭐⭐ 中等 |
| Docker | 容器 | ⚡ 快 | ⭐⭐ 中等 |
使用 Go Install
✅ 推荐给大多数用户
步骤:
- 运行安装命令:
go install github.com/inja-online/golang-mcp/cmd/mcp-go@latest
- 验证安装:
mcp-go --version
**✅ 成功:**你应该会看到版本号(例如,mcp-go v0.0.1)
**💡 提示:**二进制文件将安装到 $GOPATH/bin 或 $HOME/go/bin。请确保此路径已添加到 PATH 中。
⚠️ 故障排除:
- 如果找不到
mcp-go命令,请将$HOME/go/bin添加到 PATH 中 - 在 macOS/Linux 上:
export PATH=$PATH:$HOME/go/bin - 在 Windows 上:将
%USERPROFILE%\go\bin添加到 PATH 中
从源代码构建
🔧 适用于开发或自定义构建
步骤:
- 克隆仓库:
git clone https://github.com/inja-online/golang-mcp.git
cd golang-mcp
- 构建项目:
make build
- 验证安装:
./bin/mcp-go --version
**✅ 成功:**二进制文件将位于 bin/ 目录中
**💡 提示:**如果没有 make,也可以使用 go build -o mcp-go ./cmd/mcp-go
使用预构建二进制文件
✅ 最快的方式——无需安装 Go
步骤:
-
从发布页面下载
-
适用于 Linux/macOS:
curl -L https://github.com/inja-online/golang-mcp/releases/latest/download/golang-mcp_Linux_x86_64.tar.gz | tar xz
sudo mv mcp-go /usr/local/bin/
- 适用于 Windows:
- 下载适用于 Windows 的
.zip文件 - 解压并将
mcp-go.exe移到 PATH 中的某个目录(例如,C:\Program Files\mcp-go\)
- 验证安装:
mcp-go --version
**✅ 成功:**你应该会看到版本号
**💡 提示:**选择与你的操作系统和架构相匹配的二进制文件(Linux/macOS/Windows,x86_64/arm64)
使用 Docker
🔧 适用于容器化环境
从 GitHub Container Registry 拉取
步骤:
- 拉取镜像:
docker pull ghcr.io/inja-online/golang-mcp:latest
- 验证:
docker images | grep golang-mcp
**✅ 成功:**你应该会看到列出的镜像
从源代码构建
步骤:
- 克隆并构建:
git clone https://github.com/inja-online/golang-mcp.git
cd golang-mcp
docker build -t mcp-go:latest .
- 验证:
docker images | grep mcp-go
**✅ 成功:**你应该会看到列出的镜像
使用 Docker 运行
基本用法:
docker run -it --rm \
-v $(pwd):/workspace \
-w /workspace \
mcp-go:latest
使用 docker-compose:
docker-compose up
Docker Compose 配置
项目包含一个用于本地开发的 docker-compose.yml:
命令:
docker-compose up # Start the server
docker-compose up --build # Build and start
docker-compose up -d # Run in detached mode
docker-compose logs -f # View logs
docker-compose down # Stop the server
**✅ 成功:**服务应在没有错误的情况下启动
Docker 镜像包含:
- 用于减小体积的 Alpine Linux 基础镜像
- Go 运行时环境
- 预配置的工作目录
- 环境变量支持
配置
🔧 使用环境变量或配置文件设置来配置 MCP Go 服务。
可以使用环境变量配置服务:
export DISABLE_NOTIFICATIONS=true # Disable permission prompts
export DEBUG_MCP=true # Enable debug logging
export ENABLE_LSP=true # Enable LSP tools (optional)
export GOROOT=/path/to/go # Custom GOROOT
export GOPATH=/path/to/gopath # Custom GOPATH
export GOOS=linux # Target OS for cross-compilation
export GOARCH=amd64 # Target architecture
export GOPROXY=https://proxy.golang.org # Go proxy URL
配置选项
| 变量 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| DISABLE_NOTIFICATIONS | boolean | false | 设置为 true 可禁用命令执行的权限提示 |
| DEBUG_MCP | boolean | false | 设置为 true 可启用调试日志(便于排查问题) |
| ENABLE_LSP | boolean | false | 设置为 true 可启用 LSP 工具。需要在 PATH 中包含 gopls |
| GOROOT | string | auto-detected | 自定义 Go 根目录 |
| GOPATH | string | default | 自定义 Go 工作区路径 |
| GOOS | string | current OS | 交叉编译的目标操作系统 |
| GOARCH | string | current arch | 交叉编译的目标架构 |
| GOPROXY | string | https://proxy.golang.org | Go 模块代理 URL |
这意味着:
- DISABLE_NOTIFICATIONS:阻止权限提示(适用于自动化)
- DEBUG_MCP:显示详细日志(有助于排查问题)
- ENABLE_LSP:启用语言服务器协议工具(需要安装
gopls) - GOROOT/GOPATH:覆盖 Go 安装路径(通常会自动检测)
- GOOS/GOARCH:设置交叉编译的目标平台
- GOPROXY:更改 Go 获取模块的来源
常见配置示例
💡 启用 LSP 支持进行开发:
export DEBUG_MCP=true
export ENABLE_LSP=true
export DISABLE_NOTIFICATIONS=true
✅ 生产构建配置:
export DISABLE_NOTIFICATIONS=true
export GOOS=linux
export GOARCH=amd64
export GOPROXY=https://proxy.golang.org
🔧 自定义 Go 安装:
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
**⚠️ 注意:**在 Shell 中设置的环境变量需要传递到 MCP 客户端配置文件的 env 部分才能生效。
平台专属指南
为你的平台配置 MCP Go 服务。每份指南都包含分步说明、配置文件位置和验证步骤。
平台快速参考
| 平台 | 配置位置 | 难度 |
|---|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)%APPDATA%\Claude\claude_desktop_config.json (Windows) | ⭐ 简单 |
| Cursor | 设置 → MCP Servers | ⭐ 简单 |
| VS Code | .vscode/settings.json 或用户设置 | ⭐ 简单 |
| Docker | docker-compose.yml 或命令行 | ⭐⭐ 中等 |
1. Claude Desktop - ⭐ 简单 - 最受欢迎的桌面应用
前置条件:
- 已安装 Claude Desktop
- 已安装
mcp-go二进制文件(参见安装方式)
步骤:
-
找到配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
打开或创建配置文件
-
添加 MCP 服务配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true"
}
}
}
}
-
更新命令路径:
- 将
/usr/local/bin/mcp-go替换为实际的mcp-go路径 - 使用以下命令查找:
which mcp-go(macOS/Linux)或where mcp-go(Windows)
- 将
-
重启 Claude Desktop
✅ 验证:
- 打开 Claude Desktop
- 检查 MCP 工具是否可用
- 尝试让 Claude 运行 Go 命令
⚠️ 故障排除:
- 如果工具没有显示,请检查配置文件的 JSON 是否有效
- 确认二进制文件路径正确
- 检查 Claude Desktop 日志中是否有错误
2. Cursor - ⭐ 简单 - AI 驱动的代码编辑器
前置条件:
- 已安装 Cursor
- 已安装
mcp-go二进制文件
步骤:
-
打开 Cursor 设置:
- 按
Cmd+,(macOS)或Ctrl+,(Windows/Linux) - 或者:Cursor → 设置 → 设置
- 按
-
导航到 MCP Servers:
- 在设置中搜索 “MCP”
- 或者前往:设置 → 功能 → MCP Servers
-
添加服务配置:
- 点击 “Add Server” 或编辑设置 JSON
- 添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true"
}
}
}
}
-
更新命令路径以匹配你的安装位置
-
重新加载 Cursor(重启或重新加载窗口)
✅ 验证:
- 打开一个 Go 文件
- 检查命令面板中是否提供 MCP 工具
- 尝试使用 Go 相关的 AI 功能
3. VS Code - ⭐ 简单 - 支持 MCP 的热门代码编辑器
前置条件:
- 已安装 MCP 扩展的 VS Code
- 已安装
mcp-go二进制文件
步骤:
-
选择配置位置:
- 工作区:
.vscode/settings.json(项目专用) - 用户: 用户设置 JSON(全局)
- 工作区:
-
打开设置 JSON:
- 按
Cmd+Shift+P(macOS)或Ctrl+Shift+P(Windows/Linux) - 输入 "Preferences: Open Settings (JSON)"
- 或在工作区中编辑
.vscode/settings.json
- 按
-
添加 MCP 服务配置:
{
"mcp.servers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true"
}
}
}
}
-
更新命令路径
-
重新加载 VS Code 窗口
✅ 验证:
- 在“输出”面板中检查 MCP 服务消息
- 验证 Go 环境:在集成终端中运行
go version - 测试工具:尝试调用
go_fmt或go_test
**💡 提示:**对于工作区设置,请在项目根目录中创建 .vscode/settings.json
4. Cline (VS Code 扩展) - ⭐ 简单 - 用于 AI 编码的 VS Code 扩展
前置条件:
- 已安装 Cline 扩展的 VS Code
- 已安装
mcp-go二进制文件
步骤:
-
从 VS Code 市场安装 Cline 扩展
-
打开 Cline 设置:
- 前往:设置 → 扩展 → Cline
- 或编辑设置 JSON
-
添加 MCP 服务:
{
"cline.mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新命令路径并重新加载
**✅ 验证:**Cline 应能识别 MCP Go 工具
5. Windsurf - ⭐ 简单 - AI 驱动的 IDE
前置条件:
- 已安装 Windsurf
- 已安装
mcp-go二进制文件
步骤:
-
打开 Windsurf 设置:
- 前往设置 → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true"
}
}
}
}
- 更新路径并重启 Windsurf
**✅ 验证:**Windsurf 中可使用 MCP 工具
6. Zed - ⭐ 简单 - 现代代码编辑器
前置条件:
- 已安装 Zed
- 已安装
mcp-go二进制文件
步骤:
-
打开 Zed 设置:
Cmd+,(macOS)或Ctrl+,(Windows/Linux)
-
找到 MCP 配置:
- 设置 → 功能 → MCP
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启 Zed
**✅ 验证:**MCP 集成正常工作
7. JetBrains AI Assistant - ⭐⭐ 中等 - 适用于所有 JetBrains IDE
前置条件:
- 已启用 AI Assistant 的 JetBrains IDE
- 已安装
mcp-go二进制文件
步骤:
-
打开 IDE 设置:
- 前往:设置/偏好设置 → 工具 → AI Assistant → MCP 服务
-
添加 MCP 服务:
- 点击“添加”或编辑配置
- 添加:
{
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true"
}
}
}
- 更新路径并重启 IDE
**✅ 验证:**AI Assistant 可以使用 Go 工具
**💡 提示:**适用于 IntelliJ IDEA、GoLand、WebStorm、PyCharm 等
8. Perplexity Desktop - ⭐ 简单 - 桌面 AI 助手
前置条件:
- 已安装 Perplexity Desktop
- 已安装
mcp-go二进制文件
步骤:
-
打开 Perplexity 设置:
- 设置 → 集成 → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
**✅ 验证:**Perplexity 可以访问 Go 工具
9. Amazon Q Developer CLI - ⭐ 简单 - AWS AI 编码助手命令行工具
前置条件:
- 已安装 Amazon Q Developer CLI
- 已安装
mcp-go二进制文件
步骤:
-
创建或编辑配置文件:
- 位置:
~/.aws-q/config.json或%USERPROFILE%\.aws-q\config.json
- 位置:
-
添加 MCP 服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**运行支持 Go 的 aws-q 命令
10. Smithery - ⭐ 简单 - MCP 服务管理工具
**前置条件:** - 已安装 Smithery - 已安装 `mcp-go` 二进制文件步骤:
-
打开 Smithery 配置:
- 编辑
~/.smithery/config.json,或使用 Smithery UI
- 编辑
-
添加服务:
{
"servers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启 Smithery
✅ 验证: 服务显示在 Smithery 中
11. Claude Code CLI - ⭐ 简单 - 命令行 Claude 界面
前置条件:
- 已安装 Claude Code CLI
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置文件:
- 位置:
~/.claude-code/config.json
- 位置:
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
✅ 验证: CLI 可以使用 Go 工具
12. Amp - ⭐ 简单 - AI 编码助手
前置条件:
- 已安装 Amp
- 已安装
mcp-go二进制文件
步骤:
-
打开 Amp 设置:
- 设置 → MCP 服务
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
✅ 验证: Amp 集成正常运行
13. Warp Terminal - ⭐ 简单 - 配备 AI 的现代终端
前置条件:
- 已安装 Warp Terminal
- 已安装
mcp-go二进制文件
步骤:
-
打开 Warp 设置:
Cmd+,(macOS)或Ctrl+,(Windows/Linux)
-
导航至 AI → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启 Warp
✅ 验证: Warp 中的 AI 功能可以使用 Go 工具
14. Copilot Coding Agent - ⭐ 简单 - GitHub Copilot Agent
前置条件:
- 已安装 Copilot Coding Agent
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置:
- 位置:
~/.copilot/config.json
- 位置:
-
添加 MCP 服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
✅ 验证: Copilot Agent 可以使用 Go 工具
15. Copilot CLI - ⭐ 简单 - GitHub Copilot 命令行
前置条件:
- 已安装 GitHub Copilot CLI
- 已安装
mcp-go二进制文件
步骤:
-
配置 Copilot CLI:
- 编辑
~/.github/copilot/config.json
- 编辑
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
✅ 验证: CLI 命令可以与 Go 配合使用
16. LM Studio - ⭐ 简单 - 本地大模型界面
前置条件:
- 已安装 LM Studio
- 已安装
mcp-go二进制文件
步骤:
-
打开 LM Studio 设置:
- 设置 → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
✅ 验证: LM Studio 可以使用 Go 工具
17. Visual Studio 2022 - ⭐⭐ 中等 - Microsoft IDE
前置条件:
- 已安装带 MCP 扩展的 Visual Studio 2022
- 已安装
mcp-go二进制文件
步骤:
-
安装 MCP 扩展以用于 Visual Studio 2022
-
打开“工具 → 选项 → MCP 服务”
-
添加服务:
- 名称:
mcp-go - 命令:
mcp-go.exe的路径 - 参数:(留空)
- 名称:
-
保存并重启 Visual Studio
✅ 验证: Visual Studio 中可以使用 MCP 工具
18. Roo Code - ⭐ 简单 - AI 编码助手
前置条件:
- 已安装 Roo Code
- 已安装
mcp-go二进制文件
步骤:
-
打开 Roo Code 设置:
- 设置 → MCP 配置
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
✅ 验证: Roo Code 集成正常运行
19. Gemini CLI - ⭐ 简单 - Google Gemini 命令行
前置条件:
- 已安装 Gemini CLI
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置:
- 位置:
~/.gemini/config.json
- 位置:
-
添加 MCP 服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
✅ 验证: Gemini CLI 可以使用 Go 工具
20. Qwen Coder - ⭐ 简单 - AI 编码助手
前置条件:
- 已安装 Qwen Coder
- 已安装
mcp-go二进制文件
步骤:
-
打开设置:
- 设置 → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
**✅ 验证:**Qwen Coder 集成正常工作
21. Opencode - ⭐ 简单 - 开源 AI 编码工具
前置条件:
- 已安装 Opencode
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置:
- 位置:
~/.opencode/config.json
- 位置:
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Opencode 可以使用 Go 工具
22. OpenAI Codex - ⭐ 简单 - OpenAI 编码助手
前置条件:
- 可访问 OpenAI Codex
- 已安装
mcp-go二进制文件
步骤:
-
配置 Codex:
- 编辑
~/.openai/codex/config.json
- 编辑
-
添加 MCP 服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Codex 集成正常工作
23. Kiro - ⭐ 简单 - AI 编码助手
前置条件:
- 已安装 Kiro
- 已安装
mcp-go二进制文件
步骤:
-
打开 Kiro 设置:
- 设置 → MCP Servers
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
**✅ 验证:**Kiro 可以使用 Go 工具
24. Trae - ⭐ 简单 - AI 开发工具
前置条件:
- 已安装 Trae
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置:
- 位置:
~/.trae/config.json
- 位置:
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Trae 集成正常工作
25. Bun Runtime - ⭐ 简单 - 支持 MCP 的 JavaScript 运行时
前置条件:
- 已安装 Bun
- 已安装
mcp-go二进制文件
步骤:
-
创建 MCP 配置:
- 位置:
~/.bun/mcp/config.json
- 位置:
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Bun 可以使用 MCP Go 服务
26. Deno Runtime - ⭐ 简单 - JavaScript/TypeScript 运行时
前置条件:
- 已安装 Deno
- 已安装
mcp-go二进制文件
步骤:
-
配置 Deno MCP:
- 编辑
~/.deno/mcp/config.json
- 编辑
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Deno MCP 集成正常工作
27. Docker - ⭐⭐ 中等 - 基于容器的安装
前置条件:
- 已安装 Docker
- Docker Compose(可选,便于管理)
步骤:
- 拉取镜像:
docker pull ghcr.io/inja-online/golang-mcp:latest
- 运行容器:
docker run -it --rm \
-v $(pwd):/workspace \
-w /workspace \
ghcr.io/inja-online/golang-mcp:latest
- 或使用 docker-compose:
- 创建
docker-compose.yml:
- 创建
version: '3.8'
services:
mcp-go:
image: ghcr.io/inja-online/golang-mcp:latest
volumes:
- .:/workspace
working_dir: /workspace
stdin_open: true
tty: true
- 使用 docker-compose 启动:
docker-compose up
✅ 验证:
docker run --rm ghcr.io/inja-online/golang-mcp:latest mcp-go --version
**💡 提示:**使用卷将 Go 项目挂载到容器中
28. Desktop Extension (.mcpb) - ⭐ 简单 - 便于安装的 MCP 捆绑包格式
前置条件:
- 支持
.mcpb文件的 MCP 兼容客户端
步骤:
-
从发布页面下载 .mcpb 文件
-
安装捆绑包:
- 双击
.mcpb文件,或 - 使用 MCP 客户端的“Install Bundle”功能
- 双击
-
按照客户端特定的安装提示操作
**✅ 验证:**捆绑包出现在 MCP 客户端的服务列表中
💡 提示:.mcpb 文件是包含所有依赖项的独立捆绑包
29. Windows (Detailed) - ⭐ 简单 - 完整的 Windows 安装指南
前置条件:
- Windows 10/11
- 已安装 Go 1.24+(可选,用于从源代码构建)
步骤:
-
下载 Windows 二进制文件:
- 前往 发布页面
- 下载
golang-mcp_Windows_x86_64.zip
-
解压存档:
- 右键单击 → 全部解压
- 或使用:
Expand-Archive golang-mcp_Windows_x86_64.zip
-
移动到永久位置:
- 创建文件夹:
C:\Program Files\mcp-go\ - 将
mcp-go.exe移到该位置
- 创建文件夹:
-
添加到 PATH:
- 打开“系统属性”→“环境变量”
- 编辑“Path”变量
- 添加:
C:\Program Files\mcp-go - 在所有对话框中点击“确定”
-
验证安装:
- 打开 PowerShell 或命令提示符
- 运行:
mcp-go --version
**✅ 成功:**你应该会看到版本号
⚠️ 故障排除:
- 如果提示找不到命令,请在添加到 PATH 后重启终端
- 检查 PATH:
$env:PATH(PowerShell)或echo %PATH%(CMD) - 验证文件是否存在:
Test-Path "C:\Program Files\mcp-go\mcp-go.exe"
30. BoltAI - ⭐ 简单 - AI 编码助手
前置条件:
- 已安装 BoltAI
- 已安装
mcp-go二进制文件
步骤:
-
打开 BoltAI 设置:
- 设置 → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
**✅ 验证:**BoltAI 集成正常运行
31. Rovo Dev CLI - ⭐ 简单 - 开发命令行工具
前置条件:
- 已安装 Rovo Dev CLI
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置:
- 位置:
~/.rovo/config.json
- 位置:
-
添加 MCP 服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Rovo CLI 可以使用 Go 工具
32. Zencoder - ⭐ 简单 - AI 代码生成工具
前置条件:
- 已安装 Zencoder
- 已安装
mcp-go二进制文件
步骤:
-
打开 Zencoder 设置:
- 设置 → MCP 配置
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
**✅ 验证:**Zencoder 可以使用 Go 工具
33. Qodo Gen - ⭐ 简单 - AI 代码生成器
前置条件:
- 已安装 Qodo Gen
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置:
- 位置:
~/.qodo/config.json
- 位置:
-
添加 MCP 服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Qodo Gen 集成正常运行
34. Factory - ⭐ 简单 - AI 开发平台
前置条件:
- 已安装 Factory
- 已安装
mcp-go二进制文件
步骤:
-
打开 Factory 设置:
- 设置 → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
**✅ 验证:**Factory 可以使用 Go 工具
35. Crush - ⭐ 简单 - AI 编码助手
前置条件:
- 已安装 Crush
- 已安装
mcp-go二进制文件
步骤:
-
编辑配置:
- 位置:
~/.crush/config.json
- 位置:
-
添加服务:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径
**✅ 验证:**Crush 集成正常运行
36. Augment Code - ⭐ 简单 - AI 代码增强工具
前置条件:
- 已安装 Augment Code
- 已安装
mcp-go二进制文件
步骤:
-
打开 Augment Code 设置:
- 设置 → MCP 服务
-
添加配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
- 更新路径并重启
**✅ 验证:**Augment Code 可以使用 Go 工具
独立使用
直接运行 MCP Go 服务:
mcp-go
该服务通过 stdio(标准输入/输出)使用 JSON-RPC 2.0 协议进行通信。
**💡 提示:**适用于测试或自定义集成
故障排除 - 常见问题及解决方案
常见问题及解决方案。根据症状快速查找问题。
安装问题
❌ “找不到命令:mcp-go”
症状:
- 终端提示
mcp-go: command not found - 二进制文件存在,但无法运行
解决方案:
-
检查是否已安装二进制文件:
which mcp-go # macOS/Linux where mcp-go # Windows -
添加到 PATH:
- **macOS/Linux:**将
$HOME/go/bin添加到 PATHexport PATH=$PATH:$HOME/go/bin - **Windows:**在“环境变量”中将
%USERPROFILE%\go\bin添加到 PATH
- **macOS/Linux:**将
-
验证 PATH:
echo $PATH # macOS/Linux echo %PATH% # Windows
✅ 成功:mcp-go --version 应该可以正常运行
❌ “Permission denied”
症状:
- 运行
mcp-go时出现Permission denied错误
解决方案:
-
使二进制文件可执行:
chmod +x /path/to/mcp-go -
检查文件权限:
ls -l /path/to/mcp-go -
在 Windows 上: 如有需要,请以管理员身份运行
❌ “Go 版本过旧”
症状:
- 出现有关 Go 版本的错误
- 要求 Go 1.24+
解决方案:
-
检查 Go 版本:
go version -
更新 Go:
- 访问 golang.org
- 下载最新版本
- 安装后重启终端
配置问题
❌ “找不到配置文件”
症状:
- 平台无法找到配置文件
- 服务无法启动
解决方案:
- 创建配置文件(如果文件不存在)
- 检查文件位置(参见平台专属指南)
- 验证 JSON 语法是否有效
- 检查文件权限(确保可读)
❌ “配置文件中的 JSON 无效”
症状:
- 配置文件存在语法错误
- 服务启动失败
解决方案:
-
验证 JSON:
- 使用在线 JSON 验证工具
- 或运行:
python -m json.tool config.json
-
常见错误:
- 缺少逗号
- 多余的逗号
- 括号未闭合
-
修复后重启 MCP 客户端
❌ “二进制文件路径不正确”
症状:
- 服务找不到
mcp-go二进制文件 - 日志中出现路径错误
解决方案:
-
查找正确路径:
which mcp-go # macOS/Linux where mcp-go # Windows -
在配置中使用绝对路径(而非相对路径)
-
在 Windows 上: 使用正斜杠或双反斜杠:
"command": "C:/Program Files/mcp-go/mcp-go.exe" // or "command": "C:\\Program Files\\mcp-go\\mcp-go.exe"
平台专属问题
❌ Claude Desktop:工具未显示
症状:
- 配置文件看起来正确
- Claude 中没有可用工具
解决方案:
- 彻底重启 Claude Desktop
- 检查配置文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- 验证 JSON 语法
- 检查 Claude Desktop 日志中是否有错误
- 确认二进制文件路径正确且可执行
❌ VS Code:MCP 扩展无法正常工作
症状:
- 已安装 MCP 扩展,但无法正常工作
- 没有可用工具
解决方案:
- 检查扩展是否已启用
- 重新加载 VS Code 窗口:
Cmd+Shift+P→ “Reload Window” - 检查输出面板中的 MCP 消息
- 验证设置 JSON 语法
- 尝试使用工作区设置,而非用户设置
❌ Docker:容器无法启动
症状:
- Docker 容器立即退出
- 出现权限错误
解决方案:
-
检查 Docker 是否正在运行:
docker ps -
检查镜像是否存在:
docker images | grep golang-mcp -
检查卷挂载:
- 确认路径正确
- 检查挂载目录的权限
-
查看日志:
docker logs <container-id>
运行时问题
❌ “找不到 Go 命令”
症状:
- MCP 服务找不到
go命令 - Go 工具运行失败
解决方案:
-
确认已安装 Go:
go version -
检查 PATH 是否包含 Go:
echo $PATH # Should include Go bin directory -
如有需要,设置 GOROOT:
export GOROOT=/usr/local/go
❌ “LSP 工具不可用”
症状:
- LSP 工具未显示
- 已设置
ENABLE_LSP=true,但没有工具
解决方案:
-
检查是否已安装 gopls:
which gopls go install golang.org/x/tools/gopls@latest -
确认已设置 ENABLE_LSP:
echo $ENABLE_LSP # Should be "true" -
设置环境变量后重启 MCP 服务
❌ “权限提示反复出现”
症状:
- 每个命令都会触发权限提示
- 希望禁用这些提示
解决方案:
-
设置 DISABLE_NOTIFICATIONS:
export DISABLE_NOTIFICATIONS=true -
在配置文件的
env部分中添加:"env": { "DISABLE_NOTIFICATIONS": "true" } -
重启 MCP 客户端
性能问题
❌ “服务运行缓慢”
症状:
- 命令执行时间过长
- 出现超时
解决方案:
-
启用调试日志:
export DEBUG_MCP=true -
检查系统资源(CPU、内存)
-
检查 Go 代理:
go env GOPROXY -
尝试使用其他 GOPROXY:
export GOPROXY=https://proxy.golang.org
获取更多帮助
仍然遇到问题?
-
检查日志:
- 启用
DEBUG_MCP=true - 检查平台特定的日志位置
- 启用
-
验证安装:
mcp-go --version go version -
独立测试:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | mcp-go -
查看 GitHub Issues:
- 搜索现有问题
- 创建新问题,并附上:
- 错误消息
- 平台信息
- 配置文件(已清理敏感信息)
- 调试日志
常见问题
常见问题和快速解答。
安装
问:使用 MCP Go Server 需要安装 Go 吗?
答: 不需要。你可以使用预构建二进制文件或 Docker。只有从源代码构建时才需要 Go。
问:我应该使用哪种安装方式?
答:
- 大多数用户: Go Install(最简单)
- 未安装 Go: 预构建二进制文件
- 开发: 从源代码构建
- 容器: Docker
问:可以在 Windows 上安装吗?
答: 可以。从发布页面下载 Windows 二进制文件,或使用 Go Install。请参阅 Windows(详细说明)指南。
问:需要将 mcp-go 添加到 PATH 吗?
答: 如果使用 Go Install 或二进制文件,则需要。Docker 无需设置 PATH。
配置
问:配置文件在哪里?
答: 取决于你的平台。请参阅平台特定指南,了解你所用平台上的位置。
问:可以使用环境变量吗?
答: 可以。请参阅配置部分,了解可用变量。
问:更改配置后需要重启吗?
答: 需要。更改配置后,请重启 MCP 客户端(Claude Desktop、VS Code 等)。
问:可以使用多个 MCP 服务吗?
答: 可以。在 mcpServers 对象中添加多个条目。
平台支持
问:它能与 [Platform X] 配合使用吗?
答: 如果你的平台支持 MCP 协议,就应该可以使用。请参阅平台特定指南,了解设置说明。
问:可以在多个 IDE 中使用吗?
答: 可以。在每个 IDE 的设置中分别进行配置。
问:可以离线使用吗?
答: 大多数功能都可以离线使用。软件包文档工具需要联网才能从 go.dev 获取内容。
功能
问:有哪些工具可用?
答: 总共有 22 个工具。完整列表请参阅快速参考或可用工具。
问:需要 LSP 支持吗?
答: 可选。如果需要使用 LSP 工具,请设置 ENABLE_LSP=true 并安装 gopls。
问:可以运行 Go 测试吗?
答: 可以。使用 go_test 工具,并通过各种选项进行覆盖率测试、基准测试等。
问:可以针对不同平台构建吗?
答: 可以。使用 go_cross_compile 工具,针对不同操作系统/架构进行构建。
故障排除
问:工具没有显示在我的客户端中。怎么回事?
答:
- 检查配置文件中的 JSON 是否有效
- 确认二进制文件路径正确
- 重启 MCP 客户端
- 检查日志中是否有错误
问:“Command not found”错误?
答: 将 mcp-go 添加到 PATH。请参阅故障排除部分。
问:权限提示不断出现?
答: 在配置或环境中设置 DISABLE_NOTIFICATIONS=true。
问:如何启用调试日志?
答: 在环境变量或配置文件中设置 DEBUG_MCP=true。
开发
问:可以参与贡献吗?
答: 可以!请参阅贡献部分。欢迎提交拉取请求。
问:在哪里报告错误?
答: 在 GitHub 上创建问题,并详细说明问题情况。
问:如何从源代码构建?
答: 请参阅“安装方式”部分中的从源代码构建。
问:可以自定义服务吗?
答: 可以,但需要从源代码构建。Fork 此仓库并按需修改。
可用工具
面向 Go 开发、测试、优化和管理的 22 个综合工具。
查看详细的工具文档
代码执行工具
✅ go_run
使用 go run 直接执行 Go 文件。
参数:
file(字符串,必需):要运行的 Go 文件路径args([]string,可选):传递给程序的命令行参数working_dir(字符串,可选):命令的工作目录env_vars(map[string]string,可选):附加环境变量
示例:
运行一个简单的 Go 文件:
{
"name": "go_run",
"arguments": {
"file": "main.go"
}
}
使用命令行参数运行:
{
"name": "go_run",
"arguments": {
"file": "server.go",
"args": ["--port", "8080", "--host", "localhost"]
}
}
使用环境变量运行:
{
"name": "go_run",
"arguments": {
"file": "app.go",
"env_vars": {
"DEBUG": "true",
"LOG_LEVEL": "info"
}
}
}
Go 工具
🔧 7 个工具,用于构建、测试、格式化和管理 Go 代码。
✅ go_build
使用各种构建标志构建 Go 包及其依赖项。
参数:
package(字符串,可选):要构建的包路径(默认:当前目录)output(字符串,可选):输出文件名race(bool,可选):启用竞态检测器tags([]string,可选):构建标签ldflags(字符串,可选):链接器标志trimpath(bool,可选):从可执行文件中移除文件系统路径working_dir(字符串,可选):工作目录
示例:
基本构建:
{
"name": "go_build",
"arguments": {
"output": "myapp"
}
}
使用竞态检测器构建:
{
"name": "go_build",
"arguments": {
"output": "myapp",
"race": true
}
}
使用构建标签和版本信息构建:
{
"name": "go_build",
"arguments": {
"output": "myapp",
"tags": ["production", "linux"],
"ldflags": "-X main.version=1.0.0 -X main.buildTime=$(date +%s)",
"trimpath": true
}
}
go_test
运行 Go 测试,支持覆盖率分析、基准测试和竞态检测。
参数:
package(字符串,可选):要测试的包路径cover(bool,可选):启用覆盖率分析cover_pkg(字符串,可选):要分析覆盖率的包bench(bool,可选):运行基准测试race(bool,可选):启用竞态检测器verbose(bool,可选):输出详细信息timeout(字符串,可选):测试超时时间
示例:
运行所有测试:
{
"name": "go_test",
"arguments": {
"verbose": true
}
}
运行测试并分析覆盖率:
{
"name": "go_test",
"arguments": {
"cover": true,
"cover_pkg": "./..."
}
}
运行测试、基准测试并启用竞态检测:
{
"name": "go_test",
"arguments": {
"bench": true,
"race": true,
"timeout": "30s"
}
}
go_fmt
使用 go fmt 格式化 Go 代码。
参数:
paths([]string,可选):要格式化的路径(默认:当前目录)working_dir(字符串,可选):工作目录
示例:
格式化当前目录:
{
"name": "go_fmt",
"arguments": {}
}
格式化指定文件:
{
"name": "go_fmt",
"arguments": {
"paths": ["./cmd", "./internal"]
}
}
go_mod
管理 Go 模块(init、tidy、download、vendor、get)。
参数:
operation(字符串,必需):模块操作:init、tidy、download、vendor、getmodule_path(字符串,可选):模块路径(用于 init 或 get)packages([]string,可选):包路径(用于 get)working_dir(字符串,可选):工作目录
示例:
初始化新模块:
{
"name": "go_mod",
"arguments": {
"operation": "init",
"module_path": "github.com/user/project"
}
}
整理依赖项:
{
"name": "go_mod",
"arguments": {
"operation": "tidy"
}
}
添加依赖项:
{
"name": "go_mod",
"arguments": {
"operation": "get",
"packages": ["github.com/gin-gonic/gin@latest"]
}
}
为依赖项创建 vendor 副本:
{
"name": "go_mod",
"arguments": {
"operation": "vendor"
}
}
go_doc
为 Go 包生成文档。
参数:
package(字符串,必需):包路径all(bool,可选):显示所有文档working_dir(字符串,可选):工作目录
示例:
查看包文档:
{
"name": "go_doc",
"arguments": {
"package": "net/http"
}
}
查看所有文档,包括未导出的符号:
{
"name": "go_doc",
"arguments": {
"package": "./internal/utils",
"all": true
}
}
go_lint
使用 golangci-lint 或 go vet 检查 Go 代码。
参数:
package(字符串,可选):要检查的包路径linter(字符串,可选):要使用的检查工具:golangci-lint 或 vet(默认:vet)working_dir(字符串,可选):工作目录
示例:
使用 go vet 检查:
{
"name": "go_lint",
"arguments": {
"package": "./..."
}
}
使用 golangci-lint 检查:
{
"name": "go_lint",
"arguments": {
"linter": "golangci-lint",
"package": "./cmd"
}
}
go_cross_compile
为不同平台交叉编译 Go 代码。
参数:
package(字符串,可选):要构建的包路径output(字符串,必需):输出文件名goos(字符串,必需):目标操作系统(例如:linux、darwin、windows)goarch(字符串,必需):目标架构(例如:amd64、arm64)working_dir(字符串,可选):工作目录
示例:
为 Linux 构建:
{
"name": "go_cross_compile",
"arguments": {
"output": "myapp-linux",
"goos": "linux",
"goarch": "amd64"
}
}
为 Windows 构建:
{
"name": "go_cross_compile",
"arguments": {
"output": "myapp.exe",
"goos": "windows",
"goarch": "amd64"
}
}
为 macOS ARM 构建:
{
"name": "go_cross_compile",
"arguments": {
"output": "myapp-darwin-arm64",
"goos": "darwin",
"goarch": "arm64"
}
}
优化工具
⚡ 6 个工具,用于分析性能、运行基准测试和优化 Go 代码性能。
✅ go_profile
使用 pprof 生成性能分析文件。
参数:
type(string, 必填):性能分析类型:cpu 或 memoutput(string, 必填):输出性能分析文件路径duration(string, 可选):性能分析时长package(string, 可选):要分析的包working_dir(string, 可选):工作目录
示例:
生成 CPU 性能分析文件:
{
"name": "go_profile",
"arguments": {
"type": "cpu",
"output": "cpu.prof"
}
}
生成内存性能分析文件:
{
"name": "go_profile",
"arguments": {
"type": "mem",
"output": "mem.prof",
"package": "./internal/handlers"
}
}
go_trace
为 Go 程序生成执行跟踪。
参数:
output(string, 必填):输出跟踪文件路径package(string, 可选):要跟踪的包working_dir(string, 可选):工作目录
示例:
{
"name": "go_trace",
"arguments": {
"output": "trace.out",
"package": "./..."
}
}
go_benchmark
运行基准测试并分析结果。
参数:
pattern(string, 可选):要匹配的基准测试模式count(int, 可选):迭代次数timeout(string, 可选):基准测试超时时间package(string, 可选):要进行基准测试的包working_dir(string, 可选):工作目录
示例:
运行所有基准测试:
{
"name": "go_benchmark",
"arguments": {}
}
运行指定模式的基准测试:
{
"name": "go_benchmark",
"arguments": {
"pattern": "BenchmarkSort",
"count": 5
}
}
运行带超时时间的基准测试:
{
"name": "go_benchmark",
"arguments": {
"timeout": "10m",
"package": "./internal/cache"
}
}
go_race_detect
检测 Go 代码中的竞态条件。
参数:
package(string, 可选):要测试的包working_dir(string, 可选):工作目录
示例:
{
"name": "go_race_detect",
"arguments": {
"package": "./..."
}
}
go_memory_profile
生成内存性能分析文件以供分析。
参数:
output(string, 必填):输出性能分析文件路径package(string, 可选):要分析的包working_dir(string, 可选):工作目录
示例:
{
"name": "go_memory_profile",
"arguments": {
"output": "mem.prof",
"package": "./internal/processor"
}
}
go_optimize_suggest
分析代码,并根据性能分析和基准测试结果提供优化建议。
参数:
package(string, 可选):要分析的包working_dir(string, 可选):工作目录
示例:
分析当前包:
{
"name": "go_optimize_suggest",
"arguments": {}
}
分析指定包:
{
"name": "go_optimize_suggest",
"arguments": {
"package": "./internal/processor"
}
}
此工具会运行基准测试和静态分析,提供以下优化建议:
- 用于建立性能基线的基准测试结果
- 来自
go vet的静态分析问题 - 通用优化建议
- 关于竞态检测、性能分析和并发改进的建议
服务管理工具
🚀 5 个工具,用于在后台管理长时间运行的 Go 服务。
✅ go_server_start
在后台启动长时间运行的 Go 服务。
参数:
id(string, 必填):唯一服务 IDname(string, 必填):服务名称command(string, 必填):要运行的命令(通常是 'go' 或二进制文件路径)args([]string, 必填):命令参数working_dir(string, 可选):工作目录env_vars(map[string]string, 可选):环境变量log_size(int, 可选):保留的最大日志行数(默认值:1000)
go_server_stop
停止正在运行的服务。
参数:
id(string, 必填):服务 IDforce(bool, 可选):强制终止服务(SIGKILL)
go_server_list
列出所有正在运行的服务。
go_server_logs
获取正在运行的服务的日志。
参数:
id(string, 必填):服务 IDcount(int, 可选):最近的日志行数(0 表示全部)
go_server_status
获取服务的详细状态。
参数:
id(string, 必填):服务 ID
包文档工具
📚 3 个工具,用于发现和浏览 Go 包文档。
✅ go_pkg_docs
从 go.dev(pkg.go.dev)获取包文档。返回包概览、函数、类型和示例。
参数:
package(string,必填):包路径(例如,github.com/gin-gonic/gin、net/http)version(string,可选):包版本
示例:
获取标准库文档:
{
"name": "go_pkg_docs",
"arguments": {
"package": "net/http"
}
}
获取第三方包文档:
{
"name": "go_pkg_docs",
"arguments": {
"package": "github.com/gin-gonic/gin",
"version": "v1.9.1"
}
}
该工具会返回:
- 包概览和说明
- 函数列表,包括签名和说明
- 类型列表,包括类型种类和说明
- 代码示例(如果有)
go_pkg_search
在 go.dev 上搜索包。返回匹配的包路径列表。
参数:
query(string,必填):搜索查询
示例:
搜索 HTTP 路由器:
{
"name": "go_pkg_search",
"arguments": {
"query": "http router"
}
}
搜索数据库驱动:
{
"name": "go_pkg_search",
"arguments": {
"query": "database driver postgres"
}
}
该工具会返回与你的查询匹配的包路径列表。随后,你可以使用 go_pkg_docs 查看文档。
go_pkg_examples
从包文档中提取示例。
参数:
package(string,必填):包路径version(string,可选):包版本
示例:
从标准库中提取示例:
{
"name": "go_pkg_examples",
"arguments": {
"package": "net/http"
}
}
从第三方包中提取示例:
{
"name": "go_pkg_examples",
"arguments": {
"package": "github.com/gin-gonic/gin",
"version": "v1.9.1"
}
}
LSP 工具
🔌 5 个工具用于语言服务器协议集成(可选)。
⚠️ 注意:LSP 工具为可选功能,需设置
ENABLE_LSP=true环境变量。这些工具提供语言服务器协议集成,以支持高级 IDE 功能。
✅ lsp_start_session
为工作区根 URI 启动 LSP 会话。
参数:
root_uri(string,必填):工作区根 URI(file:// 路径)gopls_path(string,可选):gopls 二进制文件的路径(默认:从 PATH 中查找)args([]string,可选):传递给 gopls 的其他参数env(map[string]string,可选):gopls 的环境变量
示例:
使用默认 gopls 启动会话:
{
"name": "lsp_start_session",
"arguments": {
"root_uri": "file:///path/to/workspace"
}
}
使用自定义 gopls 路径启动会话:
{
"name": "lsp_start_session",
"arguments": {
"root_uri": "file:///path/to/workspace",
"gopls_path": "/usr/local/bin/gopls",
"args": ["-rpc.trace"],
"env": {
"GOPATH": "/custom/gopath"
}
}
}
lsp_shutdown_session
关闭工作区根 URI 对应的 LSP 会话。
参数:
root_uri(string,必填):工作区根 URI
示例:
{
"name": "lsp_shutdown_session",
"arguments": {
"root_uri": "file:///path/to/workspace"
}
}
lsp_request
向 LSP 会话发送请求并等待结果。
参数:
root_uri(string,必填):工作区根 URImethod(string,必填):LSP 方法名称(例如,“textDocument/hover”、“textDocument/completion”)params(object,可选):请求参数
示例:
获取悬停信息:
{
"name": "lsp_request",
"arguments": {
"root_uri": "file:///path/to/workspace",
"method": "textDocument/hover",
"params": {
"textDocument": {
"uri": "file:///path/to/workspace/main.go"
},
"position": {
"line": 10,
"character": 5
}
}
}
}
获取代码补全:
{
"name": "lsp_request",
"arguments": {
"root_uri": "file:///path/to/workspace",
"method": "textDocument/completion",
"params": {
"textDocument": {
"uri": "file:///path/to/workspace/main.go"
},
"position": {
"line": 15,
"character": 20
}
}
}
}
lsp_notify
向 LSP 会话发送通知(不等待响应)。
参数:
root_uri(string,必填):工作区根 URImethod(string,必填):LSP 方法名称(例如,“textDocument/didChange”、“textDocument/didOpen”)params(object,可选):通知参数
示例:
{
"name": "lsp_notify",
"arguments": {
"root_uri": "file:///path/to/workspace",
"method": "textDocument/didOpen",
"params": {
"textDocument": {
"uri": "file:///path/to/workspace/main.go",
"languageId": "go",
"version": 1,
"text": "package main\n\nfunc main() {\n}"
}
}
}
}
lsp_subscribe_diagnostics
订阅 LSP 会话发布的诊断信息。
参数:
root_uri(string,必填):工作区根 URI
示例:
{
"name": "lsp_subscribe_diagnostics",
"arguments": {
"root_uri": "file:///path/to/workspace"
}
}
此功能可接收指定工作区的 LSP 服务发送的诊断通知(错误、警告等)。
可用资源
📦 8 个发现资源,用于探索 Go 工作区并访问包文档。
✅ go://modules
当前工作区中的 Go 模块和依赖项列表。
**用途:**了解项目依赖项、检查版本、规划更新
✅ go://build-tags
项目中的构建标签和约束。
**用途:**查找特定于平台的代码、功能标志和条件构建
✅ go://tests
项目中的测试文件和基准测试列表。
**用途:**发现测试覆盖情况、查找基准测试、了解测试结构
✅ go://workspace
Go 工作区结构和配置。
**用途:**了解项目布局、查找主包、规划重构
✅ go://pkg-docs/{path}
从 go.dev 获取软件包文档。支持带版本的路径(例如,go://pkg-docs/encoding/[email protected])。
适用于: 快速查阅标准库文档、查看第三方软件包文档
✅ go://tools
列出所有可用工具的名称、描述和参数架构。使用此资源可发现 MCP 服务中有哪些工具。
适用于: 发现可用工具、了解工具参数、查找合适的工具
✅ go://prompts
列出所有可用提示词的名称、描述和参数。使用此资源可发现有哪些提示词可用于引导式工作流。
适用于: 查找特定任务的提示词、了解提示词参数、发现工作流
✅ go://resources
列出所有可用资源的 URI、名称和描述。使用此资源可发现 MCP 服务中有哪些资源。
适用于: 了解可用资源、查找资源 URI、规划基于资源的工作流
可用提示词
💡 7 个引导式提示词,用于分步工作流和最佳实践。
提示词为常见 Go 开发任务提供引导式工作流和分步说明。每个提示词都接受参数,可自定义指导内容。
✅ setup-go-project
指导你使用模块初始化、目录结构和最佳实践来设置新的 Go 项目。
参数:
project_name(string,必填):要设置的 Go 项目名称module_path(string,可选):Go 模块路径(例如,github.com/username/project)
使用场景:
- 从头开始初始化新的 Go 项目
- 按照 Go 最佳实践设置项目结构
- 创建规范的基于模块的项目
示例:
{
"name": "setup-go-project",
"arguments": {
"project_name": "my-api",
"module_path": "github.com/user/my-api"
}
}
此提示词将指导你完成以下步骤:
- 初始化 Go 模块
- 创建标准目录结构(cmd/、internal/、pkg/ 等)
- 设置 README 和 .gitignore
- 创建初始 main.go
- 运行 go mod tidy
✅ write-go-tests
用于编写全面 Go 测试的模板,包括单元测试、基准测试和表驱动测试。
参数:
package_path(string,必填):要编写测试的软件包路径test_type(string,可选):要编写的测试类型:unit、benchmark、integration 或 all(默认:all)
使用场景:
- 为新软件包编写测试
- 为现有代码添加测试覆盖
- 为性能关键型代码创建基准测试
- 设置集成测试
示例:
编写所有类型的测试:
{
"name": "write-go-tests",
"arguments": {
"package_path": "./internal/processor",
"test_type": "all"
}
}
仅编写单元测试:
{
"name": "write-go-tests",
"arguments": {
"package_path": "./internal/utils",
"test_type": "unit"
}
}
此提示词将指导你了解:
- 表驱动测试模式
- 使用子测试组织测试
- 错误场景测试
- 基准测试的创建
- 集成测试的设置
✅ optimize-go-performance
指导你使用 pprof、基准测试和竞态检测来分析并优化 Go 代码性能。
参数:
package_path(string,必填):要优化的软件包optimization_goal(string,可选):优化目标:cpu、memory、concurrency 或 general(默认:general)
使用场景:
- 找出性能瓶颈
- 优化 CPU 密集型代码
- 减少内存分配
- 提升并发性能
示例:
常规优化:
{
"name": "optimize-go-performance",
"arguments": {
"package_path": "./internal/processor",
"optimization_goal": "general"
}
}
侧重 CPU 的优化:
{
"name": "optimize-go-performance",
"arguments": {
"package_path": "./internal/processor",
"optimization_goal": "cpu"
}
}
此提示词将指导你完成以下步骤:
- 通过基准测试建立基线
- 分析 CPU 和内存使用情况
- 使用 pprof 分析性能配置文件
- 找出并修复瓶颈
- 衡量改进效果
- 检测竞态条件
✅ debug-go-issue
系统化的 Go 程序调试方法,涵盖竞态条件、panic 和性能问题。
参数:
issue_type(字符串,可选):问题类型:panic、race、performance、deadlock 或 unknown(默认:unknown)package_path(字符串,可选):发生问题的包
使用场景:
- 调试 panic 和崩溃
- 查找竞态条件
- 调查性能问题
- 解决死锁
示例:
调试 panic:
{
"name": "debug-go-issue",
"arguments": {
"issue_type": "panic",
"package_path": "./internal/handlers"
}
}
调试竞态条件:
{
"name": "debug-go-issue",
"arguments": {
"issue_type": "race",
"package_path": "./internal/worker"
}
}
此提示词提供:
- 分步调试工作流
- 针对特定问题的调试策略
- 工具建议(go_test、go_race_detect、go_trace 等)
- 修复后的验证步骤
✅ add-go-dependency
使用 go mod 添加和管理 Go 依赖的指南。
参数:
package_path(字符串,必填):要添加的包路径(例如,github.com/gin-gonic/gin)version(字符串,可选):指定版本或 latest(默认:latest)
使用场景:
- 为项目添加新依赖
- 更新现有依赖
- 管理依赖版本
示例:
添加最新版本:
{
"name": "add-go-dependency",
"arguments": {
"package_path": "github.com/gin-gonic/gin"
}
}
添加指定版本:
{
"name": "add-go-dependency",
"arguments": {
"package_path": "github.com/gin-gonic/gin",
"version": "v1.9.1"
}
}
此提示词将指导你完成:
- 首先查看包文档
- 使用 go mod get 添加依赖
- 检查 go.mod 和 go.sum 的变更
- 运行 go mod tidy
- 验证构建
- 依赖管理最佳实践
✅ go-code-review
Go 代码审查清单,涵盖风格、性能、安全性和最佳实践。
参数:
package_path(字符串,可选):要审查的包
使用场景:
- 准备代码审查
- 质量保证检查
- 提交前验证
- 准备发布
示例:
{
"name": "go-code-review",
"arguments": {
"package_path": "./internal/api"
}
}
此提示词提供了一份全面的清单,涵盖:
- 代码质量(格式化、lint、错误处理)
- 测试(覆盖率、边界情况、基准测试)
- 并发(竞态条件、同步)
- 性能(内存分配、数据结构)
- 文档(注释、示例、README)
- 依赖(安全性、版本、清理)
- 构建和部署(编译、交叉编译)
✅ go-server-deployment
构建和部署 Go 服务端的指南,涵盖交叉编译、优化和生产环境最佳实践。
参数:
target_os(字符串,可选):目标操作系统:linux、darwin、windows(默认:linux)target_arch(字符串,可选):目标架构:amd64、arm64、386(默认:amd64)
使用场景:
- 准备生产构建
- 为不同平台进行交叉编译
- 设置部署流水线
- 配置生产环境服务端
示例:
部署到 Linux:
{
"name": "go-server-deployment",
"arguments": {
"target_os": "linux",
"target_arch": "amd64"
}
}
部署到 macOS ARM:
{
"name": "go-server-deployment",
"arguments": {
"target_os": "darwin",
"target_arch": "arm64"
}
}
此提示词涵盖:
- 部署前测试和验证
- 生产构建配置
- 交叉编译设置
- 安全注意事项
- 性能优化
- 监控和日志设置
- 部署后验证
使用示例 - 实用示例和工作流
本节提供实用、可直接复制粘贴的示例,展示常见工作流、工具组合和实际场景。
常见开发工作流
快速入门工作流
初始化新项目、格式化代码、运行测试并构建:
{
"name": "go_mod",
"arguments": {
"operation": "init",
"module_path": "github.com/user/myproject"
}
}
{
"name": "go_fmt",
"arguments": {
"paths": ["./..."]
}
}
{
"name": "go_test",
"arguments": {
"verbose": true
}
}
{
"name": "go_build",
"arguments": {
"output": "myapp"
}
}
测试工作流
运行全面测试,并启用覆盖率和竞态检测:
{
"name": "go_test",
"arguments": {
"cover": true,
"cover_pkg": "./...",
"race": true,
"verbose": true
}
}
{
"name": "go_race_detect",
"arguments": {
"package": "./..."
}
}
性能分析工作流
对代码进行基准测试、性能分析和优化:
{
"name": "go_benchmark",
"arguments": {
"pattern": "Benchmark.*",
"count": 5
}
}
{
"name": "go_profile",
"arguments": {
"type": "cpu",
"output": "cpu.prof",
"duration": "30s",
"package": "./internal/processor"
}
}
{
"name": "go_memory_profile",
"arguments": {
"output": "mem.prof",
"package": "./internal/processor"
}
}
交叉编译工作流
为多个平台构建:
{
"name": "go_cross_compile",
"arguments": {
"output": "myapp-linux-amd64",
"goos": "linux",
"goarch": "amd64"
}
}
{
"name": "go_cross_compile",
"arguments": {
"output": "myapp-darwin-arm64",
"goos": "darwin",
"goarch": "arm64"
}
}
{
"name": "go_cross_compile",
"arguments": {
"output": "myapp-windows-amd64.exe",
"goos": "windows",
"goarch": "amd64"
}
}
多工具示例
完整的类 CI/CD 工作流
使用生产环境标志格式化、lint、测试和构建:
{
"name": "go_fmt",
"arguments": {
"paths": ["./..."]
}
}
{
"name": "go_lint",
"arguments": {
"linter": "golangci-lint",
"package": "./..."
}
}
{
"name": "go_test",
"arguments": {
"cover": true,
"cover_pkg": "./...",
"race": true
}
}
{
"name": "go_build",
"arguments": {
"output": "myapp",
"trimpath": true,
"ldflags": "-X main.version=1.0.0 -X main.buildTime=$(date +%s)"
}
}
服务端开发工作流
构建、启动、监控并停止服务端:
{
"name": "go_build",
"arguments": {
"output": "server"
}
}
{
"name": "go_server_start",
"arguments": {
"id": "api-server",
"name": "API Server",
"command": "./server",
"args": ["--port", "8080"],
"env_vars": {
"ENV": "development",
"LOG_LEVEL": "debug"
}
}
}
{
"name": "go_server_logs",
"arguments": {
"id": "api-server",
"count": 50
}
}
{
"name": "go_server_status",
"arguments": {
"id": "api-server"
}
}
{
"name": "go_server_stop",
"arguments": {
"id": "api-server"
}
}
软件包调研工作流
搜索软件包、获取文档并提取示例:
{
"name": "go_pkg_search",
"arguments": {
"query": "http router"
}
}
{
"name": "go_pkg_docs",
"arguments": {
"package": "github.com/gin-gonic/gin"
}
}
{
"name": "go_pkg_examples",
"arguments": {
"package": "github.com/gin-gonic/gin"
}
}
集成示例
Claude Desktop 配置
macOS 配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true",
"GOPROXY": "https://proxy.golang.org"
}
}
}
}
Windows 配置:
{
"mcpServers": {
"mcp-go": {
"command": "C:\\Program Files\\mcp-go\\mcp-go.exe",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true"
}
}
}
}
Linux 配置:
{
"mcpServers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true",
"GOROOT": "/usr/local/go"
}
}
}
}
故障排查:
- 验证安装:在终端中检查
mcp-go --version是否正常运行 - 检查权限:确保二进制文件可执行(
chmod +x /path/to/mcp-go) - 测试连接:更改配置后重启 Claude Desktop
- 查看日志:检查 Claude Desktop 日志中的连接错误
VS Code 配置
工作区设置(.vscode/settings.json):
{
"mcp.servers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": [],
"env": {
"DISABLE_NOTIFICATIONS": "true"
}
}
}
}
用户设置(全局):
{
"mcp.servers": {
"mcp-go": {
"command": "/usr/local/bin/mcp-go",
"args": []
}
}
}
调试提示:
- 在 VS Code 设置中启用 MCP 日志记录
- 检查“输出”面板中的 MCP 服务消息
- 验证 Go 环境:确保在集成终端中
go version正常运行 - 测试工具:尝试调用
go_fmt或go_test以验证连接
独立使用
直接测试服务端:
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' | mcp-go
JSON-RPC 请求示例:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "go_run",
"arguments": {
"file": "main.go"
}
}
}
JSON-RPC 响应示例:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "Hello, World!"
}
]
}
}
实际场景
构建 REST API
开发和测试 REST API 的完整工作流:
{
"name": "go_pkg_search",
"arguments": {
"query": "gin echo fiber"
}
}
{
"name": "go_pkg_docs",
"arguments": {
"package": "github.com/gin-gonic/gin"
}
}
{
"name": "go_mod",
"arguments": {
"operation": "get",
"packages": ["github.com/gin-gonic/gin@latest"]
}
}
{
"name": "go_server_start",
"arguments": {
"id": "rest-api",
"name": "REST API Server",
"command": "go",
"args": ["run", "main.go"],
"env_vars": {
"PORT": "8080",
"ENV": "development"
}
}
}
{
"name": "go_server_logs",
"arguments": {
"id": "rest-api",
"count": 100
}
}
{
"name": "go_profile",
"arguments": {
"type": "cpu",
"output": "api-cpu.prof",
"duration": "60s"
}
}
{
"name": "go_server_stop",
"arguments": {
"id": "rest-api"
}
}
库开发
开发并发布 Go 库的工作流:
{
"name": "go_fmt",
"arguments": {
"paths": ["./..."]
}
}
{
"name": "go_lint",
"arguments": {
"linter": "golangci-lint",
"package": "./..."
}
}
{
"name": "go_test",
"arguments": {
"cover": true,
"cover_pkg": "./...",
"bench": true
}
}
{
"name": "go_benchmark",
"arguments": {
"pattern": "Benchmark.*",
"count": 10
}
}
{
"name": "go_doc",
"arguments": {
"package": "./...",
"all": false
}
}
{
"name": "go_cross_compile",
"arguments": {
"output": "lib-test-linux",
"goos": "linux",
"goarch": "amd64"
}
}
性能问题调试
识别并修复性能瓶颈:
{
"name": "go_benchmark",
"arguments": {
"pattern": "BenchmarkSlowFunction",
"count": 20
}
}
{
"name": "go_profile",
"arguments": {
"type": "cpu",
"output": "slow-cpu.prof",
"duration": "30s",
"package": "./internal/slow"
}
}
{
"name": "go_trace",
"arguments": {
"output": "slow-trace.out",
"package": "./internal/slow"
}
}
{
"name": "go_memory_profile",
"arguments": {
"output": "slow-mem.prof",
"package": "./internal/slow"
}
}
{
"name": "go_race_detect",
"arguments": {
"package": "./internal/slow"
}
}
分析性能分析结果:
go tool pprof cpu.prof
go tool trace trace.out
go tool pprof mem.prof
资源用法
资源提供有关 Go 工作区的结构化信息。可通过 MCP 资源协议访问这些信息。
使用 go://modules
发现项目依赖项和模块信息:
访问方式:
Resource URI: go://modules
使用场景:
- 添加新软件包前了解项目依赖项
- 检查模块版本
- 识别未使用的依赖项
- 规划依赖项更新
示例工作流:
- 访问
go://modules查看当前依赖项 - 使用
go_pkg_search查找替代方案 - 使用
go_mod并设置operation: "get"添加新软件包 - 使用
go_mod并设置operation: "tidy"进行清理
使用 go://build-tags
发现构建标签和条件编译:
访问方式:
Resource URI: go://build-tags
使用场景:
- 了解特定平台的代码
- 查找功能标志
- 规划交叉编译
- 识别条件构建
示例工作流:
- 访问
go://build-tags查看可用标签 - 使用
go_build并设置tags: ["production", "linux"]进行特定构建 - 使用
go_cross_compile并设置适当的标签进行平台构建
使用 go://tests
发现测试文件和基准测试:
访问方式:
Resource URI: go://tests
使用场景:
- 查找项目中的所有测试文件
- 发现基准测试函数
- 规划测试覆盖率改进
- 了解测试结构
示例工作流:
- 访问
go://tests查看所有测试文件 - 使用
go_test并设置cover: true,运行测试并生成覆盖率数据 - 使用
go_benchmark运行指定的基准测试 - 使用
go_race_detect检查竞态条件
使用 go://workspace
了解项目结构和配置:
访问方式:
Resource URI: go://workspace
使用场景:
- 了解项目布局
- 查找主程序包
- 发现模块结构
- 规划重构
示例工作流:
- 访问
go://workspace了解项目结构 - 使用
go_build并设置适当的软件包路径 - 使用
go_test并设置指定的软件包路径 - 使用
go_fmt并设置目标路径
使用 go://pkg-docs/{path}
直接访问软件包文档:
访问模式:
Resource URI: go://pkg-docs/net/http
Resource URI: go://pkg-docs/github.com/gin-gonic/gin
使用场景:
- 快速查阅标准库文档
- 查看第三方软件包文档
- 学习软件包 API
- 查找用法示例
示例工作流:
- 访问
go://pkg-docs/net/http查阅 HTTP 软件包文档 - 使用
go_pkg_examples获取代码示例 - 使用
go_doc查阅本地软件包文档 - 将示例集成到代码中
带版本的示例:
Resource URI: go://pkg-docs/github.com/gin-gonic/[email protected]
使用 go://tools
了解所有可用工具及其功能:
访问模式:
Resource URI: go://tools
使用场景:
- 开始使用服务时了解可用工具
- 理解工具参数和架构
- 为特定任务查找合适的工具
- 探索工具功能
示例工作流:
- 访问
go://tools查看全部 22 个可用工具 - 查看工具说明和参数架构
- 为工作流选择合适的工具
- 组合使用工具以完成复杂任务
示例响应结构: 该资源会返回一个 JSON 对象,其中包含:
tools:工具元数据数组,包括名称、说明和输入架构count:可用工具总数
使用 go://prompts
了解所有可用于引导工作流的提示词:
访问模式:
Resource URI: go://prompts
使用场景:
- 查找适用于特定开发任务的提示词
- 理解提示词参数和要求
- 了解引导式工作流
- 规划开发流程
示例工作流:
- 访问
go://prompts查看全部 7 个可用提示词 - 查看提示词说明和参数
- 在开发的相应阶段使用合适的提示词
- 将提示词与工具结合,完成完整工作流
示例响应结构: 该资源会返回一个 JSON 对象,其中包含:
prompts:提示词元数据数组,包括名称、说明和参数count:可用提示词总数
使用 go://resources
了解所有可用资源:
访问模式:
Resource URI: go://resources
使用场景:
- 了解有哪些可用资源
- 查找资源 URI 和说明
- 规划基于资源的工作流
- 了解工作区发现功能
示例工作流:
- 访问
go://resources查看全部 8 个可用资源 - 查看资源 URI 和说明
- 使用资源收集工作区信息
- 将资源与工具结合,以便做出明智决策
示例响应结构: 该资源会返回一个 JSON 对象,其中包含:
resources:资源元数据数组,包括 URI、名称、说明和 MIME 类型count:可用资源总数
资源集成示例
完整的项目分析工作流
-
了解项目结构:
- 访问
go://workspace查看项目布局 - 访问
go://modules了解依赖项
- 访问
-
分析代码质量:
- 访问
go://tests查看测试覆盖情况 - 访问
go://build-tags了解条件编译
- 访问
-
规划改进:
- 访问
go://tools查找合适的工具 - 访问
go://prompts获取引导式工作流
- 访问
-
实施改进:
- 根据资源提供的信息使用工具
- 遵循提示词执行结构化工作流
依赖项管理工作流
- 访问
go://modules查看当前依赖项 - 使用
go_pkg_search查找替代项 - 访问
go://pkg-docs/{package}查阅文档 - 使用
go_mod添加依赖项 - 再次访问
go://modules验证更改
测试覆盖率分析工作流
- 访问
go://tests查看所有测试文件 - 使用
go_test并设置cover: true获取覆盖率报告 - 找出测试覆盖率中的缺口
- 使用
write-go-tests提示词获取指导 - 再次访问
go://tests验证新增测试
高级模式 - 复杂工作流和最佳实践
在复杂工作流中组合使用工具
提交前工作流
提交代码前的自动检查:
{
"name": "go_fmt",
"arguments": {
"paths": ["./..."]
}
}
{
"name": "go_lint",
"arguments": {
"linter": "golangci-lint",
"package": "./..."
}
}
{
"name": "go_test",
"arguments": {
"cover": true,
"race": true
}
}
发布准备工作流
通过多个平台构建准备发布:
{
"name": "go_mod",
"arguments": {
"operation": "tidy"
}
}
{
"name": "go_test",
"arguments": {
"cover": true,
"cover_pkg": "./..."
}
}
{
"name": "go_build",
"arguments": {
"output": "myapp",
"trimpath": true,
"ldflags": "-X main.version=1.0.0"
}
}
然后为所有目标平台进行交叉编译。
持续性能分析工作流
持续监控性能变化:
{
"name": "go_server_start",
"arguments": {
"id": "monitored-server",
"name": "Monitored Server",
"command": "go",
"args": ["run", "main.go"]
}
}
{
"name": "go_profile",
"arguments": {
"type": "cpu",
"output": "profile-$(date +%s).prof",
"duration": "5m"
}
}
定期检查日志和性能分析结果,以识别趋势。
将资源与工具配合使用
依赖管理工作流
利用资源为工具使用提供依据:
- 访问
go://modules查看当前依赖 - 使用
go_pkg_search查找替代方案 - 使用
go_pkg_docs比较各个选项 - 使用
go_mod添加选定的包 - 再次访问
go://modules进行验证
测试驱动开发工作流
利用资源指导测试:
- 访问
go://tests查看现有测试结构 - 使用
go_test和cover: true查看覆盖率缺口 - 根据覆盖率报告编写新测试
- 使用
go_benchmark确保性能 - 访问
go://tests验证是否包含新测试
错误处理与故障排除
构建失败
构建失败时,使用以下诊断工作流:
{
"name": "go_fmt",
"arguments": {
"paths": ["./..."]
}
}
{
"name": "go_lint",
"arguments": {
"package": "./..."
}
}
{
"name": "go_mod",
"arguments": {
"operation": "tidy"
}
}
{
"name": "go_build",
"arguments": {
"output": "myapp"
}
}
测试失败
测试失败时,按步骤进行排查:
{
"name": "go_test",
"arguments": {
"verbose": true,
"package": "./internal/failing"
}
}
{
"name": "go_race_detect",
"arguments": {
"package": "./internal/failing"
}
}
{
"name": "go_trace",
"arguments": {
"output": "test-trace.out",
"package": "./internal/failing"
}
}
服务问题
服务行为异常时:
{
"name": "go_server_status",
"arguments": {
"id": "problematic-server"
}
}
{
"name": "go_server_logs",
"arguments": {
"id": "problematic-server",
"count": 0
}
}
{
"name": "go_profile",
"arguments": {
"type": "mem",
"output": "server-mem.prof",
"duration": "60s"
}
}
最佳实践
开发方面
- 每次提交前使用
go_fmt - 对并发代码使用
go_test并设置race: true - 定期使用
go_lint,尽早发现问题 - 访问
go://workspace了解项目结构
生产方面
- 构建时始终使用
trimpath: true - 通过
ldflags添加版本信息 - 发布前使用
go_race_detect进行测试 - 在目标平台上进行交叉编译和测试
性能方面
- 优化前后都进行基准测试
- 使用符合实际情况的工作负载进行性能分析
- 使用
go_trace排查并发问题 - 监控内存性能分析结果,检查是否存在泄漏
包管理方面
- 使用
go://modules了解依赖 - 添加包之前先进行搜索(
go_pkg_search) - 集成之前先查阅文档(
go_pkg_docs) - 定期使用
go_mod tidy清理
安全注意事项
- 所有命令执行都需要用户许可(除非
DISABLE_NOTIFICATIONS=true) - 命令以与 MCP 服务进程相同的权限运行
- 命令验证可防止注入攻击
- 权限系统可以使用系统通知或控制台提示
许可证
本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
贡献
欢迎贡献!请随时提交 Pull Request。
更新日志
版本历史请参阅 CHANGELOG.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。