Claude Code は、AI ツール統合のためのオープンソース標準である Model Context Protocol (MCP) を通じて、数百の外部ツールとデータソースに接続できます。MCP サーバーは Claude Code にツール、データベース、API へのアクセスを提供します。 別のツール(課題追跡ツールや監視ダッシュボードなど)からチャットにデータをコピーしている場合は、サーバーを接続してください。接続すると、Claude は貼り付けたものから作業する代わりに、そのシステムを直接読み取り、操作できます。Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
MCP でできること
MCP サーバーが接続されている場合、Claude Code に以下のことを依頼できます:- 課題追跡ツールから機能を実装する:「JIRA の課題 ENG-4521 に記載されている機能を追加し、GitHub に PR を作成してください。」
- 監視データを分析する:「Sentry と Statsig をチェックして、ENG-4521 に記載されている機能の使用状況を確認してください。」
- データベースをクエリする:「PostgreSQL データベースに基づいて、ENG-4521 機能を使用した 10 人のランダムなユーザーのメールアドレスを検索してください。」
- デザインを統合する:「Slack に投稿された新しい Figma デザインに基づいて、標準メールテンプレートを更新してください。」
- ワークフローを自動化する:「新機能に関するフィードバックセッションに招待する 10 人のユーザーに Gmail ドラフトを作成してください。」
- 外部イベントに対応する:MCP サーバーは チャネル として機能することもでき、セッションにメッセージをプッシュするため、Claude は離席中に Telegram メッセージ、Discord チャット、または webhook イベントに対応できます。
MCP サーバーを検索してビルドする
Anthropic Directory でレビュー済みのコネクタを参照してください。Directory コネクタは Claude Code と同じ MCP インフラストラクチャを使用しているため、claude mcp add を使用して、そこにリストされているリモートサーバーを追加できます。
独自のサーバーをビルドするには、プロトコルの基礎については MCP サーバーガイド を、認証、テスト、Directory への提出については Claude コネクタビルディングドキュメント を参照してください。
公式の mcp-server-dev プラグイン を使用して、Claude にサーバーをスキャフォルドしてもらうこともできます。
MCP サーバーのインストール
MCP サーバーは、ニーズに応じて 3 つの異なる方法で設定できます:オプション 1:リモート HTTP サーバーを追加する
HTTP サーバーはリモート MCP サーバーに接続するための推奨オプションです。これはクラウドベースのサービスに最も広くサポートされているトランスポートです。.mcp.json、~/.claude.json、または claude mcp add-json で JSON を使用して設定する場合、type フィールドは http のエイリアスとして streamable-http を受け入れます。MCP 仕様ではこのトランスポートに streamable-http という名前を使用しているため、サーバードキュメントからコピーされた設定は変更なしで機能します。
オプション 2:リモート SSE サーバーを追加する
オプション 3:ローカル stdio サーバーを追加する
Stdio サーバーはマシン上でローカルプロセスとして実行されます。システムへの直接アクセスやカスタムスクリプトが必要なツールに最適です。 Claude Code は、生成されたサーバーの環境にCLAUDE_PROJECT_DIR を設定して、プロジェクトルートを指定するため、サーバーは作業ディレクトリに依存することなくプロジェクト相対パスを解決できます。これは hooks が CLAUDE_PROJECT_DIR 変数で受け取るのと同じディレクトリです。サーバープロセス内から読み取ります。例えば、Node では process.env.CLAUDE_PROJECT_DIR、Python では os.environ["CLAUDE_PROJECT_DIR"] です。サーバーは MCP roots/list リクエストを呼び出すこともでき、Claude Code が起動されたディレクトリを返します。
この変数はサーバーの環境に設定され、Claude Code 自体の環境には設定されないため、プロジェクトスコープまたはユーザースコープの .mcp.json command または args で ${VAR} 展開を使用して参照するには、${CLAUDE_PROJECT_DIR:-.} などのデフォルトが必要です。プラグイン提供の MCP 設定は ${CLAUDE_PROJECT_DIR} を直接置換し、デフォルトは必要ありません。
重要:オプションの順序すべてのオプション(
--transport、--env、--scope、--header)はサーバー名の前に来る必要があります。--(ダブルダッシュ)はサーバー名を MCP サーバーに渡されるコマンドと引数から分離します。例:claude mcp add --transport stdio myserver -- npx server→npx serverを実行しますclaude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080→ 環境にKEY=valueを設定してpython server.py --port 8080を実行します
サーバーの管理
設定後、これらのコマンドで MCP サーバーを管理できます:/mcp パネルは、接続されている各サーバーの横にツール数を表示し、ツール機能をアドバタイズしているが、ツールを公開していないサーバーにフラグを立てます。
サーバー名 workspace は内部使用のために予約されています。設定がその名前のサーバーを定義している場合、Claude Code はロード時にそれをスキップし、名前を変更するよう求める警告を表示します。
動的ツール更新
Claude Code は MCPlist_changed 通知をサポートしており、MCP サーバーが切断して再接続することなく、利用可能なツール、プロンプト、リソースを動的に更新できます。MCP サーバーが list_changed 通知を送信すると、Claude Code はそのサーバーから利用可能な機能を自動的に更新します。
自動再接続
HTTP または SSE サーバーがセッション中に切断された場合、Claude Code は指数バックオフで自動的に再接続します:最大 5 回の試行、1 秒の遅延から始まり、毎回 2 倍になります。サーバーは再接続が進行中の間、/mcp では保留中として表示されます。5 回の失敗した試行の後、サーバーは失敗としてマークされ、/mcp から手動で再試行できます。Stdio サーバーはローカルプロセスであり、自動的には再接続されません。
同じバックオフは、HTTP または SSE サーバーが起動時に初期接続に失敗した場合にも適用されます。v2.1.121 以降、Claude Code は 5xx レスポンス、接続拒否、タイムアウトなどの一時的なエラーで初期接続を最大 3 回再試行し、それでも接続できない場合はサーバーを失敗としてマークします。認証エラーと見つからないエラーは、解決するために設定変更が必要なため、再試行されません。
チャネルでメッセージをプッシュする
MCP サーバーはセッションに直接メッセージをプッシュすることもでき、Claude が CI 結果、監視アラート、チャットメッセージなどの外部イベントに対応できます。これを有効にするには、サーバーがclaude/channel 機能を宣言し、起動時に --channels フラグでオプトインします。公式にサポートされているチャネルを使用するには チャネル を参照するか、独自に構築するには チャネルリファレンス を参照してください。
プラグイン提供の MCP サーバー
プラグイン は MCP サーバーをバンドルでき、プラグインが有効になると自動的にツールと統合を提供します。プラグイン MCP サーバーはユーザーが設定したサーバーと同じように機能します。 プラグイン MCP サーバーの仕組み:- プラグインはプラグインルートの
.mcp.jsonまたはplugin.json内でインラインで MCP サーバーを定義します - プラグインが有効になると、その MCP サーバーが自動的に起動します
- プラグイン MCP ツールは手動で設定された MCP ツールと一緒に表示されます
- プラグインサーバーはプラグインのインストールを通じて管理されます(
/mcpコマンドではありません)
.mcp.json 内:
plugin.json 内でインライン:
- 自動ライフサイクル:セッション起動時に、有効なプラグインのサーバーが自動的に接続されます。セッション中にプラグインを有効または無効にする場合は、
/reload-pluginsを実行して MCP サーバーを接続または切断してください - 環境変数:バンドルされたプラグインファイルに
${CLAUDE_PLUGIN_ROOT}を使用し、プラグイン更新を通じて保持される 永続的な状態 に${CLAUDE_PLUGIN_DATA}を使用し、安定したプロジェクトルートに${CLAUDE_PROJECT_DIR}を使用します - ユーザー環境アクセス:手動で設定されたサーバーと同じ環境変数へのアクセス
- 複数のトランスポートタイプ:stdio、SSE、HTTP トランスポートをサポート(トランスポートサポートはサーバーによって異なる場合があります)
- バンドル配布:ツールとサーバーが一緒にパッケージ化されます
- 自動セットアップ:手動の MCP 設定は不要です
- チーム一貫性:プラグインがインストールされると、すべてのユーザーが同じツールを取得します
MCP インストールスコープ
MCP サーバーは 3 つのスコープで設定できます。選択するスコープは、サーバーがロードされるプロジェクトと、設定がチームと共有されるかどうかを制御します。管理者は、マネージド設定を通じてエンタープライズレベルでサーバーをデプロイすることもできます。ローカルスコープ
ローカルスコープはデフォルトです。ローカルスコープのサーバーは、追加したプロジェクトでのみロードされ、あなたにプライベートなままです。Claude Code は~/.claude.json のそのプロジェクトのパスの下に保存するため、同じサーバーは他のプロジェクトに表示されません。個人開発サーバー、実験的な設定、またはバージョン管理に含めたくない認証情報を持つサーバーにはローカルスコープを使用してください。
MCP サーバーの「ローカルスコープ」という用語は、一般的なローカル設定とは異なります。MCP ローカルスコープのサーバーは
~/.claude.json(ホームディレクトリ)に保存されますが、一般的なローカル設定は .claude/settings.local.json(プロジェクトディレクトリ内)を使用します。設定ファイルの場所の詳細については、設定を参照してください。~/.claude.json に書き込みます。以下の例は、/path/to/your/project から実行した場合の結果を示しています:
プロジェクトスコープ
プロジェクトスコープのサーバーは、プロジェクトのルートディレクトリの.mcp.json ファイルに設定を保存することで、チーム間のコラボレーションを可能にします。このファイルはバージョン管理にチェックインするように設計されており、すべてのチームメンバーが同じ MCP ツールとサービスにアクセスできることを保証します。プロジェクトスコープのサーバーを追加すると、Claude Code は自動的にこのファイルを作成または更新して、適切な設定構造を使用します。
.mcp.json ファイルは標準化された形式に従います:
.mcp.json ファイルからプロジェクトスコープのサーバーを使用する前に承認を求めます。これらの承認選択をリセットする必要がある場合は、claude mcp reset-project-choices コマンドを使用してください。
ユーザースコープ
ユーザースコープのサーバーは~/.claude.json に保存され、クロスプロジェクトのアクセス可能性を提供し、マシン上のすべてのプロジェクト全体で利用可能になりながら、ユーザーアカウントにプライベートなままです。このスコープは、個人的なユーティリティサーバー、開発ツール、または異なるプロジェクト全体で頻繁に使用するサービスに適しています。
スコープの階層と優先順位
同じサーバーが複数の場所で定義されている場合、Claude Code はそれに 1 回接続し、最も優先度の高いソースからの定義を使用します:- ローカルスコープ
- プロジェクトスコープ
- ユーザースコープ
- プラグイン提供サーバー
- claude.ai コネクタ
.mcp.json での環境変数の展開
Claude Code は .mcp.json ファイルの環境変数の展開をサポートしており、チームが設定を共有しながら、マシン固有のパスと API キーなどの機密値の柔軟性を維持できます。
サポートされている構文:
${VAR}- 環境変数VARの値に展開されます${VAR:-default}-VARが設定されている場合はVARに展開され、そうでない場合はデフォルトを使用します
command- サーバー実行可能ファイルのパスargs- コマンドライン引数env- サーバーに渡される環境変数url- HTTP サーバータイプの場合headers- HTTP サーバー認証の場合
実践的な例
例:Sentry でエラーを監視する
例:コードレビューのために GitHub に接続する
GitHub のリモート MCP サーバーは、ヘッダーとして渡される GitHub 個人アクセストークンで認証します。取得するには、GitHub トークン設定を開き、Claude が操作したいリポジトリへのアクセス権を持つ新しいきめ細かいトークンを生成してから、サーバーを追加します:例:PostgreSQL データベースをクエリする
リモート MCP サーバーで認証する
多くのクラウドベースの MCP サーバーは認証が必要です。Claude Code は安全な接続のために OAuth 2.0 をサポートしています。 Claude Code は、サーバーが401 Unauthorized または 403 Forbidden で応答するときに、リモートサーバーが認証を必要とするとマークします。どちらのステータスコードでも、サーバーは /mcp でフラグが立てられ、OAuth フローを完了できます。認可サーバーを指す WWW-Authenticate ヘッダーを返すカスタムサーバーは、他のリモートサーバーと同じ自動検出を取得します。
固定 OAuth コールバックポートを使用する
一部の MCP サーバーは、事前に登録された特定のリダイレクト URI が必要です。デフォルトでは、Claude Code は OAuth コールバック用にランダムに利用可能なポートを選択します。--callback-port を使用してポートを固定し、http://localhost:PORT/callback の形式の事前登録されたリダイレクト URI と一致させます。
--callback-port を単独で使用できます(動的クライアント登録を使用)、または --client-id と一緒に使用できます(事前設定された認証情報を使用)。
事前設定された OAuth 認証情報を使用する
一部の MCP サーバーは、Dynamic Client Registration を通じた自動 OAuth セットアップをサポートしていません。「Incompatible auth server: does not support dynamic client registration」のようなエラーが表示される場合、サーバーは事前設定された認証情報が必要です。Claude Code は Client ID Metadata Document(CIMD)を使用するサーバーもサポートしており、これらを自動的に検出します。自動検出に失敗した場合は、まずサーバーの開発者ポータルを通じて OAuth アプリを登録し、サーバーを追加するときに認証情報を提供してください。サーバーで OAuth アプリを登録する
サーバーの開発者ポータルを通じてアプリを作成し、クライアント ID とクライアントシークレットをメモしてください。多くのサーバーはリダイレクト URI も必要とします。その場合は、ポートを選択し、
http://localhost:PORT/callback の形式でリダイレクト URI を登録してください。次のステップで --callback-port と同じポートを使用してください。認証情報を使用してサーバーを追加する
次のいずれかの方法を選択してください。
--callback-port に使用されるポートは、利用可能な任意のポートにすることができます。前のステップで登録したリダイレクト URI と一致する必要があります。- claude mcp add
- claude mcp add-json
- claude mcp add-json(コールバックポートのみ)
- CI / env var
--client-id を使用してアプリのクライアント ID を渡します。--client-secret フラグはマスクされた入力でシークレットを求めます:OAuth メタデータ検出をオーバーライドする
Claude Code を特定の OAuth 認可サーバーメタデータ URL に指定して、デフォルトの検出チェーンをバイパスします。MCP サーバーの標準エンドポイントがエラーになる場合、または内部プロキシを通じて検出をルーティングしたい場合に設定します。デフォルトでは、Claude Code は最初に RFC 9728 保護リソースメタデータを/.well-known/oauth-protected-resource でチェックし、次に RFC 8414 認可サーバーメタデータを /.well-known/oauth-authorization-server でフォールバックします。
.mcp.json のサーバー設定の oauth オブジェクトに authServerMetadataUrl を設定します:
https:// を使用する必要があります。authServerMetadataUrl には Claude Code v2.1.64 以降が必要です。メタデータ URL の scopes_supported は、アップストリームサーバーがアドバタイズするスコープをオーバーライドします。
OAuth スコープを制限する
oauth.scopes を設定して、認可フロー中に Claude Code がリクエストするスコープをピン留めします。これは、アップストリーム認可サーバーがより多くのスコープをアドバタイズする場合に、MCP サーバーをセキュリティチームが承認したサブセットに制限するサポートされた方法です。値は RFC 6749 §3.3 の scope パラメータ形式と一致する単一のスペース区切り文字列です。
oauth.scopes は authServerMetadataUrl と /.well-known でサーバーが検出するスコープの両方に優先します。MCP サーバーがリクエストするスコープセットを決定するようにするには、設定を解除したままにしてください。
認可サーバーが scopes_supported で offline_access をアドバタイズする場合、Claude Code はそれをピン留めされたスコープに追加して、新しいブラウザサインインなしでアクセストークンを更新できるようにします。
サーバーが後で insufficient_scope の 403 を返す場合、Claude Code は同じピン留めされたスコープで再認証します。必要なツールが pin の外側のスコープを必要とする場合は、oauth.scopes を拡張してください。
カスタム認証用の動的ヘッダーを使用する
MCP サーバーが OAuth 以外の認証スキーム(Kerberos、短期トークン、内部 SSO など)を使用する場合、headersHelper を使用して接続時にリクエストヘッダーを生成します。Claude Code はコマンドを実行し、その出力を接続ヘッダーにマージします。
- コマンドは文字列キーと値のペアの JSON オブジェクトを stdout に書き込む必要があります
- コマンドは 10 秒のタイムアウト付きのシェルで実行されます
- 動的ヘッダーは同じ名前の静的
headersをオーバーライドします
| 変数 | 値 |
|---|---|
CLAUDE_CODE_MCP_SERVER_NAME | MCP サーバーの名前 |
CLAUDE_CODE_MCP_SERVER_URL | MCP サーバーの URL |
headersHelper は任意のシェルコマンドを実行します。プロジェクトまたはローカルスコープで定義されている場合、ワークスペース信頼ダイアログを受け入れた後にのみ実行されます。JSON 設定から MCP サーバーを追加する
MCP サーバーの JSON 設定がある場合は、直接追加できます:Claude Desktop から MCP サーバーをインポートする
Claude Desktop で MCP サーバーを既に設定している場合は、それらをインポートできます:Claude.ai から MCP サーバーを使用する
Claude.ai アカウントで Claude Code にログインしている場合、Claude.ai で追加した MCP サーバーは Claude Code で自動的に利用可能です:Claude.ai で MCP サーバーを設定する
claude.ai/customize/connectors でサーバーを追加します。Team および Enterprise プランでは、管理者のみがサーバーを追加できます。
/mcp はコネクタを非表示としてリストし、代わりにコネクタを使用する場合は重複を削除する方法を表示します。
Claude Code で claude.ai MCP サーバーを無効にするには、ENABLE_CLAUDEAI_MCP_SERVERS 環境変数を false に設定します:
Claude Code を MCP サーバーとして使用する
Claude Code 自体を MCP サーバーとして使用でき、他のアプリケーションが接続できます:MCP 出力制限と警告
MCP ツールが大きな出力を生成する場合、Claude Code はトークン使用量を管理して、会話コンテキストが圧倒されるのを防ぐのに役立ちます:- 出力警告閾値:Claude Code は MCP ツール出力が 10,000 トークンを超えると警告を表示します
- 設定可能な制限:
MAX_MCP_OUTPUT_TOKENS環境変数を使用して、許可される最大 MCP 出力トークンを調整できます - デフォルト制限:デフォルトの最大値は 25,000 トークンです
- スコープ:環境変数は独自の制限を宣言しないツールに適用されます。
anthropic/maxResultSizeCharsを設定するツールは、MAX_MCP_OUTPUT_TOKENSが何に設定されているかに関わらず、テキストコンテンツにその値を使用します。画像データを返すツールは引き続きMAX_MCP_OUTPUT_TOKENSの対象です
- 大規模なデータセットまたはデータベースをクエリする
- 詳細なレポートまたはドキュメントを生成する
- 広範なログファイルまたはデバッグ情報を処理する
特定のツールの制限を引き上げる
MCP サーバーを構築している場合、ツールのtools/list 応答エントリで _meta["anthropic/maxResultSizeChars"] を設定することで、個々のツールがデフォルトの永続化ディスク閾値より大きい結果を返すことを許可できます。Claude Code はそのツールの閾値を注釈付き値に引き上げます。最大 500,000 文字のハードシーリングまで。
これは、データベーススキーマまたは完全なファイルツリーなど、本質的に大きいが必要な出力を返すツールに役立ちます。注釈がない場合、デフォルト閾値を超える結果はディスクに永続化され、会話内のファイル参照に置き換えられます。
MAX_MCP_OUTPUT_TOKENS とは独立して適用されるため、ユーザーは注釈を宣言するツールのために環境変数を引き上げる必要はありません。画像データを返すツールは引き続きトークン制限の対象です。
MCP 応答要求に対応する
MCP サーバーはタスク中に構造化された入力をあなたに要求するための応答要求を使用できます。サーバーが独自に取得できない情報が必要な場合、Claude Code は対話的なダイアログを表示し、あなたの応答をサーバーに返します。設定は不要です。応答要求ダイアログはサーバーが要求したときに自動的に表示されます。 サーバーは 2 つの方法で入力を要求できます:- フォームモード:Claude Code はサーバーで定義されたフォームフィールド(例:ユーザー名とパスワードプロンプト)を含むダイアログを表示します。フィールドに入力して送信します。
- URL モード:Claude Code はブラウザ URL を開いて認証または承認を行います。ブラウザでフローを完了し、CLI で確認します。
Elicitation フックを使用してください。
MCP サーバーを構築していて応答要求を使用する場合は、MCP 応答要求仕様を参照してプロトコルの詳細とスキーマの例を確認してください。
MCP リソースを使用する
MCP サーバーはリソースを公開でき、ファイルを参照する方法と同様に @ メンションを使用して参照できます。MCP リソースを参照する
利用可能なリソースをリストする
プロンプトで
@ を入力して、接続されているすべての MCP サーバーから利用可能なリソースを表示します。リソースはオートコンプリートメニューのファイルと一緒に表示されます。MCP ツール検索でスケーリングする
ツール検索は MCP コンテキスト使用量を低く保つことで、ツール定義をオンデマンドで遅延させます。セッション開始時にはツール名のみがロードされるため、より多くの MCP サーバーを追加してもコンテキストウィンドウへの影響は最小限です。仕組み
ツール検索はデフォルトで有効です。MCP ツールは事前にコンテキストにロードされるのではなく、遅延されます。Claude はタスクが必要な場合、検索ツールを使用して関連する MCP ツールを検出します。Claude が実際に使用するツールのみがコンテキストに入ります。あなたの視点からは、MCP ツールは以前と同じように機能します。 しきい値ベースのロードを優先する場合は、ENABLE_TOOL_SEARCH=auto を設定して、コンテキストウィンドウの 10% 以内に収まる場合はスキーマを事前にロードし、オーバーフローのみを遅延させます。すべてのオプションについては、ツール検索の設定を参照してください。
MCP サーバー作成者向け
MCP サーバーを構築している場合、ツール検索が有効になっているとサーバー命令フィールドがより有用になります。サーバー命令は、スキルの仕組みと同様に、Claude がいつサーバーのツールを検索するかを理解するのに役立ちます。 明確で説明的なサーバー命令を追加して、以下を説明します:- ツールが処理するタスクのカテゴリ
- Claude がツールを検索すべき場合
- サーバーが提供する主な機能
ツール検索を設定する
ツール検索はデフォルトで有効です:MCP ツールは遅延され、オンデマンドで検出されます。Claude Code は Vertex AI ではデフォルトで無効にします。ANTHROPIC_BASE_URL が非ファーストパーティホストを指している場合も無効です。ほとんどのプロキシは tool_reference ブロックを転送しないためです。ENABLE_TOOL_SEARCH を明示的に設定して、いずれかのフォールバックをオーバーライドしてください。
ツール検索には、tool_reference ブロックをサポートするモデルが必要です:Sonnet 4 以降、または Opus 4 以降。Haiku モデルはツール検索をサポートしていません。Vertex AI では、Claude Sonnet 4.5 以降および Claude Opus 4.5 以降でツール検索がサポートされています。
ENABLE_TOOL_SEARCH 環境変数でツール検索の動作を制御します:
| 値 | 動作 |
|---|---|
| (未設定) | すべての MCP ツールが遅延され、オンデマンドでロードされます。Vertex AI または ANTHROPIC_BASE_URL が非ファーストパーティホストの場合は事前ロードにフォールバック |
true | すべての MCP ツールが遅延。Claude Code は Vertex AI およびプロキシ経由でもベータヘッダーを送信します。Vertex AI モデルが Sonnet 4.5 または Opus 4.5 より前の場合、または tool_reference ブロックをサポートしないプロキシの場合、リクエストは失敗します |
auto | しきい値モード:ツールがコンテキストウィンドウの 10% 以内に収まる場合は事前ロード、そうでない場合は遅延 |
auto:N | カスタムパーセンテージ付きしきい値モード。N は 0-100(例:5% の場合は auto:5) |
false | すべての MCP ツールが事前ロード、遅延なし |
env フィールドで値を設定します。
ToolSearch ツールを特別に無効にすることもできます:
サーバーを遅延から除外する
サーバーのツールが検索ステップなしで常に Claude に表示される場合は、そのサーバーの設定でalwaysLoad を true に設定します。そのサーバーのすべてのツールは、ENABLE_TOOL_SEARCH 設定に関係なく、セッション開始時にコンテキストにロードされます。これは、Claude がすべてのターンで必要とする少数のツールに使用してください。各事前ロードツールはコンテキストを消費するため、会話に利用可能なコンテキストが減少します。
次の .mcp.json エントリは、1 つの HTTP サーバーを除外し、他のサーバーは遅延したままにします:
alwaysLoad フィールドはすべてのサーバータイプで利用可能で、Claude Code v2.1.121 以降が必要です。MCP サーバーは、ツールの _meta オブジェクトに "anthropic/alwaysLoad": true を含めることで、個別のツールを常にロードとしてマークすることもできます。これはそのツールのみに同じ効果があります。
alwaysLoad: true を設定すると、サーバーが接続されるまでスタートアップもブロックされます。これは標準的な 5 秒の接続タイムアウトでキャップされます。これは MCP_CONNECTION_NONBLOCKING=1 が設定されている場合でも適用されます。ツールは最初のプロンプトが構築されるときに存在する必要があるためです。他のサーバーは、ノンブロッキングが有効な場合、バックグラウンドで接続し続けます。
MCP プロンプトをコマンドとして使用する
MCP サーバーはプロンプトを公開でき、Claude Code でコマンドとして利用可能になります。MCP プロンプトを実行する
利用可能なプロンプトを検出する
/ を入力して、MCP サーバーからのプロンプトを含むすべての利用可能なコマンドを表示します。MCP プロンプトは /mcp__servername__promptname の形式で表示されます。管理対象 MCP 設定
MCP サーバーの集中管理が必要な組織の場合、Claude Code は 2 つの設定オプションをサポートしています:managed-mcp.jsonによる排他的制御:ユーザーが変更または拡張できない固定の MCP サーバーセットをデプロイします- 許可リスト/拒否リストによるポリシーベースの制御:ユーザーが独自のサーバーを追加できるようにしますが、許可されているサーバーを制限します
- 従業員がアクセスできる 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 ファイルと同じ形式を使用します:
オプション 2:許可リストと拒否リストによるポリシーベースの制御
排他的な制御を行う代わりに、管理者はユーザーが独自の MCP サーバーを設定できるようにしながら、許可されているサーバーに制限を適用できます。このアプローチは、管理対象設定ファイルのallowedMcpServers と deniedMcpServers を使用します。
オプションの選択:固定のサーバーセットをデプロイしてユーザーのカスタマイズを行わない場合はオプション 1(
managed-mcp.json)を使用します。ユーザーがポリシー制約内で独自のサーバーを追加できるようにする場合はオプション 2(許可リスト/拒否リスト)を使用します。制限オプション
許可リストまたは拒否リストの各エントリは、3 つの方法でサーバーを制限できます:- サーバー名による (
serverName):設定されたサーバーの名前と一致します - コマンドによる (
serverCommand):stdio サーバーを起動するために使用される正確なコマンドと引数と一致します - URL パターンによる (
serverUrl):ワイルドカードサポート付きのリモートサーバー URL と一致します
serverName、serverCommand、または serverUrl のいずれか 1 つだけを持つ必要があります。
設定例
コマンドベースの制限の仕組み
完全一致:- コマンド配列は完全に一致する必要があります。コマンドと正しい順序のすべての引数
- 例:
["npx", "-y", "server"]は["npx", "server"]または["npx", "-y", "server", "--flag"]と一致しません
- 許可リストに任意の
serverCommandエントリが含まれている場合、stdio サーバーはそれらのコマンドの 1 つと一致する必要があります - Stdio サーバーはコマンド制限が存在する場合、名前だけでは通過できません
- これにより、管理者は実行が許可されているコマンドを強制できます
- リモートサーバー(HTTP、SSE、WebSocket)は、許可リストに
serverUrlエントリが存在する場合、URL ベースのマッチングを使用します - URL エントリが存在しない場合、リモートサーバーは名前ベースのマッチングにフォールバックします
- コマンド制限はリモートサーバーには適用されません
URL ベースの制限の仕組み
URL パターンは* を使用してワイルドカードをサポートし、任意の文字シーケンスと一致します。これはドメイン全体またはサブドメイン全体を許可するのに役立ちます。
ワイルドカード例:
https://mcp.company.com/*- 特定のドメイン上のすべてのパスを許可https://*.example.com/*- example.com の任意のサブドメインを許可http://localhost:*/*- localhost 上の任意のポートを許可
*://Mcp.Example.com/* のようなパターンは https://mcp.example.com/api と一致し、https://mcp.example.com. は https://mcp.example.com と同じように扱われます。スキームとパスは大文字と小文字を区別します。
リモートサーバーの動作:
- 許可リストに任意の
serverUrlエントリが含まれている場合、リモートサーバーはそれらの URL パターンの 1 つと一致する必要があります - リモートサーバーは URL 制限が存在する場合、名前だけでは通過できません
- これにより、管理者は許可されているリモートエンドポイントを強制できます
例:URL のみの許可リスト
例:URL のみの許可リスト
https://mcp.company.com/apiの HTTP サーバー:✅ 許可(URL パターンと一致)https://api.internal.corp/mcpの HTTP サーバー:✅ 許可(ワイルドカードサブドメインと一致)https://external.com/mcpの HTTP サーバー:❌ ブロック(URL パターンと一致しない)- 任意のコマンドの Stdio サーバー:❌ ブロック(一致する名前またはコマンドエントリがない)
例:コマンドのみの許可リスト
例:コマンドのみの許可リスト
["npx", "-y", "approved-package"]の Stdio サーバー:✅ 許可(コマンドと一致)["node", "server.js"]の Stdio サーバー:❌ ブロック(コマンドと一致しない)- 「my-api」という名前の HTTP サーバー:❌ ブロック(一致する名前エントリがない)
例:混合名とコマンド許可リスト
例:混合名とコマンド許可リスト
- 「local-tool」という名前で
["npx", "-y", "approved-package"]の Stdio サーバー:✅ 許可(コマンドと一致) - 「local-tool」という名前で
["node", "server.js"]の Stdio サーバー:❌ ブロック(コマンドエントリが存在しますが一致しない) - 「github」という名前で
["node", "server.js"]の Stdio サーバー:❌ ブロック(stdio サーバーはコマンドエントリが存在する場合、コマンドと一致する必要があります) - 「github」という名前の HTTP サーバー:✅ 許可(名前と一致)
- 「other-api」という名前の HTTP サーバー:❌ ブロック(名前と一致しない)
例:名前のみの許可リスト
例:名前のみの許可リスト
- 任意のコマンドで「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 サーバーを追加できません。allowedMcpServers と deniedMcpServers の設定は、実際にロードされる管理対象サーバーをフィルタリングするために引き続き適用されます。