Closed5

「GitHub MCP Server」を試す

kun432kun432

https://x.com/github/status/1908252589424337278

https://github.blog/changelog/2025-04-04-github-mcp-server-public-preview/

github-mcp-serverがパブリックプレビューで利用可能になりました。

本日、新しいオープンソースの公式ローカルGitHub MCP Serverをリリースします。私たちはAnthropicと協力し、同社のリファレンスサーバーをGoで書き直し、その使いやすさを向上させました。新しいサーバーには、旧サーバーの機能の100%に加え、ツールの説明をカスタマイズする機能、コードスキャンのサポート、そして「私のプライベートリポジトリを表示」などLLMに質問する際の自然言語ユーザーエクスペリエンスを向上させる新しいget_me機能が含まれています。

まずはリポジトリにアクセスし、GitHub MCP Server のセットアップ方法をご覧ください。このサーバーは現在、VS Code でネイティブにサポートされています。

モデルコンテキストプロトコル(MCP)は、過去数か月の間に急速に採用が進んでいるAIツールの呼び出し標準です。MCPツールは、LLMに標準化された関数の呼び出し、データの検索、および世界との対話の方法を提供します。Anthropicは、このプロトコルを作成し、最初のGitHub MCPサーバーを構築しました。このサーバーは、拡大するエコシステムの中で最も人気の高いMCPサーバーの1つに成長しました。私たちは、このサーバーの所有権を取得し、その開発を継続できることを嬉しく思います。

GitHubコミュニティ内のディスカッションに参加してください。

kun432kun432

GitHubレポジトリ

https://github.com/github/github-mcp-server

GitHub MCP サーバー

GitHub MCP サーバーは、Model Context Protocol (MCP) に準拠したサーバーであり、GitHub API とのシームレスな統合を提供します。これにより、開発者やツールによる高度な自動化や対話が可能になります。

ユースケース

  • GitHub のワークフローやプロセスの自動化
  • GitHub リポジトリからのデータ抽出と分析
  • GitHub エコシステムと連携する AI 駆動型ツールやアプリケーションの構築

前提条件

  1. サーバーをコンテナで実行するには、Docker が必要です。
  2. GitHub の個人用アクセストークンを作成してください。MCP サーバーは多くの GitHub API を利用できるため、AI ツールに許可したい範囲の権限を設定してください(アクセストークンの詳細は [こちらのドキュメント](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-acc

利用可能なツールの一覧。ChatGPTにまとめてもらった。

ツール

ユーザー

ツール名 説明 主なパラメータ
get_me 認証済みユーザーの詳細を取得 なし

イシュー

ツール名 説明 主なパラメータ
get_issue イシューの内容を取得 owner, repo, issue_number
create_issue 新しいイシューを作成 owner, repo, title, body
add_issue_comment イシューにコメントを追加 owner, repo, issue_number, body
list_issues イシューの一覧・フィルタ owner, repo, state, labels, page
update_issue イシューを更新 owner, repo, issue_number, ...
search_issues イシューと PR を検索 query, sort, order, page

プルリクエスト

ツール名 説明 主なパラメータ
get_pull_request PR の詳細を取得 owner, repo, pullNumber
list_pull_requests PR の一覧・フィルタ owner, repo, state, sort, page
merge_pull_request PR をマージ owner, repo, pullNumber, merge_method
get_pull_request_files PR で変更されたファイル一覧を取得 owner, repo, pullNumber
get_pull_request_status PR のステータスチェック結果を取得 owner, repo, pullNumber
update_pull_request_branch ベースブランチの変更を PR に反映 owner, repo, pullNumber, expectedHeadSha
get_pull_request_comments PR のコメントを取得 owner, repo, pullNumber
get_pull_request_reviews PR のレビューを取得 owner, repo, pullNumber
create_pull_request_review PR にレビューを作成 owner, repo, pullNumber, event, ...
create_pull_request 新しい PR を作成 owner, repo, title, head, base

リポジトリ

ツール名 説明 主なパラメータ
create_or_update_file ファイルを作成または更新 owner, repo, path, content, message
push_files 複数ファイルを一括コミット owner, repo, branch, files, message
search_repositories リポジトリを検索 query, sort, order, page
create_repository 新しいリポジトリを作成 name, description, private, autoInit
get_file_contents ファイルの内容を取得 owner, repo, path, ref
fork_repository リポジトリをフォーク owner, repo, organization
create_branch 新しいブランチを作成 owner, repo, branch, sha
list_commits コミット一覧を取得 owner, repo, sha, path, page, perPage

検索

ツール名 説明 主なパラメータ
search_code コードを検索 query, sort, order, ...
search_users GitHub ユーザーを検索 query, sort, order, ...

コードスキャン

ツール名 説明 主なパラメータ
get_code_scanning_alert アラートを 1 件取得 owner, repo, alertNumber
list_code_scanning_alerts アラート一覧を取得 owner, repo, ref, state

リソース

リポジトリコンテンツ取得

ツール名 説明 + テンプレート 主なパラメータ
Get Repository Content 指定パスのリポジトリ内容を取得
repo://{owner}/{repo}/contents{/path*}
owner, repo, path(任意)
Get Repository Content for a Specific Branch 特定ブランチのパスにおけるリポジトリ内容を取得
repo://{owner}/{repo}/refs/heads/{branch}/contents{/path*}
owner, repo, branch, path(任意)
Get Repository Content for a Specific Commit 特定コミットのパスにおけるリポジトリ内容を取得
repo://{owner}/{repo}/sha/{sha}/contents{/path*}
owner, repo, sha, path(任意)
Get Repository Content for a Specific Tag 特定タグのパスにおけるリポジトリ内容を取得
repo://{owner}/{repo}/refs/tags/{tag}/contents{/path*}
owner, repo, tag, path(任意) >
Get Repository Content for a Specific Pull Request 特定プルリクエストのパスにおけるリポジトリ内容を取得
repo://{owner}/{repo}/refs/pull/{prNumber}/head/contents{/path*}
owner, repo, prNumber, path(任意)
kun432kun432

まずはClaude Desktopで。

claude_desktop_config.json を以下のように設定。トークンを直接書くのは微妙・・・。

claude_desktop_config.json
{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

Claude Desktopを再起動して反映。こんな感じでツールがリストアップされている。

GitHub MCPのレポジトリの内容について聞いてみると、いろいろなツールを使って調べていってくれる。都度都度実行確認を求められるので、適宜許可。

最終的な回答はこんな感じ。

ここで、GitHub MCPサーバーの主要な情報と機能について包括的にまとめます。

GitHub MCP Server の概要

GitHub MCP Server(Model Context Protocol サーバー)は、GitHub APIとシームレスに統合するためのサーバーで、開発者やツールが高度な自動化および相互作用機能を実現できるようにします。

主な特徴と目的

  1. MCP(Model Context Protocol)への準拠
  • MCPは、開発ツールとAIシステム間の標準化されたコミュニケーションプロトコルです
  • このサーバーは、GitHub APIを通じてMCPクライアント(特にAIアシスタント)とGitHubの間の橋渡しをします
  1. GitHubとの統合
  • GitHub APIにアクセスするための統一された方法を提供
  • レポジトリの中身へのアクセス、プルリクエストの管理、コードの操作などが可能
  1. 主なユースケース
  • GitHubワークフローとプロセスの自動化
  • GitHubリポジトリからのデータ抽出と分析
  • GitHub エコシステムと相互作用するAI駆動のツールやアプリケーションの構築

インストールと設定

  1. 必要条件
  • Dockerがインストールされていること
  • GitHubパーソナルアクセストークンを作成すること
  1. インストール方法
  • VS Codeでの使用:READMEの上部にあるワンクリックインストールボタンを使用するか、手動で設定を行う
  • Claude Desktopでの使用:指定されたJSON設定を使用
  • ソースからビルド:Goを使ってビナリをビルドすることも可能
  1. GitHub Enterprise対応
  • フラグ --gh-host または環境変数 GH_HOST を使用して、GitHub Enterpriseサーバーのホスト名を設定できます

主要な機能

GitHub MCP Serverは、以下の主要なAPIグループをサポートしています:

  1. ユーザー関連
  • 認証されたユーザーの詳細情報取得
  1. イシュー管理
  • イシューの取得、作成、更新、コメント追加
  • イシューのリスト取得とフィルタリング
  • イシュー検索
  1. プルリクエスト管理
  • プルリクエストの詳細取得
  • プルリクエストのリスト取得とフィルタリング
  • プルリクエストのマージ
  • ファイル変更の取得
  • ステータスチェックの取得
  • レビューの管理
  1. リポジトリ操作
  • ファイルの作成/更新
  • 複数ファイルの一括コミット
  • リポジトリ検索
  • リポジトリの作成
  • ファイル内容の取得
  • リポジトリのフォーク
  • ブランチの作成
  • コミットリストの取得
  1. 検索機能
  • コード検索
  • ユーザー検索
  1. コードスキャニング
  • コードスキャニングアラートの取得
  • アラートリストの表示

技術的実装

  1. 言語とフレームワーク
  • Go言語で実装
  • Cobra、Viper、logrusなどのライブラリを使用
  1. 通信方式
  • 標準入出力(stdio)を使用したJSON-RPCメッセージング
  • READMEには、VS CodeやClaude Desktop環境での設定方法が示されています
  1. カスタマイズ機能
  • ツールの説明をJSONファイルや環境変数でオーバーライド可能
  • 多言語対応(i18n)をサポート
  1. 最近の開発状況
  • 現在もアクティブに開発中(直近のPRには、バージョン表示サブコマンドの追加、JSONの整形出力機能などがある)
  • オープンソースプロジェクトとしてコミュニティからの貢献を受け付けている

利用方法と適用例

このサーバーは、主に以下のような用途に使用できます:

  1. AIアシスタントとの統合
  • VS CodeやClaude DesktopなどのAIアシスタントが、このサーバーを通じてGitHubデータにアクセス
  • これにより、コード分析、プルリクエストレビュー、イシュー管理などの機能を提供
  1. 開発ワークフロー自動化
  • コード変更の自動コミット
  • イシューの自動作成や更新
  • プルリクエストの自動レビューや管理
  1. 拡張性
  • MCP標準に対応したツールとの連携
  • GitHubの機能を活用したカスタムツールやワークフローの構築

ライセンス

このプロジェクトはMITライセンスの下で提供されています(2025年にGitHubによって著作権が保持されています)。

このGitHub MCP Serverは、AIと開発ツールの統合において重要な役割を果たす新しいツールであり、GitHubのAPIへのアクセスを標準化された方法で提供することで、より高度な開発作業の自動化を可能にします。

こんなことも

kun432kun432

VS Codeの場合は以下の2箇所で設定ができる。

  • ユーザのsettings.json
  • ワークスペースのvscode/mcp.json

企業のプライベートレポジトリの場合だと、後者ができるのは良いな。アクセストークンもユースケースにあわせて権限絞ればよいだろうし。

このスクラップは6ヶ月前にクローズされました