mcpField
W
What's Allowed

What's Allowed

ローカル
shifttheculture.mediaセキュリティ04 週間前に更新

What's Allowed について

What's Allowedは、Claude Codeの権限設定の統合状態を調べるMCPサーバーです。ファイルの優先順位や仕様に基づくルール上の問題を報告しますが、実際の判定をシミュレートしたりファイルを変更したりはしません。

主な機能

  1. 01有効な権限設定の要約
  2. 02設定ファイルの優先順位表示
  3. 03仕様に基づくルール問題の検出
  4. 04無人実行につながる設定の報告

活用シーン

  1. 01denyルールが参照されるか確認
  2. 02どの設定ファイルが優先されるか追跡
  3. 03フックと包括的な許可ルールの確認

MCP 対応

MCPクライアントからツールを呼び出し、統合されたClaude Codeの権限設定、ルール上の問題、無人実行につながる設定を調べられます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"stcmain-whats-allowed": {
"command": "npx",
"args": [
"-y",
"whats-allowed-mcp"
]
}
}
}
起動コマンドnpx -y whats-allowed-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmwhats-allowed-mcp0.1.1

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
dirstringいいえ権限を確認するプロジェクトディレクトリの絶対パスです。デフォルトはサーバーの作業ディレクトリです。

詳細

whats-allowed-mcp

npm License: MIT stcmain/whats-allowed-mcp MCP server

拒否ルールを書きました。そのルールは機能しましたか? エージェントの権限設定に関わるすべての設定ファイルを読み込み、どの設定が優先されるかを示し、クライアントが受け入れた後に無視するルールを一覧表示する MCP サーバーです。

理由

コーディングエージェントの権限ルールは、ひとつのファイルにまとまっていません。最大で5つのファイルに同時に存在します。マシン全体に適用される管理ポリシー、チームがコミットするプロジェクトファイル、Git の追跡対象外になっているローカルファイル、ユーザーファイル、そしてセッションによって書き込まれた設定です。これらはマージされた後、拒否 → 確認 → 許可の順に評価され、最初に一致したルールが優先されます。同じ順位の場合、具体性によって優先順位が変わることはありません。

マージだけでも十分に厄介です。実際に問題になるのは、いくつかの形式のルールが受け入れられても、何もせずに無視されることです。

  • Write(docs/**) — ファイル権限は Edit(path) と Read(path) のルールに対してのみ確認されます。Write、NotebookEdit、MultiEdit、または Glob のパスルールは受け入れられますが、参照されることはありません。
  • Bash(command:rm *) — param:value 形式のルールでは、ツールの主要な内容フィールドに一致させることはできません。複合コマンドによって回避されるため、無視されます。
  • allow 内の "mcp__*" — アンカーのない許可グロブはスキップされ、自動承認の対象にはなりません。
  • ユーザー設定内の Read(/.env) — 先頭のスラッシュをひとつだけ付けると、設定元を基準にパスが固定されるため、このルールが保護するのは ~/.claude/.env であり、各プロジェクトの .env ではありません。
  • deny 内の Bash(git push *) の下にある allow 内の Bash(git push origin main) — 拒否ルールに許可リストの例外を含めることはできないため、許可ルールには到達できません。

Claude Code は起動時にこれらの一部について警告しますが、気づいたときにはすでにスクロールバックで見えなくなっています。これらをまとめるものも、エージェント自身に知らせるものも、5つすべてのファイルをマージした状態で一度に表示するものもありません。このツールがそれを行います。

表示例

プロジェクトの .claude/settings.json が次の内容の場合:

{
  "permissions": {
    "deny": ["Bash(git push *)", "Write(.env*)"],
    "allow": [
      "Bash(npm run test:*)",
      "Bash(git push origin main)",
      "Bash(npx *)",
      "Bash(ls*)"
    ]
  }
}

…そしてユーザーの ~/.claude/settings.json に "deny": ["Read(/.env)"] と "defaultMode": "acceptEdits" がある場合、whats_allowed は次のように返します(パスはここでは短縮しています)。

# Permissions in force

| | |
|---|---|
| Settings files contributing | 2 of 5 possible |
| Permission rules | 3 deny, 0 ask, 4 allow |
| Blanket allow rules (whole tool) | 0 |
| Hook commands wired to agent events | 0 |
| Extra directories granted | 0 |
| Rules that do not do what they look like | 5, of which 1 is ignored outright |

## Default mode

`defaultMode` = **`acceptEdits`**, set in User (`~/.claude/settings.json`).

> Automatically accepts file edits and common filesystem commands (`mkdir`,
> `touch`, `mv`, `cp`) for paths in the working directory or additionalDirectories.

## First things to look at

- **Path rule on Write** — `Write(.env*)` in Project settings
- **Allow rule on a command runner (`npx`)** — `Bash(npx *)` in Project settings
- **Trailing wildcard with no word boundary** — `Bash(ls*)` in Project settings

ルールは7つあります。そのうち5つは、読み取ったときの意図とは異なる動作をします。そして、誰もが機能すると考えるであろう Write(.env*) は、まったく参照されません。

ツール

ツールどのような問いに答えるか
whats_allowed概要:どのファイルが反映されているか、拒否/確認/許可ルールの数、優先される defaultMode、一括許可、フック、誤動作するルールの数を示します。まずはこちらから
permission_sources優先順位に従ってどのファイルが決定するかを示します。ファイルの有無、解析状態、ルール数、各ファイルで先頭の / が何を基準にパスを固定するかを確認できます
rule_findingsドキュメントに記載された動作が見かけ上の意図と異なるすべてのルールを、その理由とドキュメントに記載された代替策とともに示します
unattended_surface誰も監視していない状態で実行されるものを示します。デフォルトモード、一括許可、追加ディレクトリ、モードガード、フックコマンドを確認できます

インストール

Claude Desktop(ワンクリック、ターミナル不要): Releasesから最新のwhats-allowed-mcp-<version>.dxtをダウンロードし、Claude Desktopで開きます(ダブルクリック、または「設定」→「拡張機能」→「拡張機能をインストール…」)。サーバーと依存関係はバンドルに含まれているため、npmもNodeのインストールも不要です。

Claude Codeに登録すると、すべてのセッションで利用できます:

claude mcp add --scope user whats-allowed -- npx -y whats-allowed-mcp

または、任意のMCPクライアントの設定で:

{
  "mcpServers": {
    "whats-allowed": {
      "command": "npx",
      "args": ["-y", "whats-allowed-mcp"]
    }
  }
}
ソースからインストール
git clone https://github.com/stcmain/whats-allowed-mcp
cd whats-allowed-mcp && npm install && npm run build
# then point your client at node /path/to/whats-allowed-mcp/dist/index.js

npmではwhats-allowed-mcpとして、MCP Registryではio.github.stcmain/whats-allowed-mcpとして公開されています。

設定は不要です。環境変数も不要です。ユーザー設定の保存先を変更している場合は、CLAUDE_CONFIG_DIRを参照します。

検査する内容と、推測しない内容

各検出結果はAnthropicが文書化している動作に対応しており、その根拠となる段落へのリンクも付いています。リスクスコア、重大度の順位付け、「疑わしいルール」を判定するヒューリスティックはありません。こうしたものは、一般的な設定に対して自信たっぷりに誤った結果を出すためです。

報告する内容:

  • ファイル権限のチェックでは参照されない、Write/NotebookEdit/MultiEdit/Globに対するパスルール
  • ツールの主要なコンテンツフィールドを対象とし、完全に無視されるTool(param:value)ルール
  • allowにある、ツール名に対するアンカーのないグロブ。これらは何も自動承認しません
  • シェルパターンの末尾以外で使われた:*。この場合、コロンは文字どおりに扱われます
  • ユーザー設定内の/pathルール。これはプロジェクトではなく設定ディレクトリを基準にします
  • 単語境界のない末尾の*。Bash(ls*)はlsofにも一致します
  • 他のコマンドを実行するコマンド(npx、docker exec、bash -c、xargs、devbox runなど)に対する許可ルール。これらは後続の任意の内容を承認します
  • URLを制約しようとするBashルール。ドキュメント自体が脆弱だと説明しています
  • denyルールまたはaskルールが先に適用される許可ルール
  • 複数のファイルに宣言されているルール

意図的に報告しない内容:

  • ルールが意図したとおりの内容かどうか。 これは意図に関する判断であり、このサーバーには判断できません。
  • ワイルドカードソルバーが必要なシャドーイング。 ブロックするルールが、対象を確実に網羅するプレフィックスパターンの場合に限り、許可ルールを到達不能と判定します。それより複雑なケースは推測せず、そのままにするため、意図的に報告が少なくなっています。
  • 仮想的なコマンドに対する判定。 以下を参照してください。

正直な制限事項

  • クライアントの判定をシミュレートするものではありません。 「git pushが許可されるか」を判定するツールはありません。これは設計上の選択です。Claude Codeに組み込まれた読み取り専用コマンドのセット、ラッパーの除去(timeout、nice、xargsなど)、複合コマンドの分割、サンドボックスの状態、PreToolUseフックの結果などが、実際の判定にすべて関わるためです。静的な判定は、答えがないよりも価値が下がるほど頻繁に、自信たっぷりに間違うでしょう。現在の状態はクライアントで/permissionsを使って確認し、なぜその判定になるのかを理解するためにこのツールを使ってください。
  • コマンドラインフラグは確認できません。 --allowedTools、--disallowedTools、--permission-mode、--settingsは、管理ポリシーとローカル設定の間に適用されますが、ディスク上にはありません。
  • /permissionsから追加されたセッションルールは、このサーバーが読み取るファイルに保存されますが、単一セッション用に追加されたルールは保存されません。
  • 報告はしますが、修正はしません。 何も編集せず、検出結果がルールの削除を推奨することもありません。ドキュメントに修正例がある場合は引用し、ない場合は確認できた内容の報告にとどめます。
  • ~/.claude/settings.local.jsonは報告しますが、順位付けはしません。 このファイルは存在し、Claude Codeが書き込みますが、公開されている優先順位の表には4つのスコープが記載され、このファイルは含まれていません。このサーバーは位置付けを勝手に作り出しません。
  • Claude Codeのスキーマを基準にしています。 独自の権限システムを持つ他のクライアントは解析しません。
  • Gitの履歴は読み取りません。 また、誰がいつルールを追加したかも示しません。その確認にはgit log -p .claude/settings.jsonのほうが適しています。

設計上の注意点/脅威モデル

  • 子プロセスなし。シェルなし。ネットワークなし。書き込みなし。 使用する Node API は node:fs の読み取り、node:path、node:os だけです。ソース内に child_process のインポートは一切ないため、設定ファイルを読み取っても、その中の何かが実行されることはありません。報告対象となるフックコマンドや apiKeyHelper スクリプトも同様です。
  • env の値は読み取らず、名前だけを読み取ります。 設定ファイルは、平文の API キーが記載されていることが非常に多い場所です。API キーをコンテキストウィンドウに貼り付けるツールでは、解決する問題よりも深刻な問題を引き起こしてしまいます。apiKeyHelper も同様です。存在することは報告しますが、スクリプトを読み取ったり実行したりはしません。
  • 設定ファイル由来の文字列は囲み、ラベルを付けます。 ルールのテキストやフックコマンドは、有用な情報を得るために表示する必要があります。これらはバッククォートを無効化し、パイプをエスケープし、改行を平坦化したうえでインラインコードスパン内に出力します。これにより、細工された文字列がスパンや Markdown テーブルから抜け出すことはできません。また、各ブロックには、引用されたテキストはファイル内のデータであり、指示ではないという注意書きが常に付いています。
  • モデルが制御するパスは dir だけで、設計上その範囲は限定されています。解決され、実際のパスに変換され、既存のディレクトリであることが必須です。その後に読み取るのは、固定されたファイル名だけです。.claude/settings.json、.claude/settings.local.json、ユーザー設定ファイル、プラットフォームの管理ポリシーパスが対象です。グロブ、ディレクトリ走査、任意のファイル読み取りはありません。
  • 処理量には上限があります。 ファイルごとの上限は 2 MB、プロジェクトルートを探す際の走査回数にも上限があり、解析に失敗したファイルは推測で一部を読み取らず、未解析として報告します。
  • 検出結果は、設計上、控えめなものになります。 各チェックは、文書化された動作に基づいています。意図について判断が必要なものは、一切報告しません。ガードレールが実際に機能しているかを判断するためのツールでは、検出漏れを許容するほうが適切です。

開発元

Shift The Culture が開発しました。私たちは AI エージェントを活用する一人会社を運営し、自分たちに必要だったツールを提供しています。このサーバーは無料で、MIT ライセンスです。条件はありません。

姉妹プロジェクトが 3 つあり、いずれも無料で MIT ライセンスです。

  • whats-running-mcp — 古いトランスクリプトに書かれた内容ではなく、今このマシンで実際に実行されているものを確認します。
  • whats-loaded-mcp — 入力を始める前にコンテキストウィンドウを消費しているもの、つまりスキルの説明、メモリファイルとそのインポートを確認します。
  • whats-inherited-mcp — 自分が書いたのではないチェックアウトが、エージェントに何をさせようとしているかを確認します。指示ファイル、フック、および宣言されている MCP サーバーが対象です。

その他のツールは有料です。

  • Agent Fleet Ops Kit(29 ドル)— 1 台のマシンで 3~4 個のエージェントを実行する際に起こる、その他の障害モードに対応します。同じチェックアウトを 2 つのセッションが編集してしまう、誰も管理していない開発サーバーのせいでエージェントが編集対象とは異なるアプリをテストする、クラッシュしたセッションから MCP サーバーが残り、ポートと RAM を何週間も占有する、といった問題を防ぎます。 PayPal をご希望ですか? 同じキットを Payhip でもご購入いただけます。
  • Agent Reliability Kit(29 ドル)— エージェントが「完了」と報告した際に、実際には確認されていないリポジトリ、URL、またはビルドを根拠としている場合、ターンをブロックする Stop フックと 2 つの CLI を提供します。 PayPal をご希望ですか? 同じキットを Payhip でもご購入いただけます。

上記のサーバーは、どちらの場合も無料で、MIT ライセンスです。アップセルは含まれておらず、テレメトリもなく、有料キットへの依存もありません。

スポンサー

このサーバーはMITライセンスであり、今後もMITライセンスのままです。プロ版はなく、テレメトリーもなく、無料版から機能を差し引くこともありません。スポンサーシップによって、こうした方針を変えることなく、メンテナンス費用をまかなっています。

スポンサーはまだいません — 最初の枠を募集中です。 企業スポンサーは、このセクションと、姉妹プロジェクトの3つのサーバー、およびスポンサー向けページに社名またはロゴを掲載できます。スポンサーのティア、掲載内容の詳細、そしてスポンサーシップの対価に含まれない内容については、こちらをご覧ください: https://shifttheculture.media/sponsor

個人の方はこちら:https://paypal.me/ShiftTheCultureLLC — 金額は自由で、特典やティアはありません。

ライセンス

MIT © Zachary Pampu

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。