多语言开发工具协议服务器

GoDevMCP是一个专注于Go语言并支持Rust和Python的模型上下文协议(MCP)服务器,提供文档查询、代码搜索、项目导航等功能。

  • by fpt
  • Go
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 fpt/go-dev-mcp

使用说明

GoDevMCP

介绍

GoDevMCP是一个模型上下文协议(MCP)服务器,它提供专注于Go的开发工具,并对Rust和Python提供额外支持。它提供文档查找、代码搜索、项目导航等功能。

安装

先决条件

  • 需要GitHub身份验证 仅适用于GitHub工具 (代码搜索、内容等), 差异、问题、拉取请求、工作流运行)。其他工具(Go/Rust/Python文档, 目录树、本地搜索、大纲、标记、验证)在没有它的情况下工作。
  • 服务器按以下顺序解析GitHub令牌:
    1. 这 GITHUB_TOKEN 或 GH_TOKEN 环境变量(如果已设置)。
    2. 否则,本地安装并经过身份验证的 gh 命令行界面 (gh auth login).

使用go install

您可以使用Go的install命令直接安装GoDevMCP:

go install github.com/fpt/go-dev-mcp/godevmcp@latest

这将下载、编译二进制文件并将其安装到您的 $GOPATH/bin 目录(通常 ~/go/bin).确保此目录位于系统的PATH中。

从源头构建

  1. 克隆仓库
  2. 跑 make build 构建应用程序和 make install 安装。

MCP设置

克劳德代码

运行此命令以添加到用户范围

claude mcp add godevmcp -s user godevmcp serve

VSCode

将此部分添加到用户的 settings.json

    "mcp": {
        "servers": {
            "go-dev-mcp": {
                "type": "stdio",
                "command": "godevmcp",
                "args": [
                    "serve"
                ],
            }
        }
    }

工具

Go文档

工具 说明
search_godoc 在pkg.Go.dev上搜索Go软件包
read_godoc 使用基于行的分页阅读Go包文档
search_within_godoc 在特定Go包的文档中搜索关键字
outline_go_package 获取Go包的全面概述:依赖关系、导出声明和调用图
validate_go_code 使用Go-vet、构建检查、格式和模块整洁性验证Go代码

Rust文档

工具 说明
search_rustdoc 在docs.rs上搜索Rust板条箱
read_rustdoc 使用基于行的分页阅读Rust crate文档
search_within_rustdoc 在特定Rust crate文档中搜索关键字

Python文档

工具 说明
search_pydoc 在docs.Python.org上搜索Python标准库模块
read_pydoc 使用基于行的分页阅读Python标准库模块文档
search_within_pydoc 在特定Python模块的文档中搜索关键字

项目导航

工具 说明
tree_dir 显示具有深度限制的本地目录树结构
search_local_files 在具有匹配限制的本地目录中搜索文件内容
scan_markdown 扫描markdown文件以提取带有行号的标题

GitHub集成

工具 说明
search_github_code 使用紧凑格式在GitHub存储库中搜索代码
get_github_content 使用基于行的分页从GitHub获取文件内容
tree_github_repo 显示具有深度限制的GitHub存储库树结构

说明

  1. 构建应用程序

    make build
    
  2. 运行应用程序

    make run
    

可用的生成命令

  • make run -运行应用程序
  • make build -构建应用程序并安装到~/bin
  • make test -运行单元测试
  • make fmt -使用gofumpt格式化代码
  • make lint -运行golangci lint
  • make inspect -MCP检查器运行
  • make help -显示帮助信息

发展

项目结构

.
├── godevmcp/       # Application entry point
│   └── main.go     # Main application entry point
├── doc/            # Documentation files
├── internal/       # Private application and library code
│   ├── app/        # Application core functionality
│   ├── infra/      # Infrastructure code
│   ├── mcptool/    # MCP tooling implementations
│   ├── repository/ # Repository implementations
│   └── subcmd/     # Subcommand implementations
├── output/         # Build artifacts
│   └── godevmcp    # Compiled binary
├── pkg/            # Public library code
│   └── dq/         # Document query utility package
├── Makefile        # Build automation
├── go.mod          # Go module definition
└── go.sum          # Go module checksum

包的依赖

以下Mermaid图显示了项目中的内部包依赖关系:

graph TD
    %% Entry point
    main[godevmcp/main] --> subcmd[internal/subcmd]
    
    %% Core application layer
    subcmd --> app[internal/app]
    subcmd --> mcptool[internal/mcptool]
    mcptool --> app
    
    %% Application modules
    app --> repository[internal/repository]
    app --> infra[internal/infra]
    app --> contentsearch[internal/contentsearch]
    app --> model[internal/model]
    app --> dq[pkg/dq]
    
    %% MCP layer
    mcptool --> infra
    
    %% Infrastructure dependencies
    infra --> repository
    contentsearch --> model
    
    %% External dependencies (key ones)
    subcmd -.-> subcommands[google/subcommands]
    mcptool -.-> mcp[mark3labs/mcp-go]
    infra -.-> github[google/go-github]
    app -.-> errors[pkg/errors]
    app -.-> goldmark[yuin/goldmark]
    app -.-> cache[patrickmn/go-cache]
    
    %% Styling
    classDef entryPoint fill:#e1f5fe
    classDef coreLayer fill:#f3e5f5
    classDef appLayer fill:#e8f5e8
    classDef infraLayer fill:#fff3e0
    classDef external fill:#fce4ec,stroke-dasharray: 5 5
    
    class main entryPoint
    class subcmd,mcptool coreLayer
    class app,repository,infra,contentsearch,model appLayer
    class dq infraLayer
    class subcommands,mcp,github,errors,goldmark,cache external

此图说明:

  • 入口点: main 包坐标子命令
  • 核心层: subcmd (CLI)和 mcptool (MCP服务器)提供用户界面
  • 应用层: app 包含业务逻辑,由基础架构包支持
  • 基础设施层:共享公用设施和外部集成
  • 外部依赖项:关键的第三方软件包(用虚线显示)

通用开发工作流程

  1. 对代码进行更改
  2. 跑 make fmt 格式化代码
  3. 跑 make lint 检查问题
  4. 跑 make test 确保测试通过
  5. 建立 make build

人工智能发展

  • 遵循CONTRIBUTING.md中的说明
  • 使用 run_make 和 tree_dir 工具,而不是使用shell命令。
  • 使用 search_godoc 和 read_godoc 了解如何使用Go包的工具。
  • 使用 search_rustdoc 和 read_rustdoc Rust crate文档的工具。
  • 使用 search_pydoc 和 read_pydoc Python标准库文档的工具。
  • 使用 tree_github_repo, search_github_code, get_github_content 查看github存储库。
  • 进行重大更改时,请记住更新README.md