mcpField
G
golang-pkg-go-dev

golang-pkg-go-dev

github.com/samber開発3.7k12.2k 回インストール5 日前に更新
リポジトリ

golang-pkg-go-dev について

godigでpkg.go.devを検索するGo開発者向けの利用ガイドです。パッケージやモジュールのドキュメント、シンボル、バージョン、インポート元、既知の脆弱性を、認証不要の読み取り専用CLIまたはMCPサーバーで調べられます。

主な機能

  1. 01パッケージとモジュールのメタデータ検索
  2. 02ドキュメント、シンボル、サンプルの確認
  3. 03バージョンとインポート元の検索
  4. 04既知の脆弱性とライセンスの確認
  5. 05CLIまたはMCPサーバーとして実行

活用シーン

  1. 01go.mod未登録の依存関係の評価
  2. 02Goパッケージのバージョンとドキュメントの確認
  3. 03依存関係の脆弱性とインポート元の調査

MCP 対応

godigはMCPサーバーとして動作し、CLIコマンドに対応するpkg.go.dev検索操作をMCPクライアントに公開します。stdioとstreamable HTTPに対応します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/samber/cc-skills-golang --skill golang-pkg-go-dev

インストール後、Claude Code で/golang-pkg-go-devを入力して読み込まれたか確認します。

同梱ファイルreferences/sample-output.md

詳細

golang-pkg-go-dev

依存関係: godig — go install github.com/samber/godig/cmd/godig@latest(または、登録済みの godig MCP サーバーかホスト型インスタンスを使用してください)。

godig は pkg.go.dev API に問い合わせます。Go のパッケージやモジュールに関する質問(ドキュメント、シンボル、バージョン、インポーター、脆弱性)への回答に使用できます。CLI と MCP サーバーの両方として動作し、すべての操作は読み取り専用で、認証は不要です。

このスキルを使う場面

次のような質問があった場合に使用してください。

  • 「github.com/samber/lo ではどのバージョンを利用できますか?」
  • 「golang.org/x/text に既知の脆弱性はありますか?」
  • 「パッケージ X のドキュメント/シンボルを表示してください。」
  • 「どのパッケージが X をインポートしていますか?」
  • 「Y について Go パッケージを検索してください。」

godig、gopls、Context7、govulncheck の使い分け

簡単に言うと、godig は公開されているエコシステムに関する質問に回答します(まだ go.mod に含まれていないパッケージにも対応します)。gopls はローカルで解決されたビルド(replace されたフォークを含む go.sum)を分析します。Context7 は Go 以外のドキュメントやインデックス化されていないドキュメント用のフォールバックです。govulncheck はツリー全体の脆弱性監査に使用します(→ samber/cc-skills-golang@golang-security)。Claude Code で gopls(MCP サーバー、ネイティブの LSP ツール、CLI)を接続する方法については、samber/cc-skills-golang@golang-gopls スキルを参照してください。また、タスクとツールの全対応表については、samber/cc-skills-golang@golang-how-to スキルの「godig vs gopls vs Context7 vs govulncheck」セクションを参照してください。

セットアップ

インストール
go install github.com/samber/godig/cmd/godig@latest
MCP サーバーの登録(任意)

godig mcp はデフォルトで stdio、または --transport http を指定すると streamable HTTP を使用します。このコマンドは特定のハーネスに依存しないため、MCP に対応した任意のホストから接続できます。Claude Code では、専用の CLI を使って登録します。

stdio(クライアントが必要に応じて godig を起動します):

claude mcp add pkg-go-dev -- godig mcp

streamable HTTP(/mcp にある共有サーバー。デフォルトは :8080):

godig mcp --transport http --addr :8080
claude mcp add --transport http pkg-go-dev http://localhost:8080/mcp

ホスト型インスタンス(インストール不要)— 公開サーバーが https://godig.samber.dev/mcp で稼働しています。

claude mcp add --transport http pkg-go-dev https://godig.samber.dev/mcp

その他の MCP 対応ハーネス(Cursor、Windsurf など)には、それぞれ独自の MCP サーバー登録方法があります。共有の設定形式ではなく、各設定ファイルに godig mcp コマンドまたはホスト型 URL を指定するエントリを追加します。

CLI と MCP サーバーでは、同じ操作が同じ名前で公開されています。godig がインストールされている場合は CLI を優先してください。インストールされていない場合はホスト型インスタンスがフォールバックになります。

コマンド

グローバルフラグ(すべてのコマンド): -o/--output table|json|raw|md(デフォルトは table — チャットでは -o md を指定)、--base-url(pkg.go.dev API)、--vuln-base-url(Go 脆弱性データベース。vulns と overview で参照)、--timeout、--log-level debug|info|warn|error|off。これらはすべて GODIG_* 環境変数でも設定できます。

コマンド引数固有のフラグ用途
overview<path>--version簡潔な概要(メタデータ、バージョン、ライセンス、脆弱性)— ここから始めてください
search<query>--symbol --limit --filterパッケージを検索します(任意でシンボルをエクスポート)
package info<path>--module --versionパッケージのメタデータ
package imports<path>--module --versionこのパッケージがインポートするパッケージ(プレーンなリスト)
package doc<path>--module --version --goos --goarch --format md|text|html|markdownパッケージの完全なドキュメント(大容量)
package examples<path>--module --version --goos --goarch --symbol実行可能なサンプル(大容量。--symbol で対象を絞り込めます)
package licenses<path>--module --versionライセンスファイルの全文(大容量)
symbol doc<path> <symbol>--module --version --goos --goarch1 つのシンボルのシグネチャとドキュメント(トークン効率に優れています)
symbol examples<path> <symbol>--module --version --goos --goarch1 つのシンボルの実行可能なサンプル
symbols<path>--module --version --goos --goarch --limit --filterエクスポートされたシンボルの一覧
module info<path>--versionモジュールのメタデータ
module licenses<path>--versionモジュールのライセンスファイル(大容量)
module readme<path>--versionモジュールの README(Markdown 全文、大容量)
dependencies<path>--versiongo.mod の依存関係:requires / replaces / excludes / go ディレクティブ
packages<path>--version --limit --filterモジュールに含まれるパッケージ
versions<path>--limit --filterすべてのバージョン(新しい順)
major-versions<path>--limit --filter --exclude-pseudo別々のモジュールとして存在するメジャーバージョン(v1、v2 …)
imported-by<path>--module --version --limit --filterこのパッケージをインポートするパッケージ
vulns<path>--version --limit既知の脆弱性(Go 脆弱性データベースから取得)
mcp—--transport stdio|http --addr --cache-ttl --cache-sizeMCP サーバーとして実行
version——godig のバージョン/コミット/ビルド日時を表示

godig を MCP サーバーとして実行すると、上記の各データコマンドが同名の操作として公開されます。

終了コード: 0 は成功、1 は実行時エラー(ネットワークエラー、パッケージが見つからない)、2 は使用方法のエラーです。引数またはフラグが不足または無効な場合(例:--limit が正の値でない場合)、あるいはサブコマンドを指定せずにコマンドグループを実行した場合(godig package)に返されます。2 を確認することで、不正な呼び出しと検索失敗を区別できます。

すべてのコマンドの -o md による完全な出力:sample-output.md。

ヒント
  • まずは overview から — 1 回の呼び出しで、簡潔な概要(メタデータ、最新バージョンと最近のバージョン、ライセンスの種類、脆弱性)が返されます。全文が必要な場合にのみ、doc/examples/module readme/licenses(大量)を利用してください。
  • 結果をチャット内で Markdown(テーブル、またはドキュメント/README の生テキスト)として表示するため、必ず -o md を渡してください。ほかの形式(デフォルトの table、json、raw)もありますが、ここでは md をおすすめします。
  • <path> は github.com/samber/lo のような完全なインポートパスです。位置引数として渡してください。
  • --version は特定のモジュールバージョン(v1.5.0、latest、master、main)を指定します。--module は、パッケージが属するモジュールを特定します。
  • --filter は Go のブール式を使って、サーバー側で一覧結果を絞り込みます。フィルター構文を参照してください。
  • --goos/--goarch は、ドキュメント/シンボルのビルドコンテキストを設定します(例:linux/amd64)。
  • 1 つのシンボルだけが必要な場合は、パッケージ全体を対象とする package doc/package examples よりも、symbol doc/symbol examples を優先してください。トークン数を大幅に抑えられます。
  • 独立した検索は並列化してください — 各コマンドは独立した読み取り専用の HTTP クエリなので、呼び出し同士に依存関係はありません。複数のシンボル、パッケージ、モジュールについてドキュメント、例、バージョン、または脆弱性情報が必要な場合は、順番に呼び出すのではなく、すべての呼び出しを一度に実行してください(1 回のターンで godig を複数回呼び出します)。これにより、所要時間は各呼び出しの遅延の合計ではなく、最も遅い 1 回分になります。多数に展開する大規模な処理(多くのシンボルのドキュメント作成、候補ライブラリの比較、依存関係全体の CVE 監査)では、最大 5 つの並列サブエージェントを起動し、それぞれに独自の godig 呼び出しを実行させて、簡潔な概要を返すようにしてください。これにより、大量の出力がメインコンテキストに入るのを防げます。
  • 一覧コマンドは自動でページ分割され、すべての結果を返します。結果の上限を設定するには --limit を使ってください。
フィルター構文

--filter(search、versions、major-versions、packages、imported-by、symbols で使用)は、各結果項目に対してサーバー側で 1 回評価される Go のブール式です。正規表現ではありません。シェルでは式全体をシングルクォートで囲んでください。

  • 識別子は各項目のフィールドで、コマンドによって異なります — ある一覧で有効なフィールドが別の一覧では拒否される場合があります(例:search で公開されるのは path ではなく packagePath です)。不明なフィールドを指定すると、問題のフィールド名を含む undefined identifier: <name> エラー(HTTP 400)が返されます。フィールド名には、項目の小文字の JSON キーを使います。ただし、kind のような列挙型の値は大文字で始まります(func ではなく Function)。
  • 演算子:== != < <= > >=、ブール演算子 && || !、グループ化用の括弧。
  • 文字列関数:contains(s, sub)、hasPrefix(s, pre)、hasSuffix(s, suf)。
  • リテラル:二重引用符で囲んだ文字列("Function")、true/false、数値。

コマンドごとにフィルター可能なフィールド(特記がない限り文字列):

コマンドフィールド
searchmodulePath、packagePath、synopsis、version
versionsversion、modulePath、deprecated(bool)、retracted(bool)、hasGoMod(bool)、commitTime
packagespath、name、synopsis、isRedistributable(bool)
imported-bypath(インポート元パッケージのパス)
symbolsname、kind(Function/Method/Type/Variable/Constant)、synopsis、parent
major-versionsmodulePath、major、version、isLatest(bool)
godig symbols github.com/samber/lo --filter 'kind=="Function"' -o md
godig symbols github.com/samber/lo --filter 'kind=="Function" && hasPrefix(name,"Map")' -o md
godig versions github.com/samber/lo --filter 'hasPrefix(version,"v1.5")' -o md
godig versions github.com/samber/lo --filter 'deprecated==false && retracted==false' -o md
godig search "result option" --filter 'hasPrefix(packagePath,"github.com/samber/")' -o md
例

常に Markdown 出力をリクエストしてください(-o md):

# Overview — start here (compact, one call)
godig overview github.com/samber/ro -o md

# Search
godig search "result option monad" --limit 5 -o md

# Package facets
godig package info github.com/samber/ro -o md
godig package imports github.com/samber/ro -o md
godig package doc github.com/samber/ro --format md -o md
godig package examples github.com/samber/ro --symbol Map -o md
godig package licenses github.com/samber/ro -o md

# Single symbol (token-efficient vs package-wide doc/examples)
godig symbol doc github.com/samber/lo Map -o md
godig symbol examples github.com/samber/oops OopsError.Error -o md

# Module facets
godig module info github.com/samber/ro -o md
godig module readme github.com/samber/ro -o raw
godig dependencies github.com/samber/ro -o md

# Lists (auto-paginated; --limit to cap)
godig versions github.com/samber/ro -o md
godig major-versions github.com/samber/lo -o md
godig packages github.com/samber/ro -o md
godig imported-by github.com/samber/ro --limit 20 -o md
godig symbols github.com/samber/ro --filter 'kind=="Function"' -o md

# Pin a version / set the build context
godig versions github.com/samber/ro --filter 'hasPrefix(version,"v0.3")' -o md
godig package doc github.com/samber/lo --version v1.50.0 -o md
godig symbols github.com/samber/ro --goos linux --goarch amd64 -o md

# Vulnerabilities
godig vulns github.com/samber/ro -o md

このスキルはすべてを網羅しているわけではありません。godig --help と各サブコマンドの --help で、現在のフラグと出力形式を確認できます。データは pkg.go.dev が公開する情報を反映しています。

godig でバグや予期しない動作が発生した場合は、https://github.com/samber/godig/issues でイシューを作成してください。

コメント