Skip to content

Latest commit

 

History

503 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mcp-Docker — MCP Server Docker 統合環境

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-gateway

GitHub App 登録

mcp-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 へ旧名のまま渡されません。

ローカル HTTPS (TLS)

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 統合

Primary: CLI 登録(推奨)

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=--yes

make 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"

stale エントリの削除(prune)

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 --yes

Windows のネイティブシェルで実行する場合:

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 --yes

go install でグローバルツールとしてインストールすることもできます:

go install github.com/scottlz0310/mcp-docker/v2/cmd/mcp-docker@latest
mcp-docker --version
mcp-docker register --agent all --yes

go 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 の配置(mcp-docker skill)

レビュー基盤の 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 で省略)。

skill の revision

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 で再配置してください。

reviewed-side 完了記録の検証

レビュー完了後の 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>

ユーザー instruction source の配置(mcp-docker instruction)

各 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 --yes

status は 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 を参照してください。

サービス操作

Makefile コマンド

コマンド 説明
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 全クリーンアップ

HTTP エンドポイント

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/health

MCP 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-conformance

legacy initialize の拒否、subscription notification、mcp-resource-subscriber / squirrel-notifier の 実機受け入れ手順は MCP 2026-07-28 conformance 検証 を参照。

ポートを変更する場合:

# .env または環境変数で設定
MCP_GATEWAY_PORT=18080
make start-gateway

playwright-mcp(auth=none)

playwright-mcp は認証なしで利用できるブラウザ操作サービスです。 docker-compose.yml でデフォルト有効。/mcp/playwright から直接接続できます:

{
  "mcpServers": {
    "playwright-mcp": { "url": "http://127.0.0.1:8080/mcp/playwright" }
  }
}

Cloudflare Remote MCP(直接接続)

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-gateway

トラブルシューティング

コンテナが起動しない

make status        # コンテナ状態確認
make logs-gateway  # mcp-gateway ログ

GITHUB_APP_ID / GITHUB_APP_INSTALLATION_ID、config/github-app/private-key.pem、GitHub App のインストール先と権限を確認してください。

CLI から接続できない

  1. mcp-gateway が起動しているか確認(make status-gateway)
  2. ポート確認(デフォルト 8080)
  3. CLI の MCP サーバー設定 URL が http://127.0.0.1:8080/mcp/github 等になっているか確認
  4. OAuth フローが完了しているか確認(ブラウザで http://127.0.0.1:8080/health にアクセス可能か)

タイムアウト

デフォルトの HTTP タイムアウトは 30 秒。複雑な操作では --timeout の調整が必要な場合があります。

コンテナ内部に入れない(Distroless)

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-cache

mcp-gateway トークンストア / 監査ログボリューム(mcp-gateway-data)

mcp-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 を参照

関連リソース

ライセンス

MIT License — see LICENSE

About

複数の Docker 起動 MCP サーバーを統括管理するための運用リポジトリ。 OAuth 対応 Gateway、ローカル開発構成、クライアント接続設定をまとめて扱う。

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages