🚀 Go Development MCP Server
Go Development MCP Serverは、Go開発ワークフローをClaude DesktopなどのAIアシスタントやその他のMCP互換ツールと統合する包括的なソリューションです。このサーバーを使用すると、AIアシスタントがModel Context Protocol (MCP) を介して直接Goコードのコンパイル、テスト、実行、分析を行うことができます。
✨ 主な機能
- Go Build:Goコードをコンパイルし、詳細なフィードバックを受け取ります。
- Go Test:Goコードのテストを実行し、カバレッジ分析をサポートします。
- Go Run:コマンドライン引数を指定してGoプログラムをコンパイルし実行します。
- Go Mod:Goモジュールの依存関係を管理します(init、tidy、downloadなど)。
- Go Format:Goコードを標準規約に従ってフォーマットします。
- Go Analyze:静的分析ツールを使用してGoコードの問題を分析します。
- Go Workspace:マルチモジュール開発用のGoワークスペースを管理します(新機能!)
今回のリリースでの新機能
- MCP v0.29.0互換性:最新のModel Context Protocol v0.29.0を使用するように更新されました。
- Goワークスペースサポート:マルチモジュールGoプロジェクトの完全なワークスペース管理が可能になりました。
- プロジェクトパスサポート:すべてのツールが既存のGoプロジェクトディレクトリで動作するようになりました。
- ワークスペース対応実行:すべてのツールがGoワークスペースのコンテキスト内で動作できます。
- ストラテジーパターン:コードスニペット、プロジェクトディレクトリ、ワークスペースに対して柔軟な実行ストラテジーが可能です。
- 応答フォーマットの強化:自然言語のメタデータを含む、より構造化された応答が得られます。
- エラーハンドリングの改善:より詳細で役立つエラーメッセージが表示されます。
- エンドツーエンドテスト:機能を検証するための包括的な動作テストスクリプトが用意されています。
- 最新のテストフレームワーク:並列テスト実行が可能な新しいGoベースのテストフレームワークが導入されました。
📦 インストール
前提条件
Windows
手動インストール
-
リポジトリをクローンします:
git clone https://github.com/MrFixit96/go-dev-mcp.git
cd go-dev-mcp
-
実行ファイルをビルドします:
go build -o go-dev-mcp.exe ./cmd/server
-
実行ファイルをPATHに含まれる場所に移動するか、Claude Desktopの設定で直接参照します。
WinGetを使用する(近日公開予定)
winget install go-dev-mcp
macOS
Homebrewを使用する(近日公開予定)
brew install go-dev-mcp
手動インストール (macOS)
-
リポジトリをクローンします:
git clone https://github.com/MrFixit96/go-dev-mcp.git
cd go-dev-mcp
-
実行ファイルをビルドします:
go build -o go-dev-mcp ./cmd/server
-
実行ファイルをPATHに含まれる場所に移動します:
sudo mv go-dev-mcp /usr/local/bin/
Linux
-
リポジトリをクローンします:
git clone https://github.com/MrFixit96/go-dev-mcp.git
cd go-dev-mcp
-
実行ファイルをビルドします:
go build -o go-dev-mcp ./cmd/server
-
実行ファイルをPATHに含まれる場所に移動します:
sudo mv go-dev-mcp /usr/local/bin/
📚 ドキュメント
Goワークスペースのサポート
サーバーは現在、Goワークスペースを完全にサポートしており、マルチモジュール開発ワークフローを可能にしています。この機能により、以下のことができます:
- ワークスペースの初期化:
go work init を使用して新しいGoワークスペースを作成します。
- モジュールの管理:ワークスペース内でモジュールの追加、削除、整理を行います。
- 統一された操作:ワークスペース内のすべてのモジュールに対してGoコマンドを実行します。
- 依存関係の同期:モジュール間で依存関係を一致させます。
- ワークスペース対応ツール:既存のすべてのツール(build、test、runなど)がワークスペースとシームレスに連携します。
ワークスペースコマンド
go_workspace ツールは以下のサブコマンドを提供します:
init:新しいGoワークスペースを初期化します。
use:既存のワークスペースにモジュールを追加します。
sync:ワークスペースの依存関係を同期します。
edit:ワークスペースの設定を表示および変更します。
vendor:ワークスペースのすべての依存関係をベンダー化します。
info:詳細なワークスペース情報を取得します。
ワークスペースの統合
既存のすべてのツールは、workspace_path パラメータを通じてワークスペースコンテキストをサポートしています:
{
"tool": "go_build",
"arguments": {
"workspace_path": "/path/to/workspace",
"module": "specific-module",
"code": "package main..."
}
}
テスト
サーバーには、実際のGoプロジェクトで正しく動作することを検証するための包括的なテスト機能が含まれています。テストは2つのフレームワークを通じて提供されます:
- Goテストフレームワーク:Goのネイティブテスト機能とtestifyを使用した最新の並列テストフレームワーク。
- PowerShellテスト:下位互換性のためのレガシーなエンドツーエンド動作テスト。
テストはすべての入力モード(コードのみ、プロジェクトパス、ハイブリッド)を検証し、実行ストラテジーが期待通りに動作することを保証します。
テストの実行
Goテスト(推奨)
cd go-dev-mcp
.\scripts\testing\run_tests.ps1 -TestType go -UseGoTests -WithCoverage
.\scripts\testing\run_tests.ps1 -TestType go -UseGoTests -WithRaceDetection
go test -v ./internal/tools/...
PowerShellテスト(レガシー)
cd go-dev-mcp\scripts\testing
.\basic\simple_test.ps1
cd go-dev-mcp\scripts\testing
.\core\all_tools_test.ps1 -Verbose
cd go-dev-mcp\scripts\testing
.\strategies\hybrid_strategy_test.ps1 -Verbose
テストフレームワークの詳細情報については、テストドキュメント を参照してください。
テストスクリプトは以下のカテゴリに分類されています:
- 基本テスト:健全性チェック用の単純で高速なテスト。
- コアテスト:すべてのツールと入力モードをカバーする包括的なテスト。
- ストラテジーテスト:ハイブリッド実行などの特定の実行ストラテジーに焦点を当てたテスト。
詳細については、テストREADME を参照してください。
Claude Desktopとの統合
Claude Desktopと統合するには、claude_desktop_config.json ファイルを更新します:
Windows設定
{
"mcpServers": {
"go-dev": {
"command": "C:\\path\\to\\go-dev-mcp.exe",
"args": [],
"env": {
"GOCACHE": "%LOCALAPPDATA%\\go-build",
"LOCALAPPDATA": "%LOCALAPPDATA%",
"GOPATH": "%USERPROFILE%\\go",
"GOROOT": "%GOROOT%",
"PATH": "%PATH%",
"DEBUG": "*"
},
"disabled": false,
"autoApprove": []
}
}
}
使用される環境変数:
%LOCALAPPDATA%:C:\Users\{username}\AppData\Local に解決されます。
%USERPROFILE%:C:\Users\{username} に解決されます。
%GOROOT%:Goのインストールディレクトリ(Goインストーラーによって自動的に設定されます)。
%PATH%:GoバイナリにアクセスするためのシステムPATH。
Go環境変数を使用する代替方法
{
"mcpServers": {
"go-dev": {
"command": "C:\\path\\to\\go-dev-mcp.exe",
"args": [],
"env": {
"DEBUG": "*"
},
"disabled": false,
"autoApprove": []
}
}
}
⚠️ 重要提示
代替設定は、Goのデフォルトの環境検出に依存しています。Goは、明示的に設定されていない場合、自動的に %LOCALAPPDATA%\go-build をGOCACHE、%USERPROFILE%\go をGOPATHとして使用します。
macOSとLinux
{
"mcpServers": {
"go-dev": {
"command": "/path/to/go-dev-mcp",
"args": [],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
使い方
コードスニペットの操作
すべてのツールは、code パラメータを通じて直接Goコードを受け取ります:
go_build(code: "package main\n\nfunc main() {\n\tfmt.Println(\"Hello World\")\n}")
go_test(code: "package main", testCode: "package main\n\nimport \"testing\"\n\nfunc TestHello(t *testing.T) {...}")
プロジェクトディレクトリの操作
すべてのツールは、新しい project_path パラメータを通じて既存のGoプロジェクトディレクトリでの操作をサポートしています:
go_build(project_path: "/path/to/your/go/project")
go_test(project_path: "/path/to/your/go/project", verbose: true, coverage: true)
go_fmt(project_path: "/path/to/your/go/project")
go_analyze(project_path: "/path/to/your/go/project", vet: true)
設定
サーバーは以下の場所にある設定ファイルを使用します:
- Windows:
%APPDATA%\go-dev-mcp\config.json
- macOS:
~/Library/Application Support/go-dev-mcp/config.json
- Linux:
~/.config/go-dev-mcp/config.json
初回実行時にデフォルトの設定ファイルが作成され、これをカスタマイズすることができます:
{
"version": "1.0.0",
"logLevel": "info",
"sandboxType": "process",
"resourceLimits": {
"cpuLimit": 2,
"memoryLimit": 512,
"timeoutSecs": 30
}
}
セキュリティ
Go Development MCP Serverは、以下の機能を備えたサンドボックス環境でコマンドを実行します:
- プロセス分離
- リソース制限(CPU、メモリ、実行時間)
- 一時ディレクトリによる隔離
- デフォルトでネットワークアクセスなし
📄 ライセンス
MIT
貢献
貢献は大歓迎です!プルリクエストを送信してください。
ロードマップ
- [ ] Goワークスペースのサポートを追加する
- [ ] より強力な分離のためにDockerベースのサンドボックスを実装する
- [ ] デバッグ機能を追加する
- [ ] Goレース検出器をサポートする
- [ ] 改善されたエラー報告と提案を提供する
💻 使用例
基本的なワークスペース操作
新しいワークスペースの作成
{
"tool": "go_workspace",
"arguments": {
"command": "init",
"workspace_path": "/path/to/my-workspace",
"modules": ["./module1", "./module2"]
}
}
既存のワークスペースにモジュールを追加
{
"tool": "go_workspace",
"arguments": {
"command": "use",
"workspace_path": "/path/to/my-workspace",
"modules": ["./new-module", "../external-module"]
}
}
ワークスペース情報の取得
{
"tool": "go_workspace",
"arguments": {
"command": "info",
"workspace_path": "/path/to/my-workspace"
}
}
マルチモジュール開発ワークフロー
1. ワークスペース構造の初期化
mkdir my-project-workspace
cd my-project-workspace
{
"tool": "go_workspace",
"arguments": {
"command": "init",
"workspace_path": ".",
"modules": ["./api", "./client", "./shared"]
}
}
2. すべてのモジュールをビルド
{
"tool": "go_build",
"arguments": {
"workspace_path": "/path/to/my-workspace"
}
}
3. 特定のモジュールをテスト
{
"tool": "go_test",
"arguments": {
"workspace_path": "/path/to/my-workspace",
"module": "api",
"coverage": true
}
}
4. 依存関係を同期
{
"tool": "go_workspace",
"arguments": {
"command": "sync",
"workspace_path": "/path/to/my-workspace"
}
}
高度なワークスペース機能
カスタムコードを含むワークスペース
{
"tool": "go_run",
"arguments": {
"workspace_path": "/path/to/my-workspace",
"module": "api",
"code": "package main\n\nimport \"fmt\"\n\nfunc main() {\n fmt.Println(\"Running in workspace context\")\n}"
}
}
すべての依存関係をベンダー化
{
"tool": "go_workspace",
"arguments": {
"command": "vendor",
"workspace_path": "/path/to/my-workspace"
}
}
すべてのモジュールをフォーマット
{
"tool": "go_fmt",
"arguments": {
"workspace_path": "/path/to/my-workspace"
}
}
エラーハンドリングとトラブルシューティング
一般的なワークスペースの問題
- go.workファイルがない:
init コマンドを使用してワークスペースを作成します。
- モジュールが見つからない:
use コマンドを使用してモジュールを追加します。
- 依存関係の競合:
sync コマンドを使用して解決します。
- ビルド失敗:ターゲットコマンドを使用してモジュール固有の問題を確認します。
ワークスペースの検証
{
"tool": "go_workspace",
"arguments": {
"command": "info",
"workspace_path": "/path/to/my-workspace"
}
}
詳細なワークスペース構造と検証ステータスが返されます。