GitHub MCP Server
GitHub MCP Server
安全で構造化されたツールを使って、AI アシスタントが GitHub とやり取りできるようにするプロジェクトです。
わかりやすく言うと、AI が GitHub の仕組みを推測するのではなく、このプロジェクトは「自分のリポジトリを一覧表示する」「オープンな Issue を表示する」「ファイルを読み取る」といった明確なアクションメニューを AI に提供します。AI が適切なアクションを選び、このサーバーが GitHub と通信し、AI が理解できるクリーンな形式で答えが返ってきます。
これは何を解決するのか
チャットボットは言葉を扱うのは得意ですが、あなたの GitHub アカウントに自動的にライブアクセスすることはできません。
このプロジェクトが作るのは、その間を取り持つ橋です:
あなたが普通の英語で質問します(例:「Show open issues in microsoft/vscode」)。
AI モデル(Groq)がどの GitHub ツールを使うかを判断します。
MCP サーバーが、実際の GitHub API に対してそのツールを実行します。
結果をクリーンに整形(正規化)して AI に返します。
AI がその結果をあなたにわかりやすい言葉で説明します。
MCP とは Model Context Protocol のことです。標準的なプラグのようなものだと考えてください。互換性のある AI クライアントは、このサーバーに接続してそのツールを利用できます。
Related MCP server: GitHub MCP Server
全体像(アーキテクチャ)
You
↓
AI Agent (client/agent.py) ← talks to Groq LLM
↓
MCP Server (notebooks/server.py) ← menu of GitHub tools
↓
GitHub Client ← HTTP calls with your token
↓
GitHub REST API
↓
GitHub設計ルール(重要)
ツールは薄く保ちます:
入力をチェックする(リポジトリ名は有効か?)。
GitHub クライアントを呼び出す。
レスポンスを安定した形に正規化する。
そのクリーンなデータをエージェントに返す。
GitHub の複雑な部分はすべてクライアント層の中に留めます — ツール全体に散らばらせません。
プロジェクトフォルダ(各パートの役割)
パス | 内容 |
| メイン MCP サーバー — エージェントが起動する本番エントリポイント |
| エージェント向けに安定したデータ形(Pydantic モデル) |
| 生の GitHub JSON を、その安定した形に変換する |
| 危険なツールの確認 / ドライラン / 許可リスト |
| 一覧ツール用のページングヘルパ( |
| stderr への JSON ログ(秘密情報は決して出力しない) |
| 古い / 実験用のコピー — 原則 |
| 学習用ノートブック(サーバーのステップバイステップ解説) |
| stdio で MCP サーバーに接続するチャットエージェント |
| サンプルプロンプトに対して AI が正しいツールを選ぶか検証する |
| あなたの秘密鍵(絶対にコミットしないこと) |
| 必要な鍵を表示するテンプレート |
| インストールする Python パッケージ |
| 非技術者向けのステップバイステップのセットアップ |
ツールでできること
サーバーは数多くの GitHub アクションを公開しています。シンプルにグループ化すると:
読み取り(安全に探索)
自分のリポジトリを一覧表示する
リポジトリの詳細を取得する
Issue とプルリクエストを一覧 / 取得する
PR の差分を取得する
ブランチ、コミット、ラベルを一覧表示する
リポジトリ内のコードを検索する
ファイルの内容を読み取る
GitHub Actions ワークフローの実行を一覧表示する
書き込み(GitHub に変更を加える)
Issue、コメント、PR、ブランチ、ラベルを作成する
Issue を更新する、ラベルを追加 / 削除する
Issue を再オープンする
破壊的(壊す可能性あり — 保護されています)
これらはデフォルトで追加の確認が必要です:
merge_pull_requestdelete_filecreate_repositorycreate_or_update_fileclose_issue
これらのツールでは、エージェントは通常、次の手順を踏みます:
dry_run=trueで呼び出す → プレビューにのみ留めるもう一度
confirm=trueで呼び出す → 実際に実行する
この挙動は環境変数で厳しくも緩くもできます(下記参照)。
正規化されたレスポンス(AI がこれを好む理由)
生の GitHub レスポンスは巨大で、しかも頻繁に変わります。このプロジェクトは安定した形を返します。
一覧系ツール(list tools) は常に次のようになります:
{
"count": 20,
"items": [ ... ],
"page": 1,
"per_page": 20,
"has_next": true,
"has_prev": false,
"next_page": 2,
"prev_page": null,
"last_page": 5
}次のページを取得するには、同じツールを page=2(または page=next_page)で再び呼び出します。
Issue の例:
{
"number": 42,
"title": "Bug in login",
"state": "open",
"author": "some-user",
"labels": ["bug"],
"comments": 3,
"html_url": "https://github.com/...",
"is_pull_request": false
}補足: get_issues はプルリクエストを除外します(GitHub の issues API はプルリクエストが混ざって返ってくるため)。
安全機能
機能 | 意味 |
| 破壊的なツールを実行するために必要(デフォルト) |
| 何が起こるかを表示するだけ。GitHub には変更を加えない |
| 危険なツールであることをクライアントに知らせる MCP アノテーション |
Allowlist | どの破壊的ツールを許可するかの任意リスト |
Mode |
|
環境変数(任意):
GITHUB_MCP_DESTRUCTIVE_MODE=confirm
GITHUB_MCP_DESTRUCTIVE_ALLOWLIST=merge_pull_request,delete_fileロギング(デバッグ用)
サーバーはJSON ログを stderr のみに出力します。
なぜ stderr か? MCP はプロトコルに stdout を使うからです。もし stdoutにログを出力すると、AI との接続が壊れてしまいます。
ログに記録されるもの:
リクエストメソッドとパス
HTTP ステータス
所要時間
残りのレート制限
記録されないもの:
GitHub トークン
Authorization ヘッダー
秘密情報のように見える値(PAT、Bearer トークン等)
ログ行の例:
{"ts":"2026-08-23T12:00:00+00:00","level":"INFO","event":"github_request","method":"GET","path":"/repos/microsoft/vscode/issues","status_code":200,"duration_ms":120.5}AI エージェント(client/agent.py)
エージェントは:
MCP サーバーをサブプロセスとして起動する(
notebooks/server.py)。サーバーからツールの一覧を取得する。
あなたの質問とツール一覧を Groq に送信する。
Groq がツールを必要とするなら、エージェントは MCP 経由でそれを呼び出す。
ツールの結果を Groq に送り返して、最終的な回答を得る。
便利なコマンド(プロジェクトフォルダで、仮想環境を有効にした状態):
# See all registered tools
python client/agent.py --list-tools
# Only show which tool the AI would pick (no GitHub write)
python client/agent.py --dry-run "list my github repos"
# One real question, then exit
python client/agent.py --once "show open issues for microsoft/vscode"
# Interactive chat
python client/agent.py
# Check tool-picking quality on many sample prompts
python client/test_tool_picking.pyループの上限(任意):
python client/agent.py --max-rounds 5 --once "..."または .env 内で:
AGENT_MAX_TOOL_ROUNDS=8
AGENT_MAX_TOOL_CALLS=16
AGENT_MAX_CONSECUTIVE_ERRORS=3環境変数
MCP サーバーに必須
変数 | 目的 |
| サーバーが GitHub を呼び出せるようにする個人アクセストークン |
| あなたの GitHub ユーザー名(起動時の検証に使用) |
| デフォルトのリポジトリ名(起動時の検証に使用) |
エージェント(チャット / ツール選択)に必須
変数 | 目的 |
| Groq(LLM)の API キー |
任意
変数 | 目的 |
| デフォルト: |
|
|
| カンマ区切りの破壊的ツール名 |
| ユーザーメッセージごとのツールラウンド上限 |
| ユーザーメッセージごとのツール実行数の上限 |
| N 回連続でツールが失敗したら停止 |
.env.example を .env にコピーして実際の値を記入してください。完全な手順は SETUP.md を参照してください。
技術スタック(知りたい向け)
Python 3.13+(プロジェクトは 3.13 で開発)
MCP(
mcpPython パッケージ)— ツールサーバーのプロトコルhttpx — GitHub 通信用 HTTP クライアント
Pydantic — スキーマ / バリデーション
python-dotenv —
.envの読み込みOpenAI 互換クライアント → エージェントには Groq
Jupyter(任意)— 学習用ノートブック
セットアップと実行方法
丁寧なガイドはこちら:
👉 SETUP.md — Python のインストール、キーの作成、.env の設定、最初のコマンドの実行まで。
簡易版(Python をすでに知っている場合):
cd "path\to\Github-MCP-server"
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
# edit .env with your tokens
python client/agent.py --list-tools
python client/agent.py --once "list my github repos"学習パス(推奨)
この README を読む(いまここです)。
SETUP.md を完了し、
--list-toolsが動くようにする。docs/ARCHITECTURE_HLD_LLD.md で HLD + LLD のフローを読む。
読み取りのみのシンプルな質問で
--dry-runと--onceを試す。50 シナリオの手動テスト計画を実行する: tests/MANUAL_TESTING_50_SCENARIOS.md
自動ツール選択:
python client/run_manual_scenarios.py
notebooks/01_github_mcp_server.ipynbを開いて各レイヤがどう作られたかを見る。それから初めて、
dry_run+confirmを使った書き込み / 破壊的ツールを試す。
トラブルシューティング(早見)
問題 | 対処法 |
|
|
Groq モデル 404 |
|
環境変数がない |
|
破壊的ツールがブロックされる | 正常です — |
Windows で終了時にハングする | 既知の stdio の問題。ワンショットコマンドは終了時に強制終了する |
***
## セキュリティの注意
* `.env` をコミットしないこと。
* GitHub や Groq のトークンをチャット、スクリーンショット、GitHub Issues に貼り付けないこと。
* **必要なスコープだけ**を持つ GitHub トークンを選ぶこと。
* 環境を完全に信頼できる場合を除き、`GITHUB_MCP_DESTRUCTIVE_MODE=confirm`(また `deny`)を維持すること。
* 古い実験で `server_1.py` がトークンを表示していたなら、そのデバッグ出力を共有しない — `server.py` を使うこと。
***
## ライセンス・所有権
これは GitHub MCP サーバーとエージェントの個人的な学習用 Gen-AI プロジェクトです。公開前に必要な所有権とライセンスを調整してください。This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage GitHub repositories, branches, issues, pull requests, releases, and actions through natural language.1155MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to perform GitHub operations such as creating repositories, issues, pull requests, and more through natural language.
- FlicenseBqualityDmaintenanceEnables AI assistants to inspect local Git repositories and interact with the GitHub API for reading commits, diffs, files, issues, comments, pull requests, and project boards.10121
- FlicenseBqualityCmaintenanceEnables AI clients to interact with GitHub repositories, issues, pull requests, and code search through the GitHub REST API.12
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Git-backed platform for skills, tools, and context for AI agents
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Arnab1999india/github-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server