Github MCP Server について
Github MCP Server は、MCP 経由で LLM と GitHub API を接続するサーバーです。MCP クライアントから GitHub を検索し、Issue やプルリクエストを確認したいユーザー向けに、よく使うリポジトリ照会ツールを提供します。
主な機能
- 01リポジトリ、Issue、コミットの検索
- 02コード、ユーザー、トピック、ラベルの検索
- 03リポジトリのIssueとプルリクエスト一覧
- 04Issueとプルリクエストの詳細取得
活用シーン
- 01クエリで GitHub リポジトリを検索
- 02リポジトリのコードやコミットを検索
- 03リポジトリ内のIssueとプルリクエストを確認
- 04特定のIssueやプルリクエストの詳細を取得
MCP 対応
MCP サーバーとして、GitHub REST API の検索、一覧、詳細取得ツールを MCP クライアントに公開します。設定には GitHub Personal Access Token が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Github MCP サーバー
Github 用の Model Context Protocol サーバーです。
MCP を通じて Github と連携し、LLM が Github を操作できるようにします。
インストール
手動インストール
-
Github アカウントのアクセストークンを作成するか、取得します:ガイド
-
Claude Desktop にサーバー設定を追加します:
- MacOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:こちらのガイドを確認してください
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "github-mcp-server"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_personal_github_access_token"
}
}
}
}
コンポーネント
ツール
-
search_repositories:GitHub でリポジトリを検索します。- 必須入力:
query(string):リポジトリの検索クエリです。page(number、デフォルト:30、最大:100):ページネーション用のページ番号です。per_page(number、デフォルト:30、最大:100):1 ページあたりの結果数です。
- 必須入力:
-
search_issues:リポジトリのイシューを検索します。- 必須入力:
query(string):リポジトリの検索クエリです。page(number、デフォルト:1):ページネーション用のページ番号です。per_page(number、デフォルト:30、最大:100):1 ページあたりの結果数です。order(省略可能な string、デフォルト:desc):並び順(ascまたはdesc)です。sort(省略可能な string、デフォルト:best match):並べ替えの基準となるフィールドです(comments、reactions、reactions-+1、reactions--1、reactions-smile、reactions-thinking_face、reactions-heart、reactions-tada、interactions、createdまたはupdatedのいずれか)。
- 必須入力:
-
search_commits:リポジトリのコミットを検索します。- 必須入力:
query(string):リポジトリの検索クエリです。page(number、デフォルト:1):ページネーション用のページ番号です。per_page(number、デフォルト:30、最大:100):1 ページあたりの結果数です。order(省略可能な string、デフォルト:desc):並び順(ascまたはdesc)です。sort(省略可能な string、デフォルト:best match):並べ替えの基準となるフィールドです(committer-dateまたはauthor-dateのいずれか)。
- 必須入力:
-
search_code:リポジトリ内のコードを検索します。- 必須入力:
query(string):リポジトリの検索クエリです。page(number、デフォルト:1):ページネーション用のページ番号です。per_page(number、デフォルト:30、最大:100):1 ページあたりの結果数です。
- 必須入力:
-
search_users:リポジトリのユーザーを検索します。- 必須入力:
query(string):リポジトリの検索クエリです。page(number、デフォルト:1):ページネーション用のページ番号です。per_page(number、デフォルト:30、最大:100):1 ページあたりの結果数です。order(省略可能な string、デフォルト:desc):並び順(ascまたはdesc)です。sort(省略可能な string、デフォルト:best match):並べ替えの基準となるフィールドです(followers、repositoriesまたはjoinedのいずれか)。
- 必須入力:
-
search_topics:トピックを検索します。- 必須入力:
query(string):リポジトリの検索クエリです。page(number、デフォルト:1):ページネーション用のページ番号です。per_page(number、デフォルト:30、最大:100):1 ページあたりの結果数です。
- 必須入力:
-
search_labels:リポジトリ内のラベルを検索します。- 必須入力:
query(string):リポジトリの検索クエリです。page(number、デフォルト:1):ページネーション用のページ番号です。per_page(number、デフォルト:30、最大:100):1 ページあたりの結果数です。order(省略可能な string、デフォルト:desc):並び順(ascまたはdesc)です。sort(省略可能な string、デフォルト:best match):並べ替えの基準となるフィールドです(createdまたはupdatedのいずれか)。
- 必須入力:
-
list_repositories_issues:リポジトリのイシューを一覧表示します。- 必須入力:
owner(string):リポジトリの所有者。repo(string):リポジトリ名。page(任意の number、デフォルト:1):ページネーションのページ番号。per_page(任意の number、デフォルト:30、最大:100):1ページあたりの結果数。direction(任意の string、デフォルト:desc):並べ替えの順序(ascまたはdesc)。sort(任意の string、デフォルト:created):並べ替えフィールド(created、comments、updatedのいずれか)。since(任意の string):指定した時刻以降に最終更新された結果(ISO 8601 形式:YYYY-MM-DDTHH:MM:SSZ.)。labels(任意の string):カンマ区切りのラベル名。例:bug,ui,@high。milestone(任意の string):マイルストーン番号。assignee(任意の string):担当ユーザー名(すべてを対象にする場合は*)。creator(任意の string):イシューを作成したユーザー。(すべてを対象にする場合は*)。mentioned(任意の string):イシュー内でメンションされているユーザー。
- 必須入力:
-
get_issue:リポジトリからイシューを取得します。- 必須入力:
owner(string):リポジトリの所有者。repo(string):リポジトリ名。issue_number(number):イシュー番号。
- 必須入力:
-
list_repositories_pull_requests:リポジトリのプルリクエストを一覧表示します。- 必須入力:
owner(string):リポジトリの所有者。repo(string):リポジトリ名。page(任意の number、デフォルト:1):ページネーションのページ番号。per_page(任意の number、デフォルト:30、最大:100):1ページあたりの結果数。direction(任意の string、デフォルト:desc):並べ替えの順序(ascまたはdesc)。sort(任意の string、デフォルト:created):並べ替えフィールド(created、popularity、long-running、updatedのいずれか)。head(任意の string):head ユーザーまたは head 組織とブランチ名でプルリクエストを絞り込みます。形式は user:ref-name または organization:ref-name です(例:github:new-script-format または octocat:test-branch)。base(任意の string):ベースブランチ名でプルリクエストを絞り込みます。(例:gh-pages)。
- 必須入力:
-
get_pull_request:リポジトリからプルリクエストを取得します。- 必須入力:
owner(string):リポジトリの所有者。repo(string):リポジトリ名。pull_request_number(number):プルリクエスト番号。
- 必須入力:
使用例
Github とやり取りするために使用できるプロンプトの例:
- 「modelcontextprotocol」→
search_repositoriesツールを実行して、modelcontextprotocol が言及されているリポジトリを検索します。 - 「modelcontextprotocol servers リポジトリの 739 番のイシューは何ですか」→
get_issueツールを実行して、modelcontextprotocol servers リポジトリの 739 番のイシューを取得します。 - 「modelcontextprotocol servers リポジトリの 717 番の PR は何ですか」→
get_pull_requestツールを実行して、modelcontextprotocol servers リポジトリの 717 番の PR を取得します。
開発
- 依存関係をインストールします:
pnpm install
.envで Github アクセストークンを設定します:
GITHUB_PERSONAL_ACCESS_TOKEN=<your_personal_github_access_token>
- ウォッチモードでローカル実行します:
pnpm dev
- サーバーをビルドします:
pnpm build
- インスペクターを使ってローカルでデバッグします:
pnpm inspector
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。