メインコンテンツへスキップ
Claude Code は、AI ツール統合のためのオープンソース標準である Model Context Protocol (MCP) を通じて、数百の外部ツールとデータソースに接続できます。MCP サーバーは Claude Code にツール、データベース、API へのアクセスを提供します。

MCP でできること

MCP サーバーが接続されている場合、Claude Code に以下のことを依頼できます。
  • 課題トラッカーから機能を実装する: 「JIRA の課題 ENG-4521 に記載されている機能を追加し、GitHub に PR を作成してください。」
  • 監視データを分析する: 「Sentry と Statsig をチェックして、ENG-4521 に記載されている機能の使用状況を確認してください。」
  • データベースをクエリする: 「PostgreSQL データベースに基づいて、ENG-4521 機能を使用した 10 人のランダムなユーザーのメールアドレスを検索してください。」
  • デザインを統合する: 「Slack に投稿された新しい Figma デザインに基づいて、標準メールテンプレートを更新してください。」
  • ワークフローを自動化する: 「これら 10 人のユーザーを新機能に関するフィードバックセッションに招待する Gmail ドラフトを作成してください。」

人気のある MCP サーバー

Claude Code に接続できる一般的に使用されている MCP サーバーをいくつか紹介します。
サードパーティの MCP サーバーは自己責任で使用してください。Anthropic はこれらすべてのサーバーの正確性またはセキュリティを検証していません。 インストールする MCP サーバーを信頼していることを確認してください。 信頼できないコンテンツをフェッチできる MCP サーバーを使用する場合は特に注意してください。これらはプロンプトインジェクションのリスクにさらされる可能性があります。
特定の統合が必要ですか? GitHub で数百以上の MCP サーバーを検索するか、MCP SDK を使用して独自に構築してください。

MCP サーバーのインストール

MCP サーバーは、ニーズに応じて 3 つの異なる方法で設定できます。

オプション 1: リモート HTTP サーバーを追加する

HTTP サーバーはリモート MCP サーバーに接続するための推奨オプションです。これはクラウドベースのサービスに対して最も広くサポートされているトランスポートです。
# 基本的な構文
claude mcp add --transport http <name> <url>

# 実際の例: Notion に接続
claude mcp add --transport http notion https://mcp.notion.com/mcp

# Bearer トークン付きの例
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

オプション 2: リモート SSE サーバーを追加する

SSE (Server-Sent Events) トランスポートは非推奨です。利用可能な場合は HTTP サーバーを使用してください。
# 基本的な構文
claude mcp add --transport sse <name> <url>

# 実際の例: Asana に接続
claude mcp add --transport sse asana https://mcp.asana.com/sse

# 認証ヘッダー付きの例
claude mcp add --transport sse private-api https://api.company.com/sse \
  --header "X-API-Key: your-key-here"

オプション 3: ローカル stdio サーバーを追加する

Stdio サーバーはマシン上のローカルプロセスとして実行されます。システムへの直接アクセスが必要なツールやカスタムスクリプトに最適です。
# 基本的な構文
claude mcp add [options] <name> -- <command> [args...]

# 実際の例: Airtable サーバーを追加
claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
  -- npx -y airtable-mcp-server
重要: オプションの順序すべてのオプション(--transport--env--scope--header)はサーバー名の 前に 配置する必要があります。--(ダブルダッシュ)はサーバー名を MCP サーバーに渡されるコマンドと引数から分離します。例:
  • claude mcp add --transport stdio myserver -- npx servernpx server を実行
  • claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080 → 環境に KEY=value を設定して python server.py --port 8080 を実行
これにより Claude のフラグとサーバーのフラグの間の競合を防ぎます。

サーバーの管理

設定後、これらのコマンドで MCP サーバーを管理できます。
# すべての設定済みサーバーをリストする
claude mcp list

# 特定のサーバーの詳細を取得
claude mcp get github

# サーバーを削除
claude mcp remove github

# (Claude Code 内)サーバーのステータスを確認
/mcp

動的ツール更新

Claude Code は MCP list_changed 通知をサポートしており、MCP サーバーが接続を切断して再接続することなく、利用可能なツール、プロ���プト、リソースを動的に更新できます。MCP サーバーが list_changed 通知を送信すると、Claude Code はそのサーバーから利用可能な機能を自動的に更新します。
ヒント:
  • --scope フラグを使用して設定の保存場所を指定します。
    • local(デフォルト): 現在のプロジェクト内でのみ利用可能(古いバージョンでは project と呼ばれていました)
    • project: プロジェクト内のすべてのユーザーと .mcp.json ファイルで共有
    • user: すべてのプロジェクト全体でアクセス可能(古いバージョンでは global と呼ばれていました)
  • --env フラグで環境変数を設定します(例:--env KEY=value
  • MCP_TIMEOUT 環境変数を使用して MCP サーバーのスタートアップタイムアウトを設定します(例:MCP_TIMEOUT=10000 claude は 10 秒のタイムアウトを設定)
  • Claude Code は MCP ツール出力が 10,000 トークンを超える場合に警告を表示します。この制限を増やすには、MAX_MCP_OUTPUT_TOKENS 環境変数を設定します(例:MAX_MCP_OUTPUT_TOKENS=50000
  • OAuth 2.0 認証が必要なリモートサーバーで認証するには /mcp を使用します
Windows ユーザー: ネイティブ Windows(WSL ではない)では、npx を使用するローカル MCP サーバーは適切な実行を確保するために cmd /c ラッパーが必要です。
# これにより Windows が実行できる command="cmd" が作成されます
claude mcp add --transport stdio my-server -- cmd /c npx -y @some/package
cmd /c ラッパーがないと、Windows は npx を直接実行できないため「Connection closed」エラーが発生します。(-- パラメータの説明については上記のメモを参照してください。)

プラグイン提供の MCP サーバー

プラグインは MCP サーバーをバンドルでき、プラグインが有効になると自動的にツールと統合を提供します。プラグイン MCP サーバーはユーザーが設定したサーバーと同じように機能します。 プラグイン MCP サーバーの仕組み:
  • プラグインはプラグインルートの .mcp.json または plugin.json 内でインラインで MCP サーバーを定義します
  • プラグインが有効になると、その MCP サーバーが自動的に起動します
  • プラグイン MCP ツールは手動で設定された MCP ツールと一緒に表示されます
  • プラグインサーバーはプラグインのインストール(/mcp コマンドではない)を通じて管理されます
プラグイン MCP 設定の例: プラグインルートの .mcp.json 内:
{
  "database-tools": {
    "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
    "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
    "env": {
      "DB_URL": "${DB_URL}"
    }
  }
}
または plugin.json 内でインライン:
{
  "name": "my-plugin",
  "mcpServers": {
    "plugin-api": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
      "args": ["--port", "8080"]
    }
  }
}
プラグイン MCP 機能:
  • 自動ライフサイク��: プラグインが有効になるとサーバーが起動しますが、MCP サーバーの変更(有効化または無効化)を適用するには Claude Code を再起動する必要があります
  • 環境変数: プラグイン相対パスに ${CLAUDE_PLUGIN_ROOT} を使用します
  • ユーザー環境アクセス: 手動で設定されたサーバーと同じ環境変数へのアクセス
  • 複数のトランスポートタイプ: stdio、SSE、HTTP トランスポートをサポート(トランスポートサポートはサーバーによって異なる場合があります)
プラグイン MCP サーバーの表示:
# Claude Code 内で、プラグインのものを含むすべての MCP サーバーを表示
/mcp
プラグインサーバーはプラグインから来ていることを示すインジケータ付きでリストに表示されます。 プラグイン MCP サーバーの利点:
  • バンドル配布: ツールとサーバーが一緒にパッケージ化
  • 自動セットアップ: 手動の MCP 設定は不要
  • チーム一貫性: プラグインがインストールされると全員が同じツールを取得
プラグインで MCP サーバーをバンドルする方法の詳細については、プラグインコンポーネントリファレンスを参照してください。

MCP インストールスコープ

MCP サーバーは 3 つの異なるスコープレベルで設定でき、それぞれサーバーのアクセシビリティと共有を管理するための異なる目的があります。これらのスコープを理解することで、特定のニーズに合わせてサーバーを設定する最適な方法を決定するのに役立ちます。

ローカルスコープ

ローカルスコープのサーバーはデフォルトの設定レベルを表し、プロジェクトのパスの下の ~/.claude.json に保存されます。これらのサーバーはプライベートなままで、現在のプロジェクトディレクトリ内で作業する場合にのみアクセス可能です。このスコープは個人開発サーバー、実験的な設定、または共有すべきでない機密認証情報を含むサーバーに最適です。
MCP サーバーの「ローカルスコープ」という用語は一般的なローカル設定とは異なります。MCP ローカルスコープのサーバーは ~/.claude.json(ホームディレクトリ)に保存されますが、一般的なローカル設定は .claude/settings.local.json(プロジェクトディレクトリ内)を使用します。設定ファイル��場所の詳細については、設定を参照してください。
# ローカルスコープのサーバーを追加(デフォルト)
claude mcp add --transport http stripe https://mcp.stripe.com

# ローカルスコープを明示的に指定
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

プロジェクトスコープ

プロジェクトスコープのサーバーは、プロジェクトのルートディレクトリの .mcp.json ファイルに設定を保存することでチーム協力を可能にします。このファイルはバージョン���理にチェックインするように設計されており、すべてのチームメンバーが同じ MCP ツールとサービスにアクセスできることを保証します。プロジェクトスコープのサーバーを追加すると、Claude Code は自動的にこのファイルを作成または更新して、適切な設定構造を使用します。
# プロジェクトスコープのサーバーを追加
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp
結果の .mcp.json ファイルは標準化された形式に従います。
{
  "mcpServers": {
    "shared-server": {
      "command": "/path/to/server",
      "args": [],
      "env": {}
    }
  }
}
セキュリティ上の理由から、Claude Code は .mcp.json ファイルからプロジェクトスコープのサーバーを使用する前に承認を求めます。これらの承認選択をリセットする必要がある場合は、claude mcp reset-project-choices コマンドを使用します。

ユーザースコープ

ユーザースコープのサーバーは ~/.claude.json に保存され、クロスプロジェクトのアクセシビリティを提供し、マシン上のすべてのプロジェクト全体で利用可能になりながら、ユーザーアカウントにプライベートなままです。このスコープは個人ユーティリティサーバー、開発ツール、または異なるプロジェクト全体で頻繁に使用するサービスに適しています。
# ユーザーサーバーを追加
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

適切なスコープの選択

以下に基づいてスコープを選択します。
  • ローカルスコープ: 個人サーバー、実験的な設定、または 1 つのプロジェクトに固有の機密認証情報
  • プロジェクトスコープ: チーム共有サーバー、プロジェクト固有のツール、または協力に必要なサービス
  • ユーザースコープ: 複数のプロジェクト全体で必要な個人ユーティリティ、開発ツール、または頻繁に使用されるサービス
MCP サーバーはどこに保存されていますか?
  • ユーザーおよびローカルスコープ: ~/.claude.jsonmcpServers フィールドまたはプロジェクトパスの下)
  • プロジェクトスコープ: プロジェクトルートの .mcp.json(ソース管理にチェックイン)
  • 管理: システムディレクトリの managed-mcp.json管理 MCP 設定を参照)

スコープの階層と優先順位

MCP サーバー設定は明確な優先順位の階層に従います。同じ名前のサーバーが複数のスコープに存在する場合、システムはローカルスコープのサーバーを最初に優先し、その後プロジェクトスコープのサーバー、最後にユーザースコープのサーバーを優先することで競合を解決します。この設計により、必要に応じて個人設定が共有設定をオーバーライドできることが保証されます。

.mcp.json での環境変数の展開

Claude Code は .mcp.json ファイルの環境変数の展開をサポートしており、チームが設定を共有しながら、マシン固有のパスと API キーなどの機密値の柔軟性を維持できます。 サポートされている構文:
  • ${VAR} - 環境変数 VAR の値に展開
  • ${VAR:-default} - VAR が設定されている場合は VAR に展開、そうでない場合は default を使用
展開場所: 環境変数は以下で展開できます。
  • command - サーバー実行可能ファイルのパス
  • args - コマンドライン引数
  • env - サーバーに渡される環境変数
  • url - HTTP サーバータイプの場合
  • headers - HTTP サーバー認証の場合
変数展開の例:
{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}
必要な環境変数が設定されておらず、デフォルト値がない場合、Claude Code は設定の解析に失敗します。

実践的な例

例: Sentry でエラーを監視する

# 1. Sentry MCP サーバーを追加
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

# 2. /mcp を使用して Sentry アカウントで認証
> /mcp

# 3. 本番環境の問題をデバッグ
> "過去 24 時間で最も一般的なエラーは何ですか?"
> "エラー ID abc123 のスタックトレースを表示してください"
> "どのデプロイメントがこれらの新しいエラーを導入しましたか?"

例: コードレビューのために GitHub に接続する

# 1. GitHub MCP サーバーを追加
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

# 2. Claude Code で必要に応じて認証
> /mcp
# GitHub の「認証」を選択

# 3. これで Claude に GitHub で作業するよう依頼できます
> "PR #456 をレビューして改善を提案してください"
> "見つけたバグの新しい課題を作成してください"
> "自分に割り当てられたすべてのオープン PR を表示してください"

例: PostgreSQL データベースをクエリする

# 1. 接続文字列を使用してデータベースサーバーを追加
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:[email protected]:5432/analytics"

# 2. データベースを自然にクエリ
> "今月の総収益はいくらですか?"
> "orders テーブルのスキーマを表示してください"
> "過去 90 日間に購入していない顧客を検索してください"

リモート MCP サーバーで認証する

多くのクラウドベースの MCP サーバーは認証が必要です。Claude Code は安全な接続のために OAuth 2.0 をサポートしています。
1

認証が必要なサーバーを追加する

例:
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
2

Claude Code 内で /mcp コマンドを使用する

Claude Code で、コマンドを使用します。
> /mcp
その後、ブラウザでログインするステップに従ってください。
ヒント:
  • 認証トークンは安全に保存され、自動的に更新されます
  • /mcp メニューの「Clear authentication」を使用してアクセスを取り消します
  • ブラウザが自動的に開かない場合は、提供された URL をコピーしてください
  • OAuth 認証は HTTP サーバーで機能します

事前設定された OAuth 認証情報を使用する

一部の MCP サーバーは自動 OAuth セットアップをサポートしていません。「Incompatible auth server: does not support dynamic client registration」���ようなエラーが表示される場合、サーバーは事前設定された認証情報が必要です。まずサーバーの開発者ポータルを通じて OAuth アプリを登録し、サーバーを追加するときに認証情報を提供します。
1

サーバーで OAuth アプリを登録する

サーバーの開発者ポータルを通じてアプリを作成し、クライアント ID とクライアントシークレットをメモします。多くのサーバーはリダイレクト URI も必要とします。その場合は、ポートを選択し、http://localhost:PORT/callback の形式でリダイレクト URI を登録します。次のステップで --callback-port と同じポートを使用します。
2

認証情報を使用してサーバーを追加する

次のいずれかの方法を選択します。--callback-port に使用されるポートは任意の利用可能なポートです。前のステップで登録したリダイレクト URI と一致する必要があります。
--client-id を使用してアプリのクライアント ID を渡します。--client-secret フラグはマスクされた入力でシークレットを求めます。
claude mcp add --transport http \
  --client-id your-client-id --client-secret --callback-port 8080 \
  my-server https://mcp.example.com/mcp
3

Claude Code で認証する

Claude Code で /mcp を実行し、ブラウザのログインフローに従ってください。
ヒント:
  • クライアントシークレットはシステムキーチェーン(macOS)または認証情報ファイルに安全に保存され、設定には保存されません
  • サーバーがシークレットのないパブリック OAuth クライアントを使用する場合は、--client-secret なしで --client-id のみを使用します
  • これらのフラグは HTTP および SSE トランスポートにのみ適用されます。stdio サーバーには影響しません
  • claude mcp get <name> を使用して、OAuth 認証情報がサーバーに設定されていることを確認します

JSON 設定から MCP サーバーを追加する

MCP サーバーの JSON 設定がある場合は、直接追加できます。
1

JSON から MCP サーバーを追加する

# 基本的な構文
claude mcp add-json <name> '<json>'

# 例: JSON 設定で HTTP サーバーを追加
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

# 例: JSON 設定で stdio サーバーを追加
claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

# 例: 事前設定された OAuth 認証情報を使用して HTTP サーバーを追加
claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret
2

サーバーが追加されたことを確認する

claude mcp get weather-api
ヒント:
  • JSON がシェルで適切にエスケープされていることを確認してください
  • JSON は MCP サーバー設定スキーマに準拠する必要があります
  • --scope user を使用して、プロジェクト固有のサーバーの代わりにユーザー設定にサーバーを追加できます

Claude Desktop から MCP サーバーをインポートする

Claude Desktop で MCP サーバーを既に設定している場合は、それらをインポートできます。
1

Claude Desktop からサーバーをインポートする

# 基本的な構文 
claude mcp add-from-claude-desktop 
2

インポートするサーバーを選択する

コマンドを実行した後、インポートするサーバーを選択できる対話型ダイアログが表示されます。
3

サーバーがインポートされたことを確認する

claude mcp list 
ヒント:
  • この機能は macOS と Windows Subsystem for Linux(WSL)でのみ機能します
  • これらのプラットフォームの標準的な場所から Claude Desktop 設定ファイルを読み取ります
  • --scope user フラグを使用してサーバーをユーザー設定に追加します
  • インポートされたサーバーは Claude Desktop と同じ名前を持ちます
  • 同じ名前のサーバーが既に存在する場合、数値サフィックスが付きます(例:server_1

Claude.ai から MCP サーバーを使用する

Claude.ai アカウントで Claude Code にログインしている場合、Claude.ai で追加した MCP サーバーは Claude Code で自動的に利用可能です。
1

Claude.ai で MCP サーバーを設定する

claude.ai/settings/connectors でサーバーを追加します。Team および Enterprise プランでは、管理者のみがサーバーを追加できます。
2

MCP サーバーを認証する

Claude.ai で必要な認証ステップを完了します。
3

Claude Code でサーバーを表示および管理する

Claude Code で、コマンドを使用します。
# Claude Code 内で、Claude.ai のものを含むすべての MCP サーバーを表示
> /mcp
Claude.ai サーバーは Claude.ai から来ていることを示すインジケータ付きでリストに表示されます。

Claude Code を MCP サーバーとして使用する

Claude Code 自体を MCP サーバーとして使用でき、他のアプリケーションが接続できます。
# Claude を stdio MCP サーバーとして起動
claude mcp serve
これを Claude Desktop で使用するには、この設定を claude_desktop_config.json に追加します。
{
  "mcpServers": {
    "claude-code": {
      "type": "stdio",
      "command": "claude",
      "args": ["mcp", "serve"],
      "env": {}
    }
  }
}
実行可能ファイルパスの設定: command フィールドは Claude Code 実行可能ファイルを参照する必要があります。claude コマンドがシステムの PATH にない場合は、実行可能ファイルへの完全なパスを指定する必要があります。完全なパスを見つけるには:
which claude
その後、設定で完全なパスを使用します。
{
  "mcpServers": {
    "claude-code": {
      "type": "stdio",
      "command": "/full/path/to/claude",
      "args": ["mcp", "serve"],
      "env": {}
    }
  }
}
正しい実行可能ファイルパスがないと、spawn claude ENOENT のようなエラーが発生します。
ヒント:
  • サーバーは View、Edit、LS などの Claude のツールへのアクセスを提供します
  • Claude Desktop で、Claude にディレクトリ内のファイルを読み取り、編集などを行うよう依頼してみてください
  • この MCP サーバーは Claude Code のツールのみを MCP クライアントに公開しているため、独自のクライアントは個々のツール呼び出しのユーザー確認を実装する責任があります。

MCP 出力制限と警告

MCP ツールが大きな出力を生成する場合、Claude Code はトークン使用量を管理して会話コンテキストを圧倒しないようにするのに役立ちます。
  • 出力警告閾値: Claude Code は MCP ツール出力が 10,000 トークンを超える場合に警告を表示します
  • 設定可能な制限: MAX_MCP_OUTPUT_TOKENS 環境変数を使用して最大許可 MCP 出力トークンを調整できます
  • デフォルト制限: デフ��ルトの最大値は 25,000 トークンです
大きな出力を生成するツールの制限を増やすには:
# MCP ツール出力の制限を高くする
export MAX_MCP_OUTPUT_TOKENS=50000
claude
これは特に以下を行う MCP サーバーで作業する場合に便利です。
  • 大規模なデータセットまたはデータベースをクエリ
  • 詳細なレポートまたはドキュメントを生成
  • 広範なログファイルまたはデバッグ情報を処理
特定の MCP サーバーで出力警告が頻繁に発生する場合は、制限を増やすか、サーバーをページネーションまたはフィルタリング応答するように設定することを検討してください。

MCP リソースを使用する

MCP サーバーはファイルを参照する方法と同様に、@ メンションを使用して参照できるリソースを公開できます。

MCP リソースを参照する

1

利用可能なリソースをリストする

プロンプトで @ を入力して、接続されたすべての MCP サーバーから利用可能なリソースを表示します。リソースはオートコンプリートメニューのファイルと一緒に表示されます。
2

特定のリソースを参照する

@server:protocol://resource/path の形式を使用してリソースを参照します。
> @github:issue://123 を分析して修正を提案してください
> @docs:file://api/authentication の API ドキュメントをレビューしてください
3

複数のリソース参照

1 つのプロンプトで複数のリソースを参照できます。
> @postgres:schema://users と @docs:file://database/user-model を比較してください
ヒント:
  • リソースは参照されるとき自動的にフェッチされ、添付ファイルとして含まれます
  • リソースパスは @ メンションオートコンプリートでファジー検索可能です
  • Claude Code はサーバーがサポートしている場合、MCP リソースをリストおよび読み取るツールを自動的に提供します
  • リソースは MCP サーバーが提供するあらゆるタイプのコンテンツ(テキスト、JSON、構造化データなど)を含むことができます

MCP ツール検索でスケーリング

多くの MCP サーバーを設定している場合、ツール定義はコンテキストウィンドウの大部分を消費できます。MCP ツール検索は、すべてをプリロードする代わりに、オンデマンドでツールを動的にロードすることでこれを解決します。

仕組み

Claude Code は MCP ツール説明がコンテキストウィンドウの 10% 以上を消費する場合、ツール検索を自動的に有効にします。このしきい値を調整するか、ツール検索を完全に無効にすることができます。トリガーされると:
  1. MCP ツールは事前にコンテキストにロードされるのではなく、遅延されます
  2. Claude は必要に応じて関連する MCP ツールを検出するために検索ツールを使用します
  3. Claude が実際に必要とするツールのみがコンテキストにロードされます
  4. MCP ツールは引き続き視点から正確に機能します

MCP サーバー作成者向け

MCP サーバーを構築している場合、ツール検索が有効になるとサーバー命令フィールドがより有用になります。サーバー命令は Claude がツールを検索するタイミングを理解するのに役立ちます。これは skills の仕組みに似ています。 明確で説明的なサーバー命令を追加して、以下を説明します。
  • ツールが処理するタスクのカテゴリ
  • Claude がツールを検索するタイミング
  • サーバーの主要な機能

ツール検索を設定する

ツール検索はデフォルトで自動モードで実行されます。つまり、MCP ツール定義がコンテキストしきい値を超える場合にのみアクティブになります。ツールが少ない場合は、ツール検索なしで通常にロードされます。この機能には tool_reference ブロックをサポートするモデルが必要です。Sonnet 4 以降または Opus 4 以降。Haiku モデルはツール検索をサポートしていません。 ENABLE_TOOL_SEARCH 環境変数でツール検索動作を制御します。
動作
autoMCP ツールがコンテキストの 10% を超える場合にアクティブ化(デフォルト)
auto:<N>カスタムしきい値でアクティブ化。<N> はパーセンテージ(例:5% の場合は auto:5
true常に有効
false無効。すべての MCP ツールが事前にロード
# カスタム 5% しきい値を使用
ENABLE_TOOL_SEARCH=auto:5 claude

# ツール検索を完全に無効化
ENABLE_TOOL_SEARCH=false claude
または settings.json env フィールドで値を設定します。 disallowedTools 設定を使用して MCPSearch ツールを特に無効にすることもできます。
{
  "permissions": {
    "deny": ["MCPSearch"]
  }
}

MCP プロンプトをコマンドとして使用する

MCP サーバーは Claude Code でコマンドとして利用可能になるプロンプトを公開できます。

MCP プロンプトを実行する

1

利用可能なプロンプトを検出する

/ を入力してすべての利用可能なコマンドを表示します。MCP サーバーからのコマンドを含みます。MCP プロンプトは /mcp__servername__promptname の形式で表示されます。
2

引数なしでプロンプトを実行する

> /mcp__github__list_prs
3

引数を使用してプロンプトを実行する

多くのプロンプトは引数を受け入れます。コマンドの後にスペース区切りで渡します。
> /mcp__github__pr_review 456
> /mcp__jira__create_issue "ログインフローのバグ" high
ヒント:
  • MCP プロンプトは接続されたサーバーから動的に検出されます
  • 引数はプロンプトの定義されたパラメータに基づいて解析されます
  • プロンプト結果は会話に直接注入されます
  • サーバーとプロンプト名は正規化されます(スペースはアンダースコアになります)

管理 MCP 設定

MCP サーバーの集中管理が必要な組織の場合、Claude Code は 2 つの設定オプションをサポートしています。
  1. managed-mcp.json による排他的制御: ユーザーが変更または拡張できない固定の MCP サーバーセットをデプロイ
  2. 許可リスト/拒否リストによるポリシーベースの制御: ユーザーが独自のサーバーを追加できるようにしますが、許可されているサーバーを制限
これらのオプションにより、IT 管理者は以下を実行できます。
  • 従業員がアクセスできる MCP サーバーを制御: 組織全体で承認された MCP サーバーの標準セットをデプロイ
  • 不正な MCP サーバーを防止: ユーザーが未承認の MCP サーバーを追加することを制限
  • MCP を完全に無効化: 必要に応じて MCP 機能を完全に削除

オプション 1: managed-mcp.json による排他的制御

managed-mcp.json ファイルをデプロイすると、すべての MCP サーバーの 排他的制御 が行われます。ユーザーはこのファイルで定義されたもの以外の MCP サーバーを追加、変更、または使用することはできません。これは完全な制御を望む組織にとって最も単純なアプローチです。 システム管理者は設定ファイルをシステム全体のディレクトリにデプロイします。
  • macOS: /Library/Application Support/ClaudeCode/managed-mcp.json
  • Linux および WSL: /etc/claude-code/managed-mcp.json
  • Windows: C:\Program Files\ClaudeCode\managed-mcp.json
これらはシステム全体のパス(~/Library/... のようなユーザーホームディレクトリではない)で、管理者権限が必要です。IT 管理者によってデプロイされるように設計されています。
managed-mcp.json ファイルは標準的な .mcp.json ファイルと同じ形式を使用します。
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "sentry": {
      "type": "http",
      "url": "https://mcp.sentry.dev/mcp"
    },
    "company-internal": {
      "type": "stdio",
      "command": "/usr/local/bin/company-mcp-server",
      "args": ["--config", "/etc/company/mcp-config.json"],
      "env": {
        "COMPANY_API_URL": "https://internal.company.com"
      }
    }
  }
}

オプション 2: 許可リストと拒否リストによるポリシーベースの制御

排他的制御を行う代わりに、管理者はユーザーが独自の MCP サーバーを設定できるようにしながら、許可されているサーバーに制限を適用できます。このアプローチは 管理設定ファイルallowedMcpServersdeniedMcpServers を使用します。
オプションの選択: 固定のサーバーセットをユーザーのカスタマイズなしでデプロイする場合はオプション 1(managed-mcp.json)を使用します。ユーザーが独自のサーバーを追加できるようにしながらポリシー制約内で許可する場合はオプション 2(許可リスト/拒否リスト)を使用します。

制限オプション

許可リストまたは拒否リストの各エントリは 3 つの方法でサーバーを制限できます。
  1. サーバー名による (serverName): サーバーの設定名と一致
  2. コマンドによる (serverCommand): stdio サーバーの起動に使用される正確なコマンドと引数と一致
  3. URL パターンによる (serverUrl): ワイルドカードサポート付きのリモートサーバー URL と一致
重要: 各エントリは serverNameserverCommand、または serverUrl のいずれか 1 つだけを持つ必要があります。

設定例

{
  "allowedMcpServers": [
    // サーバー名で許可
    { "serverName": "github" },
    { "serverName": "sentry" },

    // 正確なコマンドで許可(stdio サーバー用)
    { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem"] },
    { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },

    // URL パターンで許可(リモートサーバー用)
    { "serverUrl": "https://mcp.company.com/*" },
    { "serverUrl": "https://*.internal.corp/*" }
  ],
  "deniedMcpServers": [
    // サーバー名でブロック
    { "serverName": "dangerous-server" },

    // 正確なコマンドでブロック(stdio サーバー用)
    { "serverCommand": ["npx", "-y", "unapproved-package"] },

    // URL パターンでブロック(リモートサーバー用)
    { "serverUrl": "https://*.untrusted.com/*" }
  ]
}

コマンドベースの制限の仕組み

正確な一致:
  • コマンド配列は 正確に 一致する必要があります。コマンドと正しい順序のすべての引数
  • 例:["npx", "-y", "server"]["npx", "server"] または ["npx", "-y", "server", "--flag"] と一致しません
Stdio サーバーの動作:
  • 許可リストに 任意の serverCommand エントリが含まれている場合、stdio サーバーはそれらのいずれかと一致する 必要があります
  • Stdio サーバーはコマンド制限が存在する場合、名前だけでは渡すことはできません
  • これにより、管理者はどのコマンドが実行を許可されているかを強制できます
非 stdio サーバーの動作:
  • リモートサーバー(HTTP、SSE、WebSocket)は許可リストに serverUrl エントリが存在する場合、URL ベースのマッチングを使用します
  • URL エントリが存在しない場合、リモートサーバーは名前ベースのマッチングにフォールバックします
  • コマンド制限はリモートサーバーに適用されません

URL ベースの制限の仕組み

URL パターンは * を使用してワイルドカードをサポートし、文字の任意のシーケンスと一致します。これは特定のドメインまたはサブドメイン全体を許可するのに便利です。 ワイルドカードの例:
  • https://mcp.company.com/* - 特定のドメイン上のすべてのパスを許可
  • https://*.example.com/* - example.com の任意のサブドメインを許可
  • http://localhost:*/* - localhost 上の任意のポートを許可
リモートサーバーの動作:
  • 許可リストに 任意の serverUrl エントリが含まれている場合、リモートサーバーはそれらの URL パターンのいずれかと一致する 必要があります
  • リモートサーバーは URL 制限が存在する場合、名前だけでは渡すことはできません
  • これにより、管理者はどのリモートエンドポイントが許可されているかを強制できます
{
  "allowedMcpServers": [
    { "serverUrl": "https://mcp.company.com/*" },
    { "serverUrl": "https://*.internal.corp/*" }
  ]
}
結果:
  • https://mcp.company.com/api の HTTP サーバー: ✅ 許可(URL パターンと一致)
  • https://api.internal.corp/mcp の HTTP サーバー: ✅ 許可(ワイルドカードサブドメインと一致)
  • https://external.com/mcp の HTTP サーバー: ❌ ブロック(URL パターンと一致しない)
  • 任意のコマンドの Stdio サーバー: ❌ ブロック(一致する名前またはコマンドエントリなし)
{
  "allowedMcpServers": [
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
結果:
  • ["npx", "-y", "approved-package"] の Stdio サーバー: ✅ 許可(コマンドと一致)
  • ["node", "server.js"] の Stdio サーバー: ❌ ブロック(コマンドと一致しない)
  • 「my-api」という名前の HTTP サーバー: ❌ ブロック(一致する名前エントリなし)
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
結果:
  • ["npx", "-y", "approved-package"] の「local-tool」という名前の Stdio サーバー: ✅ 許可(コマンドと一致)
  • ["node", "server.js"] の「local-tool」という名前の Stdio サーバー: ❌ ブロック(コマンドエントリが存在しますが一致しない)
  • ["node", "server.js"] の「github」という名前の Stdio サーバー: ❌ ブロック(stdio サーバーはコマンド制限が存在する場合、コマンドと一致する必要があります)
  • 「github」という名前の HTTP サーバー: ✅ 許可(名前と一致)
  • 「other-api」という名前の HTTP サーバー: ❌ ブロック(名前が一致しない)
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverName": "internal-tool" }
  ]
}
結果:
  • 任意のコマンドの「github」という名前の Stdio サーバー: ✅ 許可(コマンド制限なし)
  • 任意のコマンドの「internal-tool」という名前の Stdio サーバー: ✅ 許可(コマンド制限なし)
  • 「github」という名前の HTTP サーバー: ✅ 許可(名前と一致)
  • 「other」という名前のサーバー: ❌ ブロック(名前が一致しない)

許可リストの動作(allowedMcpServers

  • undefined(デフォルト): 制限なし。ユーザーは任意の MCP サーバーを設定できます
  • 空配列 []: 完全なロックダウン。ユーザーは MCP サーバーを設定できません
  • エントリのリスト: ユーザーは名前、コマンド、または URL パターンで一致するサーバーのみを設定できます

拒否リストの動作(deniedMcpServers

  • undefined(デフォルト): サーバーはブロックされません
  • 空配列 []: サーバーはブロックされません
  • エントリのリスト: 指定されたサーバーはすべてのスコープ全体で明示的にブロックされます

重要な注意事項

  • オプション 1 とオプション 2 を組み合わせることができます: managed-mcp.json が存在する場合、排他的制御があり、ユーザーはサーバーを追加できません。許可リスト/拒否リストは管理されたサーバー自体に引き続き適用されます
  • 拒否リストは絶対的な優先順位を持ちます: サーバーが拒否リストエントリ(名前、コマンド、または URL による)と一致する場合、許可リストに含まれていても、ブロックされます
  • 名前ベース、コマンドベース、URL ベースの制限は一緒に機能します。サーバーは名前エントリ、コマンドエントリ、または URL パターンのいずれかと一致する場合に渡されます(拒否リストでブロックされていない限り)
managed-mcp.json を使用する場合: ユーザーは claude mcp add または設定ファイルを通じて MCP サーバーを追加できません。allowedMcpServersdeniedMcpServers 設定は引き続き管理されたサーバーをフィルタリングして、実際にロードされるサーバーを決定します。