GitHub MCP Server をはじめとする複数の MCP サーバーを Docker で常駐させ、OAuth 2.0 認証を一元化して各 CLI から統一的に利用する環境。
CLI(Claude CLI / GitHub Copilot CLI / Codex CLI / Antigravity CLI)
↓ HTTP 127.0.0.1:8080
mcp-gateway ← OAuth 2.0 認証・ルーティング
├── /mcp/github → github-mcp-server [OAuth 必須]
├── /mcp/review-raven → review-raven [OAuth 必須]
└── /mcp/playwright → playwright-mcp [auth=none]
各 CLI の MCP 設定にはトークン値ではなく http://127.0.0.1:8080/<path> という URL のみを書く。
OAuth フローは mcp-gateway コンテナ内で完結するため、CLI の起動方法に関わらず認証が安定する。
| サービス | イメージ | ポート | 説明 |
|---|---|---|---|
mcp-gateway |
ghcr.io/scottlz0310/mcp-gateway:latest |
8080(ホスト公開) | OAuth ゲートウェイ |
github-mcp |
ghcr.io/github/github-mcp-server:main |
8082(内部のみ) | GitHub MCP サーバー |
review-raven |
ghcr.io/scottlz0310/review-raven:latest |
8083(内部のみ) | レビュー対応自動化(reviewed-side) |
playwright-mcp |
mcr.microsoft.com/playwright/mcp:latest |
8931(内部のみ) | ブラウザ操作(auth=none) |
github-mcp・review-raven・playwright-mcp はホストに直接公開されません。
すべて mcp-gateway(ポート 8080)経由でアクセスします。
- Docker 20.10+
- 対象 owner にインストール済みの GitHub App
- GitHub App の Client ID / Client Secret / Installation ID / 秘密鍵
# 1. リポジトリクローン
git clone https://github.com/scottlz0310/Mcp-Docker.git
cd Mcp-Docker
# 2. 環境ファイル作成
cp .env.template .env
# .env を編集して以下を設定:
# OAUTH_CLIENT_ID (ユーザー認可用 GitHub App Client ID)
# OAUTH_CLIENT_SECRET (ユーザー認可用 GitHub App Client Secret)
# GITHUB_APP_ID (upstream 認証用の数値 GitHub App ID)
# GITHUB_APP_INSTALLATION_ID (対象 owner の Installation ID)
# MCP_GATEWAY_INTERNAL_SECRET (32文字以上のランダム値)
# GitHub App の秘密鍵を config/github-app/private-key.pem に保存
# ※ review-raven では OAuth を mcp-gateway が一元管理します。
# ※ GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET の個別設定は不要です。
# ※ 新規設定には canonical 名の OAUTH_* を使用してください。
# 3. 全サービス起動
make start-gatewaymcp-gateway 経由で接続するには GitHub App が必要です。要点:
- Homepage URL / Callback URL のベースは gateway の公開 URL と一致させる(解決順:
MCP_GATEWAY_PUBLIC_URL→ 旧名MCP_GATEWAY_BASE_URL→ 既定http://127.0.0.1:8080) - Callback URL は
<PUBLIC_URL>/callbackと<PUBLIC_URL>/device_callbackの 2 本を登録する - 作成後に Client secret を生成し、
.envのOAUTH_CLIENT_ID/OAUTH_CLIENT_SECRETに設定する - App を対象 owner にインストールし、
.envのGITHUB_APP_ID/GITHUB_APP_INSTALLATION_IDを設定する - 生成した秘密鍵を
config/github-app/private-key.pemに保存する(.gitignore対象、gateway へ read-only mount)
gateway は秘密鍵から短命の installation token を生成し、期限前に更新して github-mcp へリクエスト単位で注入します。GPAT は構成・コンテナ環境のいずれにも不要です。
画面遷移・入力フィールド・Permissions の詳細は docs/github-app-setup.md を参照してください。
GitHub OAuth App から移行する場合は、
.envのOAUTH_CLIENT_ID/OAUTH_CLIENT_SECRETを GitHub App の値に置き換えます。既存.envの旧GITHUB_MCP_CLIENT_ID/GITHUB_MCP_CLIENT_SECRETはmake実行時の移行フォールバックとしてのみ読み取られ、gateway へ旧名のまま渡されません。
make setup-tls(Windows)で mkcert による証明書生成と .env の自動構成(MCP_GATEWAY_PUBLIC_URL / TLS 証明書パス / NODE_EXTRA_CA_CERTS)を行い、gateway を HTTPS で公開できます。
切替後は GitHub App の Homepage URL / Callback URL の更新(GitHub Web UI での手作業) と make restart-gateway / make register-all が必要です。手順は docs/github-app-setup.md を参照してください。
CLI 登録に対応しているエージェント(Claude CLI / GitHub Copilot CLI / Codex CLI / Antigravity CLI)は、mcp-docker register で mcp-gateway の HTTP エンドポイントを直接登録できます。
前提条件: 対象エージェントの CLI コマンド(
claude,gh,codex,agy)が実行環境の PATH に配置されている必要があります。 特に Antigravity CLI はagy mcpコマンドが追加された v1.1.16 以降 が必要です(旧バージョンでは直接設定ファイル I/O へのフォールバックは行われません)。
MCP 2026-07-28 未対応の agy から modern upstream に接続する場合は、既定無効の GATEWAY_LEGACY_ADAPTER_ENABLED を使用します。有効化の前提・登録・撤去手順は agy 向け過渡期アダプタ を参照してください。
# 事前に make start-gateway で mcp-gateway を起動
make build-go
# 対話的に agent / MCP サーバーを選択(TTY 環境)
make register
make register-claude REGISTER_FLAGS=--yes
make register-copilot REGISTER_FLAGS=--yes
make register-codex REGISTER_FLAGS=--yes
make register-antigravity REGISTER_FLAGS=--yes
# 4 種類まとめて登録
make register-all REGISTER_FLAGS=--yesmake register は引数なしで mcp-docker register を呼び出し、TTY であれば agent と MCP サーバーを番号入力で複数選択できます。--interactive, --agent, --server, --yes, --dry-run のいずれかを REGISTER_FLAGS で渡した場合は 暗黙的な対話モードには入らず、従来通りフラグの内容に従って実行します(--interactive 明示時はそのまま対話モードに入ります)。
# 例: claude と antigravity に github / playwright だけ登録(非対話)
make register REGISTER_FLAGS="--agent claude,antigravity --server github,playwright --yes"route の削除や ${VAR:+...} の変数未設定スキップなどで定義ファイル(compose/external)から外れたエントリは、登録だけでは agent 設定に残り続けます。--prune を指定すると、gateway 配下(http://127.0.0.1:<port>/...)の URL を持ち、かつ定義ファイル(compose/external)に含まれない既存登録を削除候補として提示・削除します。なお、--server で特定のサーバーのみに絞り込んで登録を実行した場合でも、定義ファイルに存在するサーバーであれば削除候補にはなりません(誤削除を防ぐための安全側の設計です)。gateway 配下以外の URL や URL を特定できないエントリ(mcp-docker 管理外の可能性があるもの)は候補に含めません。
# 候補の確認だけ(削除しない)
make register REGISTER_FLAGS="--agent claude --dry-run --prune"
# 候補一覧を表示し y/N 確認のうえ削除
make register REGISTER_FLAGS="--agent claude --prune"
# 確認なしで削除(自動化向け)
make register REGISTER_FLAGS="--agent all --yes --prune"対話モード(make register)では --prune の指定がなくても、登録後に削除候補があれば番号選択で提示します。既定(Enter)は「削除しない」で、削除実行前には必ず対象一覧つきの最終確認が入ります。
Makefile 経由のビルド成果物は OS に合わせて決まります。Windows (OS=Windows_NT) では bin/mcp-docker.exe を生成し、register-* も .exe 付きのバイナリを実行します。Linux/macOS では従来通り bin/mcp-docker です。
Makefile を使わず Go ツールチェーンから直接ビルド・実行する場合:
# Linux/macOS/Git Bash
go build -trimpath -o ./bin/mcp-docker ./cmd/mcp-docker
./bin/mcp-docker --version
./bin/mcp-docker register --dry-run
./bin/mcp-docker register --agent all --yesWindows のネイティブシェルで実行する場合:
go build -trimpath -o .\bin\mcp-docker.exe .\cmd\mcp-docker
.\bin\mcp-docker.exe --version
.\bin\mcp-docker.exe register --dry-run
.\bin\mcp-docker.exe register --agent all --yesビルド済みバイナリを残したくない場合は go run でも同じ登録フローを実行できます:
go run ./cmd/mcp-docker --version
go run ./cmd/mcp-docker register --dry-run
go run ./cmd/mcp-docker register --agent all --yesgo install でグローバルツールとしてインストールすることもできます:
go install github.com/scottlz0310/mcp-docker/v2/cmd/mcp-docker@latest
mcp-docker --version
mcp-docker register --agent all --yesgo install は GitHub Release のビルド済み成果物ではなく、指定した Go module をローカルでビルドします。バージョン表示は module build info から取得するため、リリース版を指定した場合はそのタグのバージョンが表示されます。GitHub Release の成果物を使う場合は、Release ページから対象 OS のアーカイブを手動でダウンロード・配置してください。
リリースは GitHub Actions の「リリース」workflow から手動実行できます。tag に vX.Y.Z、source_ref にリリース対象の branch・tag・commit(通常は main)を指定すると、検証・クロスビルド成功後にタグ、GitHub Release、チェックサムが作成されます。既存の v* タグ push によるリリースも利用できます。
登録対象は以下から読み取ります:
docker-compose.ymlのmcp-gateway.environment.ROUTE_*config/mcp-external.ymlの外部 MCP サーバー定義
ROUTE_GITHUB は github、ROUTE_REVIEW_RAVEN は review-raven のようにサーバー名へ変換されます。REGISTER_FLAGS=--yes を外すと、検出した名前を対話的に変更できます。
レビュー基盤の skill(review-raven-thread-owl-cycle / thread-owl-pr-reviewer)は本リポジトリの skills/ に収蔵し、mcp-docker バイナリへ埋め込んでいます。各 CLI エージェントの skill ディレクトリへの配置は mcp-docker skill が行うため、手動コピーは不要です。
| クライアント | 配置先 |
|---|---|
| Claude CLI | ~/.claude/skills/ |
| GitHub Copilot CLI | ~/.copilot/skills/ |
| Codex CLI | ~/.codex/skills/ |
| Antigravity CLI | ~/.gemini/config/skills/ |
# 収蔵している skill の一覧
make skill-list
# 配置計画の確認(何も書き込まない)
make skill-install SKILL_FLAGS=--dry-run
# 全クライアントへ配置(冪等・再実行可)
make skill-install SKILL_FLAGS=--yes
# 配置済みが最新かどうかの確認
make skill-status
# 対象を絞る
make skill-install SKILL_FLAGS="--agent claude,codex --skill thread-owl-pr-reviewer --yes"配置先には .mcp-docker-skill.json(source ハッシュ・配置時の mcp-docker バージョン・カタログ revision・配置日時)を書き出します。mcp-docker skill status はこれと skill 本体のハッシュ・revision を突き合わせ、次のいずれかを報告します。
| 状態 | 意味 |
|---|---|
最新 |
収蔵内容と一致 |
古い |
mcp-docker が配置したが、その後 skills/ が更新された |
バイナリが古い |
配置済みのほうが新しい。実行中バイナリの埋め込みが古いため、install すると巻き戻る |
ローカル改変あり |
配置後に配置先で編集された |
管理外 |
.mcp-docker-skill.json がない(手動コピー等)。上書きには確認が入る |
未配置 |
まだ配置されていない |
管理外 の配置を上書きする場合、バイナリが古い 配置を巻き戻す場合、skill uninstall で削除する場合は確認プロンプトが入ります(--yes で省略)。
skills/catalog.json が skill ごとの revision を持ちます。内容ハッシュは一致するかしか答えられないため、配置済みと実行中バイナリのどちらが新しいかはこの revision で判定します。
{
"skills": {
"review-raven-thread-owl-cycle": { "revision": 1 }
}
}skills/<name>/ を変更したら catalog.json の revision も上げてください。更新忘れは CI(scripts/check-skill-revision.sh)が検出して落とします。revision を記録していない古い配置(revision 導入前)は方向を判定できないため、従来どおり 古い として扱います。
配置先にユーザーが置いたファイルは mcp-docker の管理対象外として扱い、更新でも削除でも残します(隠しファイル・隠しディレクトリを含む)。
skill install: カタログのファイルのみを書き込み、マニフェストに記録した旧ファイルのみを削除します。ユーザーファイルがあっても最新判定は変わらず、再実行はスキップされますskill uninstall: マニフェスト記録ファイルのみを削除し、ユーザーファイルが残る場合はディレクトリごと残します。ディレクトリごと削除するには--forceを指定してくださいskill uninstallは既定では管理外の配置を削除しません(--forceが必要)
skill 本体を変更する場合は skills/<name>/SKILL.md を編集し、skills/catalog.json の revision を上げてから、make skill-install SKILL_FLAGS=--yes で再配置してください。
レビュー完了後の review-raven-thread-owl-cycle は、固定したPR・HEAD・skill revision・required checksを含む完了記録を作成し、次のコマンドで検証します。--head-sha には直前に再取得した現在のPR HEADを渡してください。これはマージ操作を行わず、記録と埋め込みskillの整合性だけを検証します。
mcp-docker reviewgate validate \
--record <completion-record.json> \
--repo <owner/repository> \
--pr <number> \
--head-sha <sha>各 CLI に共通の instruction 本文は、リポジトリへコピーせずユーザー管理の source of truth から参照できます。mcp-docker instruction は source のパスと symlink 方式だけをユーザー設定へ保存し、各 CLI のユーザー単位の入口へリンクします。
| クライアント | instruction 入口 |
|---|---|
| Claude CLI | ~/.claude/CLAUDE.md |
| GitHub Copilot CLI | ~/.copilot/copilot-instructions.md |
| Codex CLI | ~/.codex/AGENTS.md |
| Antigravity / Gemini CLI | ~/.gemini/GEMINI.md |
# source を設定(本文は読み込まず、パスだけを保存)
mcp-docker instruction configure --source "C:\path\to\user-instructions.md"
# 配置計画を確認してからリンクを作成
mcp-docker instruction link --dry-run
mcp-docker instruction link --yes
# 状態確認と修復
mcp-docker instruction status
mcp-docker instruction repair --yesstatus は source の正規化済みパス、source の存在状態、配置先の状態、symlink などの link type、symlink の target を表示します。source が移動・削除されても、status は [見つかりません] として配置状態を確認できます。link は、異なる symlink、壊れた symlink、通常ファイルが既にある場合に、確認後 <配置先>.mcp-docker-backup-<UTC timestamp> へバックアップを作成し、配置先を staging へ移して実体を再確認してから作成専用の symlink を作成します。置換直前または staging 後に配置先が別の通常ファイル・symlink・ディレクトリへ変化した場合は置換せず、競合した配置を復元または staging に保全します。同一リンクは冪等にスキップし、source と配置先が symlink / ハードリンク経由で同じ実体を指す場合は拒否します。repair は壊れた symlink または別 source への symlink だけを修復し、通常ファイルや未配置の入口は保護します。--dry-run はファイルを書き換えません。symlink 作成に失敗した場合の通常ファイルへのコピー・フォールバックも行いません。source へ追加するレビュー完了待機ルールと責務分担は docs/instruction-source.md を参照してください。
| コマンド | 説明 |
|---|---|
make start-gateway |
全サービス起動(推奨) |
make stop / make stop-gateway |
全サービス停止 |
make restart / make restart-gateway |
再起動(stop → start) |
make status / make status-gateway |
全コンテナ状態一覧 |
make logs / make logs-gateway |
mcp-gateway ログ表示 |
make pull / make pull-gateway |
全イメージ更新 |
make pull-main |
mcp-gateway / review-raven / thread-owl の :main と、playwright-mcp の :main(未公開時は :latest)を取得 |
make start-main |
make pull-main で取得済みの開発版イメージで全サービス起動(pull なし) |
make restart-main |
make pull-main で取得済みの開発版イメージで全サービス再起動(pull なし) |
make health-check |
サービスのヘルスチェック(GitHub App credential 診断込み) |
make health-check-quick |
サービスのヘルスチェック(credential 診断をスキップ) |
make mcp-conformance |
thread-owl / review-raven route の MCP 2026-07-28 conformance 検証 |
make mcp-conformance-thread-owl |
thread-owl の discovery / resource / subscription ack 検証 |
make mcp-conformance-review-raven |
review-raven の discovery / stateless tool 検証 |
make register |
対話的に IDE/CLI と MCP サーバーを選択して登録 |
make register-claude |
Claude CLI に MCP サーバーを登録 |
make register-copilot |
GitHub Copilot CLI に MCP サーバーを登録 |
make register-codex |
Codex CLI に MCP サーバーを登録 |
make register-antigravity |
Antigravity CLI に MCP サーバーを登録 |
make register-all |
Claude / Copilot / Codex / Antigravity CLI に MCP サーバーを登録 |
make skill-list |
収蔵している skill の一覧を表示 |
make skill-status |
各 CLI に配置済みの skill が最新かを確認 |
make skill-install |
Claude / Copilot / Codex / Antigravity CLI に skill を配置 |
make skill-uninstall |
配置済みの skill を各 CLI から削除 |
make instruction-configure |
ユーザー管理の instruction source を設定(INSTRUCTION_FLAGS で --source を指定) |
make instruction-status |
各 CLI の instruction source リンク状態を確認 |
make instruction-link |
各 CLI の instruction 入口へ source をリンク |
make instruction-repair |
instruction 入口の不一致をバックアップして修復 |
make lint |
シェルスクリプト Lint |
make test-go |
Go CLI テスト |
make test-shell |
シェルスクリプトテスト(BATS) |
make clean |
キャッシュ削除 |
make clean-docker |
Docker リソースクリーンアップ |
make clean-all |
全クリーンアップ |
| URL | サービス | 認証 |
|---|---|---|
http://127.0.0.1:8080/mcp/github |
github-mcp-server | OAuth 必須 |
http://127.0.0.1:8080/mcp/review-raven |
review-raven | OAuth 必須 |
http://127.0.0.1:8080/mcp/playwright |
playwright-mcp | なし |
http://127.0.0.1:8080/health |
mcp-gateway | なし |
疎通確認:
# installation token の取得可否まで検証
make health-check
# credential 診断をスキップする簡易確認
make health-check-quick
# 対象サービスを切り替える場合
make health-check SERVICE=review-raven
# または
curl -i http://127.0.0.1:8080/healthMCP 2026-07-28 の protocol negotiation と実 route を検証する場合は、gateway-issued Bearer token を
環境変数へ設定して conformance suite を実行する。token 値を command line へ渡さないこと。
$env:MCP_E2E_BEARER_TOKEN = "<gateway-issued bearer token>"
make mcp-conformancelegacy initialize の拒否、subscription notification、mcp-resource-subscriber / squirrel-notifier の
実機受け入れ手順は MCP 2026-07-28 conformance 検証 を参照。
ポートを変更する場合:
# .env または環境変数で設定
MCP_GATEWAY_PORT=18080
make start-gatewayplaywright-mcp は認証なしで利用できるブラウザ操作サービスです。
docker-compose.yml でデフォルト有効。/mcp/playwright から直接接続できます:
{
"mcpServers": {
"playwright-mcp": { "url": "http://127.0.0.1:8080/mcp/playwright" }
}
}Cloudflare MCP(https://mcp.cloudflare.com/mcp)は自身で OAuth AS を持つ公開エンドポイントです。
MCP クライアントが直接 OAuth 認可を行うため、gateway 経由にする必要はありません。
config/mcp-external.yml のコメントを解除して mcp-docker register で登録できます:
servers:
- name: cloudflare
url: https://mcp.cloudflare.com/mcp
# tokenEnv: CLOUDFLARE_API_TOKEN # Codex のみ: 静的 API トークンを使う場合に追加注意:
tokenEnvを含むエントリは Claude / Copilot / Antigravity CLI では登録がスキップされます(シークレットをヘッダーとして保存しない設計のため)。これらのクライアントはtokenEnvなしの URL のみを登録し、OAuth フローで直接認証します。
または各 IDE / CLI に直接 URL を設定します:
{
"mcpServers": {
"cloudflare": { "url": "https://mcp.cloudflare.com/mcp" }
}
}初回アクセス時に MCP クライアントが Cloudflare の OAuth 認可フローを開始します。
| 環境変数 | 既定値 | 説明 |
|---|---|---|
GITHUB_MCP_GATEWAY_IMAGE |
ghcr.io/scottlz0310/mcp-gateway:main |
ゲートウェイイメージ |
GITHUB_MCP_IMAGE |
ghcr.io/github/github-mcp-server:main |
github-mcp-server イメージ |
REVIEW_RAVEN_IMAGE |
ghcr.io/scottlz0310/review-raven:latest |
review-raven イメージ |
PLAYWRIGHT_MCP_IMAGE |
mcr.microsoft.com/playwright/mcp:latest |
通常起動時のイメージ。pull-main / start-main の fallback にも使用 |
PLAYWRIGHT_MCP_MAIN_IMAGE |
mcr.microsoft.com/playwright/mcp:main |
pull-main が取得し、start-main がローカルにあれば起動する開発版イメージ |
PLAYWRIGHT_MCP_FALLBACK_IMAGE |
PLAYWRIGHT_MCP_IMAGE または mcr.microsoft.com/playwright/mcp:latest |
pull-main の fallback、および start-main で :main がローカルにない場合に使用するイメージ |
GITHUB_MCP_IMAGE=ghcr.io/github/github-mcp-server:v1.0.0 make start-gatewaymake status # コンテナ状態確認
make logs-gateway # mcp-gateway ログGITHUB_APP_ID / GITHUB_APP_INSTALLATION_ID、config/github-app/private-key.pem、GitHub App のインストール先と権限を確認してください。
- mcp-gateway が起動しているか確認(
make status-gateway) - ポート確認(デフォルト 8080)
- CLI の MCP サーバー設定 URL が
http://127.0.0.1:8080/mcp/github等になっているか確認 - OAuth フローが完了しているか確認(ブラウザで
http://127.0.0.1:8080/healthにアクセス可能か)
デフォルトの HTTP タイムアウトは 30 秒。複雑な操作では --timeout の調整が必要な場合があります。
github-mcp-server コンテナはシェルなし(Distroless)のため、docker exec -it ... bash は動作しません。
ヘルスチェックは make health-check で行ってください。Windows では Makefile が Git for Windows の Bash を解決して実行します。
make clean 後も ./config/github-mcp ボリュームは残ります。
最初から設定し直す場合は手動で削除してください:
docker volume rm mcp-docker_github-mcp-cachemcp-gateway はブラウザ認証後に取得した OAuth トークンを /data/tokens.db に永続化します。
OAuth 監査ログは /data/logs/auth-audit.jsonl に JSON Lines 形式で保存します。
どちらも mcp-gateway-data volume 配下に置かれるため、コンテナ再作成後も保持されます。
このファイルは 検証済み OAuth トークンのキャッシュであり、GitHub 認証情報(PAT)そのものではありません。
ボリューム情報確認(Mountpoint 等のメタデータ):
ボリューム名のプレフィックスは Compose プロジェクト名(デフォルト: ディレクトリ名)に依存します。 まず
docker volume ls | grep mcp-gateway-dataで実際のボリューム名を確認してください。
# 実際のボリューム名を確認
docker volume ls | grep mcp-gateway-data
# メタデータを表示(上記で確認した名前を使用)
docker volume inspect <実際のボリューム名>認証状態のリセット(再認証が必要な場合):
# 実際のボリューム名を確認してから削除
docker compose down
docker volume ls | grep mcp-gateway-data
docker volume rm <実際のボリューム名>
docker compose up -dセキュリティ注意事項:
mcp-gateway-dataボリュームはmcp-gatewayコンテナ専用です。他のサービスには公開しないでください。- ボリュームパスやトークンファイルの内容を CLI 設定に含めないでください。CLI へは
http://127.0.0.1:8080/mcp/github等の URL のみを記載します。
Mcp-Docker/
├── cmd/
│ └── mcp-docker/ # CLI 登録オーケストレータ
├── internal/
│ ├── compose/ # docker-compose.yml の ROUTE_* 抽出
│ ├── conformance/ # MCP 2026-07-28 実route検証
│ ├── external/ # config/mcp-external.yml 読み込み
│ ├── register/ # Claude / Copilot / Codex adapter
│ └── skill/ # skill カタログと各 CLI への配置
├── skills/ # skill の収蔵先(バイナリへ埋め込み)
│ ├── review-raven-thread-owl-cycle/
│ └── thread-owl-pr-reviewer/
├── docker-compose.yml # メインの Compose 定義(4サービス)
├── Makefile # 操作コマンド集
├── config/
│ ├── mcp-external.yml # 外部 MCP サーバー定義
│ ├── github-app/ # GitHub App 秘密鍵(Git 管理対象外)
│ └── github-mcp/ # GitHub MCP のローカル bind mount 用(未作成時は Docker が作成)
├── scripts/
│ ├── health-check.sh # ヘルスチェック
│ ├── lint-shell.sh # シェルスクリプト Lint(make lint-shell)
│ └── verify-mcp-endpoint.js # MCP エンドポイント疎通確認
├── docs/
│ ├── SECURITY_PATCHES.md # セキュリティ対応履歴
│ ├── e2e-runbook-mcp-docker-cli.md # CLI E2E 確認手順
│ ├── mcp-2026-07-28-conformance.md # 横断protocol conformance手順
│ └── archives/ # 旧設計メモ・検証ログ
├── tests/
│ └── shell/ # BATS シェルテスト
- トークンはコンテナ外(
.envまたはホスト環境変数)で管理してください .envファイルは.gitignoreで除外済みです.envをコミットしないでください- トークンスコープ要件・Fine-grained PAT の詳細は SECURITY.md を参照
- セキュリティパッチ・CVE 対応履歴は docs/SECURITY_PATCHES.md を参照
- docs/architecture-review-platform.md — review platform における Mcp-Docker の責務・責務境界
- github-mcp-server — 本家 GitHub MCP サーバー
- mcp-gateway — OAuth ゲートウェイ
- review-raven — レビュー対応自動化 MCP(reviewed-side)
- CHANGELOG.md — リリース履歴・破壊的変更
MIT License — see LICENSE