MCP のツールを permissions で自動許可する書き方:mcp__ 記法とワイルドカードの制限
settings.json の allow に mcp__サーバー名 や mcp__サーバー名__ツール名 を書いて MCP ツールの確認を省く方法と、allow のワイルドカードには mcp__<サーバー>__ の前置きが要る理由、括弧付きルールが読み飛ばされる点を解説します。
MCP サーバーを追加すると、そのツールを呼ぶたびに確認を求められます。読み取り専用のツールまで毎回止まるのは手間です。
結論として、settings.json の permissions.allow に mcp__<サーバー名> と書けばそのサーバーのツール全体を、mcp__<サーバー名>__<ツール名> と書けば個別のツールを自動許可できます。ただし allow のワイルドカードには mcp__<サーバー名>__ という前置きが必須 で、mcp__* のような書き方は読み飛ばされます。
サーバーの追加方法そのものは Claude Code に MCP サーバーを追加する方法 を参照してください。
KEY POINT
この記事で分かること
- サーバー単位・ワイルドカード・ツール単位の 3 つの書き方
- allow のワイルドカードに前置きが要る理由と、deny・ask との違い
- 括弧付きの
mcp__ルールが読み飛ばされること
3 つの書き方
公式ドキュメントによると、MCP のルールは「Claude Code に登録したサーバー名を使い、必要ならそのサーバーのツール名を続ける」形式です。
| ルール | 一致するもの |
|---|---|
mcp__puppeteer | puppeteer サーバーが提供するすべてのツール |
mcp__puppeteer__* | 同上(ワイルドカード記法) |
mcp__puppeteer__puppeteer_navigate | puppeteer サーバーの puppeteer_navigate ツールだけ |
settings.json には次のように書きます。
{
"permissions": {
"allow": [
"mcp__puppeteer",
"mcp__github__get_issue",
"mcp__github__list_pull_requests"
]
}
}
サーバー名は、claude mcp add で付けた名前か .mcp.json のキー名です。区切りは アンダースコア 2 つ で、サーバー名とツール名の間も 2 つです。
用語解説
サーバー名(server name): claude mcp add <名前> ... で自分が決めた名前です。同じサーバーでも登録名を変えればルールも変わるため、チームで .claude/settings.json を共有する場合は .mcp.json の名前を揃えておきます。
allow のワイルドカードには前置きが要る
ここが間違えやすい点です。公式ドキュメントには、allow ルールのツール名ワイルドカードは、リテラルの mcp__<サーバー名>__ という前置きの後ろでしか使えないと書かれています。サーバーの部分はワイルドカードを含まない、具体的なサーバー名でなければなりません。
| 書き方 | allow での結果 |
|---|---|
mcp__puppeteer__* | 有効。puppeteer のすべてのツールに一致する |
mcp__github__get_* | 有効。github の get_ で始まるツールに一致する |
mcp__* | 読み飛ばされる。警告が出て、何も自動許可しない |
* / B* | 読み飛ばされる。同上 |
つまり「MCP ツールは全部許可」を allow で一括指定することはできません。サーバーごとに 1 行ずつ書く必要があります。
{
"permissions": {
"allow": [
"mcp__puppeteer__*",
"mcp__github__get_*",
"mcp__linear__*"
]
}
}
deny と ask は書き方が違う
deny と ask はツール名の位置にワイルドカードを使えます。パターンはツール名全体に一致する必要があり、"*" はすべてのツールに、"mcp__*" は全サーバーのすべての MCP ツールに一致します。
{
"permissions": {
"deny": [
"mcp__*"
]
}
}
評価の順序は deny → ask → allow で、最初に一致したルールが結果を決めます。ルールの具体性は順序を変えません。広い deny は、より狭い allow があっても優先されます。allow で deny に例外を作ることはできません。
| 目的 | 書く場所と内容 |
|---|---|
| サーバーのツールを全部許可 | allow に mcp__<サーバー名> |
| 危険なツールだけ止める | deny に mcp__<サーバー名>__<ツール名> |
| 全 MCP ツールを禁止 | deny に mcp__* |
| 毎回確認させる | ask に同じ形式のパターン |
deny がツール名だけ(Bash のような裸の名前)の場合、そのツールは Claude の文脈から取り除かれ、Claude からは見えなくなります。括弧で絞ったルールはツールを残したまま、一致した呼び出しだけを止めます。
なお、deny や ask のルールが既知のどのツールにも一致しない場合は、打ち間違いを捕まえるために起動時の警告が出ます。ただし _ や * を含むツール名はこのチェックの対象外です。mcp__ から始まる名前はすべて該当するため、サーバー名を打ち間違えても警告は出ません。
書く場所と、反映されない書き方
ルールは settings.json に書き、/permissions で確認します。ダイアログには全ルールと、それぞれがどの settings.json から来たかが表示されます。Claude の作業中でも開けて、ルールを足し引きすると同じターンの次のツール呼び出しから反映されます(v2.1.234 以降)。設定ファイルの場所と優先順位は Claude Code の settings.json で権限を設定する、ダイアログの操作は /permissions コマンドの使い方 にまとめています。
括弧付きの mcp__ ルールは読み飛ばされる
Bash(npm run build) のように括弧で引数を絞る書き方は、MCP ツールには使えません。設定ファイルを読み込むとき、Claude Code は 括弧が付いた mcp__ ルールを読み飛ばします。読み飛ばされたルールは、対話セッション開始時の invalid-settings ダイアログと claude doctor の出力に一覧されます。MCP ツールをパラメータで絞りたい場合は、--disallowedTools に deny ルールを渡します。
もう 1 つ、allow を書いても効かない場合があります。組織が claude.ai のコネクタのツールを ask に設定し、その設定がセッションに届いている場合、そのツールへの allow ルールは効きません。auto モードでも bypassPermissions モードでも毎回確認されます。確認を出さない dontAsk モードでは、代わりに拒否されます。Claude Code 自身が取得したコネクタのツールは mcp__claude_ai_<サーバー名>__<ツール名> という名前で現れます。
まとめ
allowにmcp__<サーバー名>でサーバー全体、mcp__<サーバー名>__<ツール名>で個別のツールを自動許可する- allow のワイルドカードは
mcp__<サーバー名>__の後ろだけ。mcp__*や*は警告付きで読み飛ばされる - deny と ask はツール名全体のワイルドカードを使える。
denyのmcp__*で全 MCP ツールを禁止できる - 評価順は deny → ask → allow。具体性に関係なく、最初に一致したものが決まる
- 括弧付きの
mcp__ルールは設定ファイルから読み飛ばされる。パラメータで絞るなら--disallowedTools
よくある質問
- MCP サーバーのツールをまとめて許可するには?
- settings.json の permissions.allow に "mcp__サーバー名" と書きます。"mcp__サーバー名__*" も同じ意味です。サーバー名は Claude Code に登録した名前です。
- allow に "mcp__*" と書いても効きません。
- allow のワイルドカードは mcp__<サーバー名>__ という前置きの後ろでしか使えません。"mcp__*" のようにサーバー名を含まないパターンは警告付きで読み飛ばされ、何も自動許可しません。
- mcp__github__create_issue(title:*) のような書き方はできますか?
- できません。設定ファイルを読み込むとき、Claude Code は括弧が付いた mcp__ ルールを読み飛ばします。MCP ツールのパラメータで絞るには --disallowedTools に deny ルールを渡します。
- すべての MCP ツールを禁止するには?
- permissions.deny に "mcp__*" と書きます。deny と ask はツール名の位置にワイルドカードを使えるため、この書き方が有効です。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合は お問い合わせからお知らせください。