samber/godig

GitHub: samber/godig

godig 是一个通过 CLI 和 MCP 服务器探索 pkg.go.dev 的 Go 包与模块信息工具,支持搜索、文档查阅、符号查询、版本追踪和漏洞查询等只读操作。

Stars: 0 | Forks: 0

# godig - 用于 pkg.go.dev 的 CLI 和 MCP 服务器 [![tag](https://img.shields.io/github/tag/samber/godig.svg)](https://github.com/samber/godig/releases) ![Go 版本](https://img.shields.io/badge/Go-%3E%3D%201.25-%23007d9c) [![GoDoc](https://godoc.org/github.com/samber/godig?status.svg)](https://pkg.go.dev/github.com/samber/godig) ![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/80dbddb849002004.svg) [![Go report](https://goreportcard.com/badge/github.com/samber/godig)](https://goreportcard.com/report/github.com/samber/godig) [![贡献者](https://img.shields.io/github/contributors/samber/godig)](https://github.com/samber/godig/graphs/contributors) [![许可证](https://img.shields.io/github/license/samber/godig)](./LICENSE) `godig` 是一个命令行界面(CLI)**和** MCP 服务器,用于通过 [pkg.go.dev](https://pkg.go.dev) API 探索 Go 包和模块:支持搜索、文档、符号、版本、导入者和漏洞——所有这些都可以从你的 shell 或 AI 代理中执行。 它的命令和 MCP 工具建立在小型手写的目录([`internal/spec`](internal/spec))之上,并调用强类型的 [`go-pkggodev-client`](https://github.com/samber/go-pkggodev-client)。所有操作均为只读,且无需身份验证。 ## 🚀 安装 ``` go install github.com/samber/godig/cmd/godig@latest # AI Agent Skill: npx skills add https://github.com/samber/cc-skills-golang --skill golang-pkg-go-dev # 将 MCP server 注册到 Claude Code (stdio) claude mcp add pkg-go-dev -- godig mcp ``` 需要 Go >= 1.25。请参阅 [Skill](#-skill) 以便同时向你的代理注册 MCP 服务器。 ## 💡 快速开始 ``` # 概述 — 一次紧凑的调用:metadata、最新 + 近期 versions、licenses、vulns godig overview github.com/samber/ro # 搜索 godig search "result option monad" --limit 5 # Package facets godig package info github.com/samber/ro godig package doc github.com/samber/ro --format md godig package examples github.com/samber/ro godig package examples github.com/samber/ro --symbol Map # examples for one symbol only godig package licenses github.com/samber/ro # 单个 symbol 的 signature + doc(与完整 package doc 相比,token 效率更高) godig symbol github.com/samber/ro Map godig symbol github.com/samber/mo Either.ForEach --examples # Module facets godig module info github.com/samber/ro godig module readme github.com/samber/ro godig module licenses github.com/samber/ro # 列表(自动分页;--limit 设置上限,-o md 输出 Markdown table) godig versions github.com/samber/ro -o md godig major-versions github.com/samber/do # v1, v2, v3 ... (separate modules) godig packages github.com/samber/ro godig imported-by github.com/samber/ro --limit 20 godig symbols github.com/samber/ro # Filter(针对 item fields 的 Go 布尔表达式)与构建上下文(goos/goarch) godig versions github.com/samber/ro --filter 'hasPrefix(version, "v0.3")' godig symbols github.com/samber/ro --goos linux --goarch amd64 # 漏洞 godig vulns github.com/samber/ro # 作为 MCP server 运行(stdio;--transport http 用于 HTTP) godig mcp ``` 全局 flag:`-o, --output`(默认为 `table`,可选 `json`、`raw`、`md`),`--base-url`,`--timeout`, `--log-level`(`debug|info|warn|error|off`,默认为 `error`;日志输出到 **stderr**)。 所有 flag 也可以通过以 `GODIG_` 为前缀的环境变量来设置。 ## 🧠 命令 | 命令 | 描述 | | ----------------------------------------- | ------------------------------------ | | `godig overview ` | 一键获取精简摘要(从此处开始) | | `godig search [--symbol ]` | 搜索包和符号 | | `godig package info ` | 包元数据 | | `godig package doc --format ` | 包文档 (md/text/html) | | `godig package examples ` | 带有示例的文档 (`--symbol` 用于指定范围) | | `godig package licenses ` | 包许可证 | | `godig symbol ` | 单个符号的签名和文档 | | `godig module info ` | 模块元数据 | | `godig module licenses ` | 模块许可证 | | `godig module readme ` | 模块 README | | `godig packages ` | 列出模块的包 | | `godig versions ` | 列出模块版本 | | `godig major-versions ` | 列出主要版本 (v1, v2, v3 ...) | | `godig imported-by ` | 导入该包的包 | | `godig symbols ` | 包的导出符号 | | `godig vulns ` | 已知的漏洞 | | `godig mcp` | 运行 MCP 服务器 (stdio 或 http) | 运行 `godig --help`(或 `godig package --help`)以查看特定命令的 flag。每个操作也 作为一个 MCP 工具暴露(例如 `overview`、`package-info`、`module-readme`)。 **对于 AI 代理(高效利用 token):**从 `overview` 开始——一次调用即可返回精简摘要 (不包含大量文档)。仅在实际需要全文时才获取 `doc`、`examples`、`module readme` 或 `licenses`,并使用 `--limit` 截断过长的列表(如 `versions`、`imported-by`)。 ## 📫 MCP 服务器 `godig mcp` 运行一个 MCP 服务器,通过任一传输方式为每个操作暴露一个只读工具。 **stdio**(默认)—— 客户端按需启动二进制文件: ``` claude mcp add pkg-go-dev -- godig mcp ``` ``` { "mcpServers": { "pkg-go-dev": { "command": "godig", "args": ["mcp"] } } } ``` **流式 HTTP** —— 位于 `/mcp` 的共享、长期运行服务器(`--addr`,默认 `:8080`): ``` godig mcp --transport http --addr :8080 claude mcp add --transport http pkg-go-dev http://localhost:8080/mcp ``` ``` { "mcpServers": { "pkg-go-dev": { "type": "http", "url": "http://localhost:8080/mcp" } } } ``` 公共实例托管在 [Clever Cloud](https://www.clever.cloud) 上,地址为 **`https://godig.samber.dev/mcp`** —— 无需在本地运行任何内容即可注册: ``` claude mcp add --transport http pkg-go-dev https://godig.samber.dev/mcp ``` ``` { "mcpServers": { "pkg-go-dev": { "type": "http", "url": "https://godig.samber.dev/mcp" } } } ``` ## 🥷 Skill 一个配套的 AI 代理 Skill,**`golang-pkg-go-dev`**,位于 [samber/cc-skills-golang](https://github.com/samber/cc-skills-golang)。它涵盖了设置(注册 MCP 服务器)和使用工作流(意图 -> 命令/工具),并在探索 Go 包时触发:文档、版本、导入者、漏洞。 ``` npx skills add https://github.com/samber/cc-skills-golang --skill golang-pkg-go-dev ``` ## 🔧 工作原理 - `internal/spec` 是一个手写的操作目录(名称、flag、类型)。 - CLI (`cmd/godig`) 和 MCP 服务器 (`internal/mcpserver`) 都通过遍历该目录来构建其功能表面 —— 每个操作对应一个 Cobra 命令和一个 MCP 工具。 - `internal/dispatch` 是共享的核心:它将每个操作名称映射到匹配的、强类型的 [`go-pkggodev-client`](https://github.com/samber/go-pkggodev-client) 调用;结果呈现为 `table`、`json` 或 `raw`。 ## 📝 许可证 Copyright © 2026 [Samuel Berthe](https://github.com/samber)。 本项目基于 [MIT](./LICENSE) 许可证。
标签:AI集成, API客户端, EVTX分析, Go语言, Linux安全, MCP, pkg.go.dev, 开发辅助工具, 日志审计, 程序破解