GitHub MCP Server in Go について
Goで実装された非公式のGitHub MCPサーバーです。GitHub APIを通じて、AIアシスタントがリポジトリ、ブランチ、ファイル、Issue、コードを操作できます。検索、読み取り、書き込みのツールを備え、環境変数またはHTTPヘッダーで認証します。
主な機能
- 01リポジトリ、コード、Issue、ユーザーの検索
- 02リポジトリ、フォーク、ブランチの作成
- 03ファイルの読み取り、作成、更新
- 04複数ファイルを1つのコミットとしてプッシュ
- 05Issueの作成、確認、更新
活用シーン
- 01GitHubのリポジトリやコードを検索
- 02ブランチを作成してリポジトリのファイルを更新
- 03Issueやコメントの確認と管理
MCP 対応
GitHub APIの操作をMCPツールとしてAIアシスタントに公開します。GitHubトークンは環境変数またはHTTPリクエストヘッダーで渡せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Go 製 GitHub MCP サーバー
GitHub Model Context Protocol(MCP)サーバーの Go 実装です。この実装により、AI アシスタントは GitHub API を利用して、リポジトリの作成、ブランチの管理、ファイルの操作などを行えます。
前提条件
- Go 1.21 以降
- 適切な権限を持つ GitHub パーソナルアクセストークン
インストール
go get github.com/metoro-io/github-mcp-server-go
認証
サーバーは、次の 2 つの認証方法に対応しています。
環境変数による認証
GitHub パーソナルアクセストークンを環境変数として設定します。
export GITHUB_PERSONAL_ACCESS_TOKEN=your_github_token
HTTP ヘッダーによる認証
サーバーは、HTTP リクエストから認証トークンを抽出することもできます。Authorization ヘッダーを使って GitHub トークンを渡せます。
Authorization: Bearer your_github_token
または、次のように指定します。
Authorization: your_github_token
コンテキストの受け渡し
HTTP ハンドラーでは、サーバーは次の両方に対応しています。
- HTTP リクエストの標準
http_requestコンテキスト値。 - Gin フレームワークを使用する場合の
ginContext値。
これにより、一貫した認証メカニズムを維持しながら、さまざまな Web フレームワークとシームレスに統合できます。
使い方
-
GitHub パーソナルアクセストークンを設定します(「認証」セクションを参照)。
-
サーバーを実行します。
go run main.go
利用可能なツール
サーバーは次のツールを提供します。
- search_repositories:GitHub リポジトリを検索します
- create_repository:アカウントに新しい GitHub リポジトリを作成します
- fork_repository:GitHub リポジトリをアカウントまたは指定した組織にフォークします
- create_branch:GitHub リポジトリに新しいブランチを作成します
- get_file_contents:GitHub リポジトリからファイルまたはディレクトリの内容を取得します
- create_or_update_file:GitHub リポジトリの単一ファイルを作成または更新します
- push_files:複数のファイルを 1 つのコミットで GitHub リポジトリにプッシュします
- create_issue:GitHub リポジトリに新しい Issue を作成します
- get_issue:GitHub リポジトリの特定の Issue の詳細を取得します
- list_issues:フィルタリングオプションを指定して、GitHub リポジトリの Issue を一覧表示します
- update_issue:GitHub リポジトリの既存の Issue を更新します
- add_issue_comment:既存の Issue にコメントを追加します
- list_commits:GitHub リポジトリのブランチのコミット一覧を取得します
- search_code:GitHub リポジトリ全体からコードを検索します
- search_issues:GitHub リポジトリ全体から Issue とプルリクエストを検索します
- search_users:GitHub のユーザーを検索します
開発
プロジェクト構成
main.go:アプリケーションのエントリーポイントcommon/:共通ユーティリティとエラー処理operations/:GitHub API 操作の実装tools/:MCP ツールの定義とハンドラー
ソースからのビルド
go build -o github-mcp-server
テストの実行
go test ./...
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。