mcpField
G
Golang Mcp Server

Golang Mcp Server

本地服务
github.com/inja-online开发工具450 周前更新

关于 Golang Mcp Server

Golang Mcp Server 为 Go 项目开发者提供 MCP 工具,供 AI 助手执行代码、构建、测试和分析项目。除 Go 工作流工具外,还提供项目资源、操作提示词及可选的 LSP 支持。

主要功能

  1. 01运行 Go 文件并构建项目
  2. 02测试、格式化和管理模块
  3. 03性能分析、基准测试与竞态检测
  4. 04启动和管理后台服务器
  5. 05检索 Go 包文档与示例
  6. 06可选 LSP 工具

适用场景

  1. 01让 AI 助手运行 Go 代码和测试
  2. 02分析性能并排查竞态问题
  3. 03查询依赖包文档和代码示例
  4. 04通过 LSP 获取项目诊断

MCP 相关

该 MCP 服务向 AI 客户端公开 Go 执行与开发工具、项目资源和指导提示词。启用 ENABLE_LSP=true 后,还可提供 LSP 工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Go Server

Go Version License Release CI Contributors Changelog

MCP Go Server 是一个模型上下文协议(MCP)服务实现,旨在为 AI 助手提供全面的工具,用于执行、优化和管理 Go 项目。该项目充当 AI 助手(如 Claude)与 Go 运行时之间的桥梁,使 AI 能够与基于 Go 的开发工作流交互并对其进行控制。

目录

快速开始

选择你的平台,快速开始:

常用平台
安装方式
  1. Go Install - 通过 Go 工具链安装(推荐)
  2. 从源代码安装 - 从 GitHub 仓库构建
  3. 预编译二进制文件 - 下载现成的二进制文件
  4. Docker - 使用容器化版本
开始前的准备
  • Go 1.24 或更高版本 - 使用 go version 检查
  • Git - 用于克隆仓库(如果从源代码构建)
快速参考表
平台兼容性
平台macOSWindowsLinux难度
Claude Desktop✅✅✅⭐ 简单
Cursor✅✅✅⭐ 简单
VS Code✅✅✅⭐ 简单
Docker✅✅✅⭐⭐ 中等
JetBrains IDEs✅✅✅⭐⭐ 中等
Windsurf✅✅✅⭐ 简单
Zed✅✅✅⭐ 简单
安装方式对比
方式速度需要 Go需要 Docker适用对象
Go Install⚡ 快✅ 是❌ 否大多数用户
预编译二进制文件⚡ 快❌ 否❌ 否未安装 Go 的用户
从源代码安装🐌 较慢✅ 是❌ 否开发人员
Docker⚡ 快❌ 否✅ 是容器环境
各操作系统的配置文件位置
平台macOSWindowsLinux
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

✅ 推荐给大多数用户

步骤:

  1. 运行安装命令:
go install github.com/inja-online/golang-mcp/cmd/mcp-go@latest
  1. 验证安装:
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 中
从源代码构建

🔧 适用于开发或自定义构建

步骤:

  1. 克隆仓库:
git clone https://github.com/inja-online/golang-mcp.git
cd golang-mcp
  1. 构建项目:
make build
  1. 验证安装:
./bin/mcp-go --version

**✅ 成功:**二进制文件将位于 bin/ 目录中

**💡 提示:**如果没有 make,也可以使用 go build -o mcp-go ./cmd/mcp-go

使用预构建二进制文件

✅ 最快的方式——无需安装 Go

步骤:

  1. 从发布页面下载

  2. 适用于 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/
  1. 适用于 Windows:
  • 下载适用于 Windows 的 .zip 文件
  • 解压并将 mcp-go.exe 移到 PATH 中的某个目录(例如,C:\Program Files\mcp-go\)
  1. 验证安装:
mcp-go --version

**✅ 成功:**你应该会看到版本号

**💡 提示:**选择与你的操作系统和架构相匹配的二进制文件(Linux/macOS/Windows,x86_64/arm64)

使用 Docker

🔧 适用于容器化环境

从 GitHub Container Registry 拉取

步骤:

  1. 拉取镜像:
docker pull ghcr.io/inja-online/golang-mcp:latest
  1. 验证:
docker images | grep golang-mcp

**✅ 成功:**你应该会看到列出的镜像

从源代码构建

步骤:

  1. 克隆并构建:
git clone https://github.com/inja-online/golang-mcp.git
cd golang-mcp
docker build -t mcp-go:latest .
  1. 验证:
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_NOTIFICATIONSbooleanfalse设置为 true 可禁用命令执行的权限提示
DEBUG_MCPbooleanfalse设置为 true 可启用调试日志(便于排查问题)
ENABLE_LSPbooleanfalse设置为 true 可启用 LSP 工具。需要在 PATH 中包含 gopls
GOROOTstringauto-detected自定义 Go 根目录
GOPATHstringdefault自定义 Go 工作区路径
GOOSstringcurrent OS交叉编译的目标操作系统
GOARCHstringcurrent arch交叉编译的目标架构
GOPROXYstringhttps://proxy.golang.orgGo 模块代理 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 或用户设置⭐ 简单
Dockerdocker-compose.yml 或命令行⭐⭐ 中等
1. Claude Desktop - ⭐ 简单 - 最受欢迎的桌面应用

前置条件:

  • 已安装 Claude Desktop
  • 已安装 mcp-go 二进制文件(参见安装方式)

步骤:

  1. 找到配置文件位置:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 打开或创建配置文件

  3. 添加 MCP 服务配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": [],
      "env": {
        "DISABLE_NOTIFICATIONS": "true"
      }
    }
  }
}
  1. 更新命令路径:

    • 将 /usr/local/bin/mcp-go 替换为实际的 mcp-go 路径
    • 使用以下命令查找:which mcp-go(macOS/Linux)或 where mcp-go(Windows)
  2. 重启 Claude Desktop

✅ 验证:

  • 打开 Claude Desktop
  • 检查 MCP 工具是否可用
  • 尝试让 Claude 运行 Go 命令

⚠️ 故障排除:

  • 如果工具没有显示,请检查配置文件的 JSON 是否有效
  • 确认二进制文件路径正确
  • 检查 Claude Desktop 日志中是否有错误
2. Cursor - ⭐ 简单 - AI 驱动的代码编辑器

前置条件:

  • 已安装 Cursor
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Cursor 设置:

    • 按 Cmd+,(macOS)或 Ctrl+,(Windows/Linux)
    • 或者:Cursor → 设置 → 设置
  2. 导航到 MCP Servers:

    • 在设置中搜索 “MCP”
    • 或者前往:设置 → 功能 → MCP Servers
  3. 添加服务配置:

    • 点击 “Add Server” 或编辑设置 JSON
    • 添加配置:
{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": [],
      "env": {
        "DISABLE_NOTIFICATIONS": "true"
      }
    }
  }
}
  1. 更新命令路径以匹配你的安装位置

  2. 重新加载 Cursor(重启或重新加载窗口)

✅ 验证:

  • 打开一个 Go 文件
  • 检查命令面板中是否提供 MCP 工具
  • 尝试使用 Go 相关的 AI 功能
3. VS Code - ⭐ 简单 - 支持 MCP 的热门代码编辑器

前置条件:

  • 已安装 MCP 扩展的 VS Code
  • 已安装 mcp-go 二进制文件

步骤:

  1. 选择配置位置:

    • 工作区: .vscode/settings.json(项目专用)
    • 用户: 用户设置 JSON(全局)
  2. 打开设置 JSON:

    • 按 Cmd+Shift+P(macOS)或 Ctrl+Shift+P(Windows/Linux)
    • 输入 "Preferences: Open Settings (JSON)"
    • 或在工作区中编辑 .vscode/settings.json
  3. 添加 MCP 服务配置:

{
  "mcp.servers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": [],
      "env": {
        "DISABLE_NOTIFICATIONS": "true"
      }
    }
  }
}
  1. 更新命令路径

  2. 重新加载 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 二进制文件

步骤:

  1. 从 VS Code 市场安装 Cline 扩展

  2. 打开 Cline 设置:

    • 前往:设置 → 扩展 → Cline
    • 或编辑设置 JSON
  3. 添加 MCP 服务:

{
  "cline.mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新命令路径并重新加载

**✅ 验证:**Cline 应能识别 MCP Go 工具

5. Windsurf - ⭐ 简单 - AI 驱动的 IDE

前置条件:

  • 已安装 Windsurf
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Windsurf 设置:

    • 前往设置 → MCP 服务
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": [],
      "env": {
        "DISABLE_NOTIFICATIONS": "true"
      }
    }
  }
}
  1. 更新路径并重启 Windsurf

**✅ 验证:**Windsurf 中可使用 MCP 工具

6. Zed - ⭐ 简单 - 现代代码编辑器

前置条件:

  • 已安装 Zed
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Zed 设置:

    • Cmd+,(macOS)或 Ctrl+,(Windows/Linux)
  2. 找到 MCP 配置:

    • 设置 → 功能 → MCP
  3. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启 Zed

**✅ 验证:**MCP 集成正常工作

7. JetBrains AI Assistant - ⭐⭐ 中等 - 适用于所有 JetBrains IDE

前置条件:

  • 已启用 AI Assistant 的 JetBrains IDE
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 IDE 设置:

    • 前往:设置/偏好设置 → 工具 → AI Assistant → MCP 服务
  2. 添加 MCP 服务:

    • 点击“添加”或编辑配置
    • 添加:
{
  "mcp-go": {
    "command": "/usr/local/bin/mcp-go",
    "args": [],
    "env": {
      "DISABLE_NOTIFICATIONS": "true"
    }
  }
}
  1. 更新路径并重启 IDE

**✅ 验证:**AI Assistant 可以使用 Go 工具

**💡 提示:**适用于 IntelliJ IDEA、GoLand、WebStorm、PyCharm 等

8. Perplexity Desktop - ⭐ 简单 - 桌面 AI 助手

前置条件:

  • 已安装 Perplexity Desktop
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Perplexity 设置:

    • 设置 → 集成 → MCP 服务
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

**✅ 验证:**Perplexity 可以访问 Go 工具

9. Amazon Q Developer CLI - ⭐ 简单 - AWS AI 编码助手命令行工具

前置条件:

  • 已安装 Amazon Q Developer CLI
  • 已安装 mcp-go 二进制文件

步骤:

  1. 创建或编辑配置文件:

    • 位置:~/.aws-q/config.json 或 %USERPROFILE%\.aws-q\config.json
  2. 添加 MCP 服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**运行支持 Go 的 aws-q 命令

10. Smithery - ⭐ 简单 - MCP 服务管理工具 **前置条件:** - 已安装 Smithery - 已安装 `mcp-go` 二进制文件

步骤:

  1. 打开 Smithery 配置:

    • 编辑 ~/.smithery/config.json,或使用 Smithery UI
  2. 添加服务:

{
  "servers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启 Smithery

✅ 验证: 服务显示在 Smithery 中

11. Claude Code CLI - ⭐ 简单 - 命令行 Claude 界面

前置条件:

  • 已安装 Claude Code CLI
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置文件:

    • 位置:~/.claude-code/config.json
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

✅ 验证: CLI 可以使用 Go 工具

12. Amp - ⭐ 简单 - AI 编码助手

前置条件:

  • 已安装 Amp
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Amp 设置:

    • 设置 → MCP 服务
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

✅ 验证: Amp 集成正常运行

13. Warp Terminal - ⭐ 简单 - 配备 AI 的现代终端

前置条件:

  • 已安装 Warp Terminal
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Warp 设置:

    • Cmd+,(macOS)或 Ctrl+,(Windows/Linux)
  2. 导航至 AI → MCP 服务

  3. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启 Warp

✅ 验证: Warp 中的 AI 功能可以使用 Go 工具

14. Copilot Coding Agent - ⭐ 简单 - GitHub Copilot Agent

前置条件:

  • 已安装 Copilot Coding Agent
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置:

    • 位置:~/.copilot/config.json
  2. 添加 MCP 服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

✅ 验证: Copilot Agent 可以使用 Go 工具

15. Copilot CLI - ⭐ 简单 - GitHub Copilot 命令行

前置条件:

  • 已安装 GitHub Copilot CLI
  • 已安装 mcp-go 二进制文件

步骤:

  1. 配置 Copilot CLI:

    • 编辑 ~/.github/copilot/config.json
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

✅ 验证: CLI 命令可以与 Go 配合使用

16. LM Studio - ⭐ 简单 - 本地大模型界面

前置条件:

  • 已安装 LM Studio
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 LM Studio 设置:

    • 设置 → MCP 服务
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

✅ 验证: LM Studio 可以使用 Go 工具

17. Visual Studio 2022 - ⭐⭐ 中等 - Microsoft IDE

前置条件:

  • 已安装带 MCP 扩展的 Visual Studio 2022
  • 已安装 mcp-go 二进制文件

步骤:

  1. 安装 MCP 扩展以用于 Visual Studio 2022

  2. 打开“工具 → 选项 → MCP 服务”

  3. 添加服务:

    • 名称:mcp-go
    • 命令:mcp-go.exe 的路径
    • 参数:(留空)
  4. 保存并重启 Visual Studio

✅ 验证: Visual Studio 中可以使用 MCP 工具

18. Roo Code - ⭐ 简单 - AI 编码助手

前置条件:

  • 已安装 Roo Code
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Roo Code 设置:

    • 设置 → MCP 配置
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

✅ 验证: Roo Code 集成正常运行

19. Gemini CLI - ⭐ 简单 - Google Gemini 命令行

前置条件:

  • 已安装 Gemini CLI
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置:

    • 位置:~/.gemini/config.json
  2. 添加 MCP 服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

✅ 验证: Gemini CLI 可以使用 Go 工具

20. Qwen Coder - ⭐ 简单 - AI 编码助手

前置条件:

  • 已安装 Qwen Coder
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开设置:

    • 设置 → MCP 服务
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

**✅ 验证:**Qwen Coder 集成正常工作

21. Opencode - ⭐ 简单 - 开源 AI 编码工具

前置条件:

  • 已安装 Opencode
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置:

    • 位置:~/.opencode/config.json
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Opencode 可以使用 Go 工具

22. OpenAI Codex - ⭐ 简单 - OpenAI 编码助手

前置条件:

  • 可访问 OpenAI Codex
  • 已安装 mcp-go 二进制文件

步骤:

  1. 配置 Codex:

    • 编辑 ~/.openai/codex/config.json
  2. 添加 MCP 服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Codex 集成正常工作

23. Kiro - ⭐ 简单 - AI 编码助手

前置条件:

  • 已安装 Kiro
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Kiro 设置:

    • 设置 → MCP Servers
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

**✅ 验证:**Kiro 可以使用 Go 工具

24. Trae - ⭐ 简单 - AI 开发工具

前置条件:

  • 已安装 Trae
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置:

    • 位置:~/.trae/config.json
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Trae 集成正常工作

25. Bun Runtime - ⭐ 简单 - 支持 MCP 的 JavaScript 运行时

前置条件:

  • 已安装 Bun
  • 已安装 mcp-go 二进制文件

步骤:

  1. 创建 MCP 配置:

    • 位置:~/.bun/mcp/config.json
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Bun 可以使用 MCP Go 服务

26. Deno Runtime - ⭐ 简单 - JavaScript/TypeScript 运行时

前置条件:

  • 已安装 Deno
  • 已安装 mcp-go 二进制文件

步骤:

  1. 配置 Deno MCP:

    • 编辑 ~/.deno/mcp/config.json
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Deno MCP 集成正常工作

27. Docker - ⭐⭐ 中等 - 基于容器的安装

前置条件:

  • 已安装 Docker
  • Docker Compose(可选,便于管理)

步骤:

  1. 拉取镜像:
docker pull ghcr.io/inja-online/golang-mcp:latest
  1. 运行容器:
docker run -it --rm \
  -v $(pwd):/workspace \
  -w /workspace \
  ghcr.io/inja-online/golang-mcp:latest
  1. 或使用 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
  1. 使用 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 兼容客户端

步骤:

  1. 从发布页面下载 .mcpb 文件

  2. 安装捆绑包:

    • 双击 .mcpb 文件,或
    • 使用 MCP 客户端的“Install Bundle”功能
  3. 按照客户端特定的安装提示操作

**✅ 验证:**捆绑包出现在 MCP 客户端的服务列表中

💡 提示:.mcpb 文件是包含所有依赖项的独立捆绑包

29. Windows (Detailed) - ⭐ 简单 - 完整的 Windows 安装指南

前置条件:

  • Windows 10/11
  • 已安装 Go 1.24+(可选,用于从源代码构建)

步骤:

  1. 下载 Windows 二进制文件:

  2. 解压存档:

    • 右键单击 → 全部解压
    • 或使用:Expand-Archive golang-mcp_Windows_x86_64.zip
  3. 移动到永久位置:

    • 创建文件夹:C:\Program Files\mcp-go\
    • 将 mcp-go.exe 移到该位置
  4. 添加到 PATH:

    • 打开“系统属性”→“环境变量”
    • 编辑“Path”变量
    • 添加:C:\Program Files\mcp-go
    • 在所有对话框中点击“确定”
  5. 验证安装:

    • 打开 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 二进制文件

步骤:

  1. 打开 BoltAI 设置:

    • 设置 → MCP 服务
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

**✅ 验证:**BoltAI 集成正常运行

31. Rovo Dev CLI - ⭐ 简单 - 开发命令行工具

前置条件:

  • 已安装 Rovo Dev CLI
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置:

    • 位置:~/.rovo/config.json
  2. 添加 MCP 服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Rovo CLI 可以使用 Go 工具

32. Zencoder - ⭐ 简单 - AI 代码生成工具

前置条件:

  • 已安装 Zencoder
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Zencoder 设置:

    • 设置 → MCP 配置
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

**✅ 验证:**Zencoder 可以使用 Go 工具

33. Qodo Gen - ⭐ 简单 - AI 代码生成器

前置条件:

  • 已安装 Qodo Gen
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置:

    • 位置:~/.qodo/config.json
  2. 添加 MCP 服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Qodo Gen 集成正常运行

34. Factory - ⭐ 简单 - AI 开发平台

前置条件:

  • 已安装 Factory
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Factory 设置:

    • 设置 → MCP 服务
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

**✅ 验证:**Factory 可以使用 Go 工具

35. Crush - ⭐ 简单 - AI 编码助手

前置条件:

  • 已安装 Crush
  • 已安装 mcp-go 二进制文件

步骤:

  1. 编辑配置:

    • 位置:~/.crush/config.json
  2. 添加服务:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径

**✅ 验证:**Crush 集成正常运行

36. Augment Code - ⭐ 简单 - AI 代码增强工具

前置条件:

  • 已安装 Augment Code
  • 已安装 mcp-go 二进制文件

步骤:

  1. 打开 Augment Code 设置:

    • 设置 → MCP 服务
  2. 添加配置:

{
  "mcpServers": {
    "mcp-go": {
      "command": "/usr/local/bin/mcp-go",
      "args": []
    }
  }
}
  1. 更新路径并重启

**✅ 验证:**Augment Code 可以使用 Go 工具

独立使用

直接运行 MCP Go 服务:

mcp-go

该服务通过 stdio(标准输入/输出)使用 JSON-RPC 2.0 协议进行通信。

**💡 提示:**适用于测试或自定义集成

故障排除 - 常见问题及解决方案

常见问题及解决方案。根据症状快速查找问题。

安装问题
❌ “找不到命令:mcp-go”

症状:

  • 终端提示 mcp-go: command not found
  • 二进制文件存在,但无法运行

解决方案:

  1. 检查是否已安装二进制文件:

    which mcp-go  # macOS/Linux
    where mcp-go   # Windows
    
  2. 添加到 PATH:

    • **macOS/Linux:**将 $HOME/go/bin 添加到 PATH
      export PATH=$PATH:$HOME/go/bin
      
    • **Windows:**在“环境变量”中将 %USERPROFILE%\go\bin 添加到 PATH
  3. 验证 PATH:

    echo $PATH  # macOS/Linux
    echo %PATH% # Windows
    

✅ 成功:mcp-go --version 应该可以正常运行

❌ “Permission denied”

症状:

  • 运行 mcp-go 时出现 Permission denied 错误

解决方案:

  1. 使二进制文件可执行:

    chmod +x /path/to/mcp-go
    
  2. 检查文件权限:

    ls -l /path/to/mcp-go
    
  3. 在 Windows 上: 如有需要,请以管理员身份运行

❌ “Go 版本过旧”

症状:

  • 出现有关 Go 版本的错误
  • 要求 Go 1.24+

解决方案:

  1. 检查 Go 版本:

    go version
    
  2. 更新 Go:

    • 访问 golang.org
    • 下载最新版本
    • 安装后重启终端
配置问题
❌ “找不到配置文件”

症状:

  • 平台无法找到配置文件
  • 服务无法启动

解决方案:

  1. 创建配置文件(如果文件不存在)
  2. 检查文件位置(参见平台专属指南)
  3. 验证 JSON 语法是否有效
  4. 检查文件权限(确保可读)
❌ “配置文件中的 JSON 无效”

症状:

  • 配置文件存在语法错误
  • 服务启动失败

解决方案:

  1. 验证 JSON:

    • 使用在线 JSON 验证工具
    • 或运行:python -m json.tool config.json
  2. 常见错误:

    • 缺少逗号
    • 多余的逗号
    • 括号未闭合
  3. 修复后重启 MCP 客户端

❌ “二进制文件路径不正确”

症状:

  • 服务找不到 mcp-go 二进制文件
  • 日志中出现路径错误

解决方案:

  1. 查找正确路径:

    which mcp-go  # macOS/Linux
    where mcp-go  # Windows
    
  2. 在配置中使用绝对路径(而非相对路径)

  3. 在 Windows 上: 使用正斜杠或双反斜杠:

    "command": "C:/Program Files/mcp-go/mcp-go.exe"
    // or
    "command": "C:\\Program Files\\mcp-go\\mcp-go.exe"
    
平台专属问题
❌ Claude Desktop:工具未显示

症状:

  • 配置文件看起来正确
  • Claude 中没有可用工具

解决方案:

  1. 彻底重启 Claude Desktop
  2. 检查配置文件位置:
    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:%APPDATA%\Claude\claude_desktop_config.json
  3. 验证 JSON 语法
  4. 检查 Claude Desktop 日志中是否有错误
  5. 确认二进制文件路径正确且可执行
❌ VS Code:MCP 扩展无法正常工作

症状:

  • 已安装 MCP 扩展,但无法正常工作
  • 没有可用工具

解决方案:

  1. 检查扩展是否已启用
  2. 重新加载 VS Code 窗口: Cmd+Shift+P → “Reload Window”
  3. 检查输出面板中的 MCP 消息
  4. 验证设置 JSON 语法
  5. 尝试使用工作区设置,而非用户设置
❌ Docker:容器无法启动

症状:

  • Docker 容器立即退出
  • 出现权限错误

解决方案:

  1. 检查 Docker 是否正在运行:

    docker ps
    
  2. 检查镜像是否存在:

    docker images | grep golang-mcp
    
  3. 检查卷挂载:

    • 确认路径正确
    • 检查挂载目录的权限
  4. 查看日志:

    docker logs <container-id>
    
运行时问题
❌ “找不到 Go 命令”

症状:

  • MCP 服务找不到 go 命令
  • Go 工具运行失败

解决方案:

  1. 确认已安装 Go:

    go version
    
  2. 检查 PATH 是否包含 Go:

    echo $PATH  # Should include Go bin directory
    
  3. 如有需要,设置 GOROOT:

    export GOROOT=/usr/local/go
    
❌ “LSP 工具不可用”

症状:

  • LSP 工具未显示
  • 已设置 ENABLE_LSP=true,但没有工具

解决方案:

  1. 检查是否已安装 gopls:

    which gopls
    go install golang.org/x/tools/gopls@latest
    
  2. 确认已设置 ENABLE_LSP:

    echo $ENABLE_LSP  # Should be "true"
    
  3. 设置环境变量后重启 MCP 服务

❌ “权限提示反复出现”

症状:

  • 每个命令都会触发权限提示
  • 希望禁用这些提示

解决方案:

  1. 设置 DISABLE_NOTIFICATIONS:

    export DISABLE_NOTIFICATIONS=true
    
  2. 在配置文件的 env 部分中添加:

    "env": {
      "DISABLE_NOTIFICATIONS": "true"
    }
    
  3. 重启 MCP 客户端

性能问题
❌ “服务运行缓慢”

症状:

  • 命令执行时间过长
  • 出现超时

解决方案:

  1. 启用调试日志:

    export DEBUG_MCP=true
    
  2. 检查系统资源(CPU、内存)

  3. 检查 Go 代理:

    go env GOPROXY
    
  4. 尝试使用其他 GOPROXY:

    export GOPROXY=https://proxy.golang.org
    
获取更多帮助

仍然遇到问题?

  1. 检查日志:

    • 启用 DEBUG_MCP=true
    • 检查平台特定的日志位置
  2. 验证安装:

    mcp-go --version
    go version
    
  3. 独立测试:

    echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | mcp-go
    
  4. 查看 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 工具,针对不同操作系统/架构进行构建。

故障排除

问:工具没有显示在我的客户端中。怎么回事?
答:

  1. 检查配置文件中的 JSON 是否有效
  2. 确认二进制文件路径正确
  3. 重启 MCP 客户端
  4. 检查日志中是否有错误

问:“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、get
  • module_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 或 mem
  • output (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, 必填):唯一服务 ID
  • name (string, 必填):服务名称
  • command (string, 必填):要运行的命令(通常是 'go' 或二进制文件路径)
  • args ([]string, 必填):命令参数
  • working_dir (string, 可选):工作目录
  • env_vars (map[string]string, 可选):环境变量
  • log_size (int, 可选):保留的最大日志行数(默认值:1000)
go_server_stop

停止正在运行的服务。

参数:

  • id (string, 必填):服务 ID
  • force (bool, 可选):强制终止服务(SIGKILL)
go_server_list

列出所有正在运行的服务。

go_server_logs

获取正在运行的服务的日志。

参数:

  • id (string, 必填):服务 ID
  • count (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,必填):工作区根 URI
  • method(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,必填):工作区根 URI
  • method(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"
  }
}

此提示词将指导你完成以下步骤:

  1. 初始化 Go 模块
  2. 创建标准目录结构(cmd/、internal/、pkg/ 等)
  3. 设置 README 和 .gitignore
  4. 创建初始 main.go
  5. 运行 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"
  }
}

此提示词将指导你完成以下步骤:

  1. 通过基准测试建立基线
  2. 分析 CPU 和内存使用情况
  3. 使用 pprof 分析性能配置文件
  4. 找出并修复瓶颈
  5. 衡量改进效果
  6. 检测竞态条件
✅ 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"
  }
}

此提示词将指导你完成:

  1. 首先查看包文档
  2. 使用 go mod get 添加依赖
  3. 检查 go.mod 和 go.sum 的变更
  4. 运行 go mod tidy
  5. 验证构建
  6. 依赖管理最佳实践
✅ go-code-review

Go 代码审查清单,涵盖风格、性能、安全性和最佳实践。

参数:

  • package_path(字符串,可选):要审查的包

使用场景:

  • 准备代码审查
  • 质量保证检查
  • 提交前验证
  • 准备发布

示例:

{
  "name": "go-code-review",
  "arguments": {
    "package_path": "./internal/api"
  }
}

此提示词提供了一份全面的清单,涵盖:

  1. 代码质量(格式化、lint、错误处理)
  2. 测试(覆盖率、边界情况、基准测试)
  3. 并发(竞态条件、同步)
  4. 性能(内存分配、数据结构)
  5. 文档(注释、示例、README)
  6. 依赖(安全性、版本、清理)
  7. 构建和部署(编译、交叉编译)
✅ 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"
  }
}

此提示词涵盖:

  1. 部署前测试和验证
  2. 生产构建配置
  3. 交叉编译设置
  4. 安全注意事项
  5. 性能优化
  6. 监控和日志设置
  7. 部署后验证
使用示例 - 实用示例和工作流

本节提供实用、可直接复制粘贴的示例,展示常见工作流、工具组合和实际场景。

常见开发工作流
快速入门工作流

初始化新项目、格式化代码、运行测试并构建:

{
  "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

使用场景:

  • 添加新软件包前了解项目依赖项
  • 检查模块版本
  • 识别未使用的依赖项
  • 规划依赖项更新

示例工作流:

  1. 访问 go://modules 查看当前依赖项
  2. 使用 go_pkg_search 查找替代方案
  3. 使用 go_mod 并设置 operation: "get" 添加新软件包
  4. 使用 go_mod 并设置 operation: "tidy" 进行清理
使用 go://build-tags

发现构建标签和条件编译:

访问方式:

Resource URI: go://build-tags

使用场景:

  • 了解特定平台的代码
  • 查找功能标志
  • 规划交叉编译
  • 识别条件构建

示例工作流:

  1. 访问 go://build-tags 查看可用标签
  2. 使用 go_build 并设置 tags: ["production", "linux"] 进行特定构建
  3. 使用 go_cross_compile 并设置适当的标签进行平台构建
使用 go://tests

发现测试文件和基准测试:

访问方式:

Resource URI: go://tests

使用场景:

  • 查找项目中的所有测试文件
  • 发现基准测试函数
  • 规划测试覆盖率改进
  • 了解测试结构

示例工作流:

  1. 访问 go://tests 查看所有测试文件
  2. 使用 go_test 并设置 cover: true,运行测试并生成覆盖率数据
  3. 使用 go_benchmark 运行指定的基准测试
  4. 使用 go_race_detect 检查竞态条件
使用 go://workspace

了解项目结构和配置:

访问方式:

Resource URI: go://workspace

使用场景:

  • 了解项目布局
  • 查找主程序包
  • 发现模块结构
  • 规划重构

示例工作流:

  1. 访问 go://workspace 了解项目结构
  2. 使用 go_build 并设置适当的软件包路径
  3. 使用 go_test 并设置指定的软件包路径
  4. 使用 go_fmt 并设置目标路径
使用 go://pkg-docs/{path}

直接访问软件包文档:

访问模式:

Resource URI: go://pkg-docs/net/http
Resource URI: go://pkg-docs/github.com/gin-gonic/gin

使用场景:

  • 快速查阅标准库文档
  • 查看第三方软件包文档
  • 学习软件包 API
  • 查找用法示例

示例工作流:

  1. 访问 go://pkg-docs/net/http 查阅 HTTP 软件包文档
  2. 使用 go_pkg_examples 获取代码示例
  3. 使用 go_doc 查阅本地软件包文档
  4. 将示例集成到代码中

带版本的示例:

Resource URI: go://pkg-docs/github.com/gin-gonic/[email protected]
使用 go://tools

了解所有可用工具及其功能:

访问模式:

Resource URI: go://tools

使用场景:

  • 开始使用服务时了解可用工具
  • 理解工具参数和架构
  • 为特定任务查找合适的工具
  • 探索工具功能

示例工作流:

  1. 访问 go://tools 查看全部 22 个可用工具
  2. 查看工具说明和参数架构
  3. 为工作流选择合适的工具
  4. 组合使用工具以完成复杂任务

示例响应结构: 该资源会返回一个 JSON 对象,其中包含:

  • tools:工具元数据数组,包括名称、说明和输入架构
  • count:可用工具总数
使用 go://prompts

了解所有可用于引导工作流的提示词:

访问模式:

Resource URI: go://prompts

使用场景:

  • 查找适用于特定开发任务的提示词
  • 理解提示词参数和要求
  • 了解引导式工作流
  • 规划开发流程

示例工作流:

  1. 访问 go://prompts 查看全部 7 个可用提示词
  2. 查看提示词说明和参数
  3. 在开发的相应阶段使用合适的提示词
  4. 将提示词与工具结合,完成完整工作流

示例响应结构: 该资源会返回一个 JSON 对象,其中包含:

  • prompts:提示词元数据数组,包括名称、说明和参数
  • count:可用提示词总数
使用 go://resources

了解所有可用资源:

访问模式:

Resource URI: go://resources

使用场景:

  • 了解有哪些可用资源
  • 查找资源 URI 和说明
  • 规划基于资源的工作流
  • 了解工作区发现功能

示例工作流:

  1. 访问 go://resources 查看全部 8 个可用资源
  2. 查看资源 URI 和说明
  3. 使用资源收集工作区信息
  4. 将资源与工具结合,以便做出明智决策

示例响应结构: 该资源会返回一个 JSON 对象,其中包含:

  • resources:资源元数据数组,包括 URI、名称、说明和 MIME 类型
  • count:可用资源总数
资源集成示例
完整的项目分析工作流
  1. 了解项目结构:

    • 访问 go://workspace 查看项目布局
    • 访问 go://modules 了解依赖项
  2. 分析代码质量:

    • 访问 go://tests 查看测试覆盖情况
    • 访问 go://build-tags 了解条件编译
  3. 规划改进:

    • 访问 go://tools 查找合适的工具
    • 访问 go://prompts 获取引导式工作流
  4. 实施改进:

    • 根据资源提供的信息使用工具
    • 遵循提示词执行结构化工作流
依赖项管理工作流
  1. 访问 go://modules 查看当前依赖项
  2. 使用 go_pkg_search 查找替代项
  3. 访问 go://pkg-docs/{package} 查阅文档
  4. 使用 go_mod 添加依赖项
  5. 再次访问 go://modules 验证更改
测试覆盖率分析工作流
  1. 访问 go://tests 查看所有测试文件
  2. 使用 go_test 并设置 cover: true 获取覆盖率报告
  3. 找出测试覆盖率中的缺口
  4. 使用 write-go-tests 提示词获取指导
  5. 再次访问 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"
  }
}

定期检查日志和性能分析结果,以识别趋势。

将资源与工具配合使用
依赖管理工作流

利用资源为工具使用提供依据:

  1. 访问 go://modules 查看当前依赖
  2. 使用 go_pkg_search 查找替代方案
  3. 使用 go_pkg_docs 比较各个选项
  4. 使用 go_mod 添加选定的包
  5. 再次访问 go://modules 进行验证
测试驱动开发工作流

利用资源指导测试:

  1. 访问 go://tests 查看现有测试结构
  2. 使用 go_test 和 cover: true 查看覆盖率缺口
  3. 根据覆盖率报告编写新测试
  4. 使用 go_benchmark 确保性能
  5. 访问 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。