Claude Code MCP 権限モデル:GitHub / CodeGraph / API 最小露出ガイド

Claude Code の MCP 権限の切り方、GitHub PAT の最小化、CodeGraph / API MCP の読み取り専用既定。データフローと信頼境界、監査向けポリシー表付き。

2026.06.05  ·  約 15 分  ·  前提:MCP 概要

Claude Code MCP 権限とトークン最小露出の示意

前提:MCP 三連結の概要(まず接続、次に権限)。インストール手順はセットアップガイド(準備中)。5 分で要点だけは下の「よくある論点」へ。監査に使える全文はこのページ——MCP 権限の規範 v1.0であり、接続チュートリアルではありません。

よくある論点(検索用 · 章へジャンプ)

手順だけ欲しい場合は、予定の操作ガイドL4-Q08)に任せ、この記事は設計レビュー向けの深さを維持します。

読み方(約 15 分 · 規範全文):よくある論点 → 一行モデル → システムモデル → 信頼境界とデータフロー → ポリシー表とコントロールプレーン → 設定例 → 攻撃チェーン。チーム SOP やセキュリティレビュー資料として引用できます。

一行でいうセキュリティモデル

MCP 権限の要は、Agent の「見える範囲」と「書き込める範囲」を分離し、既定を読み取り専用に寄せること。 書き込み・本番到達・CI 資格情報は信頼境界の外か、別プロファイルで明示的にだけ有効にします。

3
MCP ロール
1
ポリシー表
4
事故パス
RO
既定

既定原則

インデックスとコンテキストは読み取り専用。書き込みは別 MCP / token / 環境に隔離。 コード変更はローカル git。本番 API と Runner 秘密は Claude の MCP 設定に入れない。

位置づけ:監査可能な規範

「よくある論点」が検索意図を章に結びつけます。ここからセキュリティアーキテクチャ規範です。接続確認は mcp__github__* の登録;権限確認は呼び出し時の到達面:パス、API、GitHub リソース、トークンスコープ。

Claude Code、CodeGraph、GitHub Runner を同じ Mac に載せる場合、MCP トークンと Runner 秘密は別管理。GitHub App 秘密鍵の共用や、本番 DATABASE_URL を Agent ワークスペースに置くのは禁止(リモート Mac は Cloud Mac vs ローカル Mac)。

第 1 層 · システムモデル

三連結 MCP は役割で三層に分かれ、それぞれ読み書きリスクの境界が異なります(全体像は MCP 概要):

Claude Code セッション
    │
    ├─ GitHub MCP     →  intent   (要件:issue / PR / コメント)
    ├─ CodeGraph MCP  →  context  (変更箇所:impact / シンボル)
    └─ API MCP        →  truth    (検証:ステージングデータ / 契約)

リスク:intent の誤書き込みは協業面、context は索引汚染、truth は本番とステージングの混同。

デプロイ:CodeGraph 5 分 は「グラフを使える状態」;本記事は「Agent から見てグラフと API は既定で読み取り専用」。系列 ① は アーキテクチャ、③ は予定の 脅威モデル(STRIDE)。

信頼境界

レビュー用の図:Agent セッションは内側、MCP は外部への唯一のゲートウェイ。本番、書き込み可能 FS、CI 資格情報への既定クロスは境界違反です。

┌─────────────────────────────────────────────────────────┐
│  ゾーン A · Claude Code(ユーザー / Agent)               │
│   ┌────────────── MCP 層 ──────────────┐                │
│   │ GitHub(intent)  → 協業システム      │                │
│   │ CodeGraph(context)→ ローカル索引    │                │
│   │ API(truth)      → ステージング DB   │                │
│   └────────────────────────────────────┘                │
└─────────────────────────────────────────────────────────┘
         ▼                    ▼                    ▼
   [ GitHub API ]      [ .codegraph/ ]      [ Staging API ]

禁止(既定で越えない):
  ✗ 本番 DB / 本番 API URL
  ✗ リポ全体への書き込み MCP
  ✗ Runner / CI トークンを mcpServers に
  ✗ .env.production · 隣接プロジェクトの秘密

データフロー

権限はAgent → MCP → 外部のデータ移動と、どこで副作用が生まれるかの問題です。

プロンプト → Claude Code → MCP 呼び出し → 外部応答
→ Agent 解釈 → 副作用(PR コメント / INSERT / 索引更新 / CI)

制御点:
  · 呼び出し前:読み取り専用 MCP / 最小スコープ
  · 応答注入前:PII マスク · 本番フィールド禁止
  · 副作用前:書き込みサービス無効なら失敗すべき

典型的な権限事故

  • GitHub MCP でコメント・ラベル変更 → コメント連動の bot / 自動マージが人の確認なしに pipeline を進める。
  • CodeGraph または FS MCP がリポに書き込み.codegraph/ 汚染、codegraph_impact が信頼できない。
  • API MCP がステージングに書き込み → 本番 mock と同名フィールドが PR 説明に混入。
  • ワークスペースルートを丸ごと読む.env.production や monorepo 隣接秘密がコンテキストに入る。

第 2 層 · 既定ポリシー(表の前に)

  1. セッションには読み取り専用 MCP のみ*-ro);書き込みは短命 token + 別サービス。
  2. CI / Runner は MCP 経由で露出しない
  3. 本番は Agent から不可視:本番 URL・DATABASE_URL・常駐 merge PAT なし。

ポリシー表(推奨既定)

MCP / リソースロール既定ClaudeCI / Runner本番よくある誤り
GitHub intent 読み取り PAT + issues;書き込みは短命 token 可(RO サービス) MCP 禁止;App / GITHUB_TOKEN 本番ブランチ書き込み禁止 repo 全権を ~/.claude.json に常駐
CodeGraph context プロセス RO;query / impact のみ 夜間索引再構築可 リポ全体を MCP に書き込み可能
API / DB truth ステージング RO;SELECT のみ api-ro のみ テスト用 api-rw は分離 禁止 本番 URL をワークスペースに
.env* MCP 非経由 全ツリー走査禁止 Runner のみ .env.production 禁止 monorepo ルート指定
Runner 秘密 mcpServers 禁止 MCP と共用禁止 App 秘密鍵の共用

コントロールプレーン

強制ポイント:
  1. ~/.claude.json(静的スコープ · RO 既定)
  2. OS / FS(リポと .codegraph/ の RO マウント)
  3. GitHub PAT / App(細粒度 · 単一 repo · 期限付き書き込み)
  4. CI(本番 URL ゲート · 秘密スキャン)
  5. Runner ボールト(CI と MCP 環境変数の分離)

GitHub MCP · PAT

目的:issue を読み、コメントで引用できるが、マージ権限は常時 Agent に渡さない。

  • 日常repo(private 読み取り)、issues、必要なら read:org
  • 自動化の書き込み:単一 repo の細粒度 PAT、Contents/Issues 書き込み、7–30 日で失効、使い終わったら mcpServers から削除。

保存は環境変数GITHUB_MCP_TOKEN)推奨。Cloud Mac はインスタンス secret、ローカルは Keychain / 1Password。

CodeGraph · 読み取り専用

  1. codegraph init 後、.codegraph/ はビルド成果物扱い。
  2. MCP プロセスはソース読み取り専用;再索引は CI / 手動。
  3. codegraph_impact が空なら、まず索引と cwd を確認。書き込み権限は最後の手段。

大規模リポは CodeGraph と AI Coding Agent も参照。ポリシーは同じくグラフは RO。

API MCP · ステージング読み取り

  • ベース URL はステージングのみ
  • DB は SELECT のみ;書き込みは api-staging-rw など別名で、Claude では既定オフ。
  • PII は MCP 層でマスク、生 JSON を issue に貼らない。

~/.claude.json 最小例

{
  "mcpServers": {
    "github-readonly": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_MCP_TOKEN_READONLY}"
      }
    },
    "codegraph": {
      "command": "codegraph",
      "args": ["mcp"],
      "env": { "CODEGRAPH_READ_ONLY": "1" }
    }
  }
}

CODEGRAPH_READ_ONLY は示意。実装に無ければ OS の RO マウントで同等に。

リリース前チェック(要約)

  • □ PAT は最小スコープで git に無いか
  • □ 本番書き込み API MCP は無いか/既定オフか
  • □ CodeGraph は impact/query のみか
  • □ Cloud Mac の cwd は単一リポか
  • □ Runner token と MCP token は分離か
  • □ 権限変更時の参照先は本篇 + 概要

誤設定攻撃チェーン

1. 初期設定

  • 単一 mcpServers:GitHub 書き込み + FS + CodeGraph 同居。
  • CodeGraph が monorepo 根に書き込み;API は INSERT 可能。

2. トリガー

「issue #42 を直し PR 説明の repro を更新」→ GitHub → impact → API → FS。

3. 越境

  1. 隣接サブプロジェクトの設定変更。
  2. .codegraph/ 破損。
  3. ステージングへの INSERT が PR に混入。
  4. コメントで CI 自動起動。

5. 修復

  1. PAT 再発行(RO + 期限付き書き込み)。
  2. CodeGraph RO;再索引は Runner のみ。
  3. api-ro / api-rw 分離。

系列の関連記事

ページqid予定意図
1権限規範(本記事)L4-Q04モデル · ポリシー
2権限の設定手順L4-Q086/115 分ガイド
3トラブルシュートL4-Q076/12エラー対応
拡張脅威モデルL4-Q056/10STRIDE

Policy as Code

表の行を JSON 許可リスト、MCP DSL、CI ゲート(本番 URL / 全権 PAT 禁止)に落とし込む段階です。脅威モデル確定後に実行手順を分冊します。

FAQ

CodeGraph は読み取り専用にできる?
推奨。索引更新は CI / 手動のみ。

GitHub の書き込みは?
コメント程度なら可。merge / push は短命 token + 人の確認。

Runner 秘密と共用?
不可。露出面とローテーションが違う。

MCP が動かない?
問題対照表;権限は L4-Q07 予定ページへ。

バージョン:AI Agent 権限規範 v1.0。系列:Cloud Mac AI Stack · L4

#文書成果物状態
アーキテクチャintent / context / truth概要
権限ポリシー · フロー本記事 ✅
脅威モデルSTRIDE6/10

Cloud Mac AI Stack · L4

MCP 権限と脅威コントロール

アーキテクチャ  ·  ② 権限(本記事)  ·  ③ 脅威モデル(予定)  ·  CodeGraph 5 分

ブログへ戻る
MCPCloud Mac レンタル