「GitHub MCP Server」を試す
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コミュニティ内のディスカッションに参加してください。
GitHubレポジトリ
GitHub MCP サーバー
GitHub MCP サーバーは、Model Context Protocol (MCP) に準拠したサーバーであり、GitHub API とのシームレスな統合を提供します。これにより、開発者やツールによる高度な自動化や対話が可能になります。
ユースケース
- GitHub のワークフローやプロセスの自動化
- GitHub リポジトリからのデータ抽出と分析
- GitHub エコシステムと連携する AI 駆動型ツールやアプリケーションの構築
前提条件
- サーバーをコンテナで実行するには、Docker が必要です。
- 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
(任意)
GitHubでパーソナルアクセストークンを作成する。ここはやりたいことに合わせて、Fine-grained tokensで細かく設定するのが良いと思う。
自分はとりあえずお試しなので
- パブリックレポジトリのみ
- パーミッションは全てNo access
- 期限付き
で作成した。
参考
まずはClaude Desktopで。
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とシームレスに統合するためのサーバーで、開発者やツールが高度な自動化および相互作用機能を実現できるようにします。
主な特徴と目的
- MCP(Model Context Protocol)への準拠:
- MCPは、開発ツールとAIシステム間の標準化されたコミュニケーションプロトコルです
- このサーバーは、GitHub APIを通じてMCPクライアント(特にAIアシスタント)とGitHubの間の橋渡しをします
- GitHubとの統合:
- GitHub APIにアクセスするための統一された方法を提供
- レポジトリの中身へのアクセス、プルリクエストの管理、コードの操作などが可能
- 主なユースケース:
- GitHubワークフローとプロセスの自動化
- GitHubリポジトリからのデータ抽出と分析
- GitHub エコシステムと相互作用するAI駆動のツールやアプリケーションの構築
インストールと設定
- 必要条件:
- Dockerがインストールされていること
- GitHubパーソナルアクセストークンを作成すること
- インストール方法:
- VS Codeでの使用:READMEの上部にあるワンクリックインストールボタンを使用するか、手動で設定を行う
- Claude Desktopでの使用:指定されたJSON設定を使用
- ソースからビルド:Goを使ってビナリをビルドすることも可能
- GitHub Enterprise対応:
- フラグ
--gh-host
または環境変数GH_HOST
を使用して、GitHub Enterpriseサーバーのホスト名を設定できます主要な機能
GitHub MCP Serverは、以下の主要なAPIグループをサポートしています:
- ユーザー関連:
- 認証されたユーザーの詳細情報取得
- イシュー管理:
- イシューの取得、作成、更新、コメント追加
- イシューのリスト取得とフィルタリング
- イシュー検索
- プルリクエスト管理:
- プルリクエストの詳細取得
- プルリクエストのリスト取得とフィルタリング
- プルリクエストのマージ
- ファイル変更の取得
- ステータスチェックの取得
- レビューの管理
- リポジトリ操作:
- ファイルの作成/更新
- 複数ファイルの一括コミット
- リポジトリ検索
- リポジトリの作成
- ファイル内容の取得
- リポジトリのフォーク
- ブランチの作成
- コミットリストの取得
- 検索機能:
- コード検索
- ユーザー検索
- コードスキャニング:
- コードスキャニングアラートの取得
- アラートリストの表示
技術的実装
- 言語とフレームワーク:
- Go言語で実装
- Cobra、Viper、logrusなどのライブラリを使用
- 通信方式:
- 標準入出力(stdio)を使用したJSON-RPCメッセージング
- READMEには、VS CodeやClaude Desktop環境での設定方法が示されています
- カスタマイズ機能:
- ツールの説明をJSONファイルや環境変数でオーバーライド可能
- 多言語対応(i18n)をサポート
- 最近の開発状況:
- 現在もアクティブに開発中(直近のPRには、バージョン表示サブコマンドの追加、JSONの整形出力機能などがある)
- オープンソースプロジェクトとしてコミュニティからの貢献を受け付けている
利用方法と適用例
このサーバーは、主に以下のような用途に使用できます:
- AIアシスタントとの統合:
- VS CodeやClaude DesktopなどのAIアシスタントが、このサーバーを通じてGitHubデータにアクセス
- これにより、コード分析、プルリクエストレビュー、イシュー管理などの機能を提供
- 開発ワークフロー自動化:
- コード変更の自動コミット
- イシューの自動作成や更新
- プルリクエストの自動レビューや管理
- 拡張性:
- MCP標準に対応したツールとの連携
- GitHubの機能を活用したカスタムツールやワークフローの構築
ライセンス
このプロジェクトはMITライセンスの下で提供されています(2025年にGitHubによって著作権が保持されています)。
このGitHub MCP Serverは、AIと開発ツールの統合において重要な役割を果たす新しいツールであり、GitHubのAPIへのアクセスを標準化された方法で提供することで、より高度な開発作業の自動化を可能にします。
こんなことも
VS Codeの場合は以下の2箇所で設定ができる。
- ユーザのsettings.json
- ワークスペースの
vscode/mcp.json
企業のプライベートレポジトリの場合だと、後者ができるのは良いな。アクセストークンもユースケースにあわせて権限絞ればよいだろうし。