最近はClaudeを利用して開発することが多いですが、GitHubでソースコードを連携していた場合にはPorjectsやIssuesの管理もチャット上で行いたい事があります。
何かあるか調べたところ「GitHub MCP Server」というものがあることを知りました。
GitHub MCP Serverを使うと、ClaudeがGitHubと直接連携して、Issuesの操作やProjectsの管理を行えるようになります。
1. 概要
GitHub MCP Server(Model Context Protocol)を使うことで、ClaudeがGitHubと直接連携し、IssuesやProjectsの操作をチャット上から行えるようになります。
実現できること
| 操作 | 内容 |
|---|---|
| Issues取得 | Issue一覧・詳細をClaudeが読み込む |
| Issue作成 | Claudeとの対話をもとに新規Issueを登録 |
| Issue更新 | ステータス変更・ラベル追加など |
| Projects取得 | GitHub Projects v2のアイテム取得(GraphQL) |
| PR管理 | Pull Requestの作成・レビュー |
| コード検索 | リポジトリ内のコード・ファイル検索 |
2. 事前準備 — GitHub Personal Access Token
ClaudeがGitHubを操作するための Personal Access Token (PAT) を発行します。
Token取得手順
1. GitHubにログインし、Token設定ページを開く

2. 「Generate new token (classic)」をクリック

3. 以下の項目を設定する
| 項目 | 設定値 |
|---|---|
| Note | claude-mcp など識別しやすい名前 |
| Expiration | 任意(推奨: 90days または No expiration) |
4. スコープ(権限)を選択する
✅ repo (リポジトリ全般:Issues・PR・コード)
✅ read:org (Organization情報の読み取り)
✅ project (GitHub Projects v2の操作)
最小権限の場合: Issuesのみ使うなら repo だけでも動作します。
5. 「Generate token」をクリックし、トークンをコピーして安全な場所に保管する
⚠️ トークンはページを離れると二度と表示されません。必ずコピーしてください。
3. Claude Desktop への設定
3-1. 設定ファイルの場所を確認する
~/Library/Application Support/Claude/claude_desktop_config.json3-2. 設定ファイルを編集する
open -e ~/Library/Application\ Support/Claude/claude_desktop_config.jsonファイルが存在しない場合は新規作成します。
mkdir -p ~/Library/Application\ Support/Claude
touch ~/Library/Application\ Support/Claude/claude_desktop_config.json3-3. 以下の内容を記述する
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ここに取得したトークンを貼り付ける"
}
}
}
}⚠️ すでに他のMCPサーバーが設定されている場合は、mcpServers の中に "github": { ... } を追記してください。
3-4. Claude Desktop を再起動する
Claude Desktop を完全に終了させてください。
ウインドウだけを閉じても残る場合があります。
3-5. 接続を確認する
Claude Desktop のチャット画面で +アイコンから「コネクト」、または設定画面に 「github」が表示されれば成功です。

4. Claude Code への設定
方法A: プロジェクトごとに設定する(推奨)
プロジェクトのルートディレクトリに .mcp.json を作成します。
# プロジェクトのルートに移動
cd /path/to/your/project
# .mcp.json を作成・編集
touch .mcp.json.mcp.json の内容:
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ここに取得したトークンを貼り付ける"
}
}
}
}Claude Code を起動すると自動的に読み込まれます。
claude実行後に以下のメッセージが表示されますので「1」か「2」を選択して接続してください。
New MCP server found in .mcp.json: github
MCP servers may execute code or access system resources. All
tool calls require approval. Learn more in the MCP
documentation.
❯ 1. Use this and all future MCP servers in this project
2. Use this MCP server
3. Continue without using this MCP server方法B: グローバルにMCPを設定する
claude mcp add github \
-e GITHUB_PERSONAL_ACCESS_TOKEN=ここにトークンを貼り付ける \
-- npx -y @modelcontextprotocol/server-github以下の方法で設定を確認が出来ます。
claude mcp list5. 動作確認
Claude Desktop での確認
Claude Desktop を開き、以下のようなプロンプトを入力してみてください。
GitHubの {オーナー名}/{リポジトリ名} のIssue一覧を取得してください。Claude Code での確認
# プロジェクトディレクトリで起動
claude
# Claude Code内でプロンプト入力
> このリポジトリのオープンなIssue一覧を取得して、優先度の高いものを教えてください。確認チェックリスト
- [ ] Issue一覧が取得できる
- [ ] Issue詳細(タイトル・本文・ラベル)が表示される
- [ ] 新規Issueを作成できる
- [ ] GitHub Projects v2のアイテムが取得できる
6. 主な使い方
Issue一覧の取得と分析
{オーナー}/{リポジトリ} のオープンなIssueをすべて取得して、
カテゴリ別に整理してください。Claudeと対話してIssueを作成
以下のバグについてIssueを作成してください。
バグ内容: ログイン後にリダイレクトが正しく動作しない
発生条件: Safari 17.x 環境のみGitHub Projects v2 のアイテム取得
プロジェクト「{プロジェクト名}」のアイテム一覧を取得して、
ステータスごとに分類してください。7. トラブルシューティング
MCP Serverが認識されない
確認ポイント:
claude_desktop_config.jsonのJSON構文が正しいか確認する(末尾カンマ等に注意)- Claude Desktop を完全に終了してから再起動しているか確認する
- Node.js / npx が正しくインストールされているか確認する
node --version # v18以上を推奨
npx --version「権限がない」エラーが出る
確認ポイント:
- Personal Access Token に必要なスコープ(
repo,project)が付与されているか確認する - Token の有効期限が切れていないか確認する
- プライベートリポジトリへのアクセスには
repoスコープが必要
GitHub Projects v2 が取得できない
GitHub Projects v2 はGraphQL APIを使用します。Tokenに project スコープが付与されているか確認してください。
GitHub → Settings → Developer settings → Personal access tokens
→ 該当トークンの Edit → project にチェックが入っているか確認npx 実行時にエラーが出る
初回実行時はパッケージのダウンロードが発生します。インターネット接続を確認してください。手動インストールする場合:
npm install -g @modelcontextprotocol/server-githubインストール後、設定ファイルの command と args を以下のように変更します。
{
"command": "github-mcp-server",
"args": []
}