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 サーバーをいくつか紹介します。特定の統合が必要ですか? GitHub で数百以上の MCP サーバーを検索するか、MCP SDK を使用して独自に構築してください。
MCP サーバーのインストール
MCP サーバーは、ニーズに応じて 3 つの異なる方法で設定できます。オプション 1: リモート HTTP サーバーを追加する
HTTP サーバーはリモート MCP サーバーに接続するための推奨オプションです。これはクラウドベースのサービスに対して最も広くサポートされているトランスポートです。オプション 2: リモート SSE サーバーを追加する
オプション 3: ローカル stdio サーバーを追加する
Stdio サーバーはマシン上のローカルプロセスとして実行されます。システムへの直接アクセスが必要なツールやカスタムスクリプトに最適です。重要: オプションの順序すべてのオプション(
--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 サーバーを管理できます。動的ツール更新
Claude Code は MCPlist_changed 通知をサポートしており、MCP サーバーが接続を切断して再接続することなく、利用可能なツール、プロ���プト、リソースを動的に更新できます。MCP サーバーが list_changed 通知を送信すると、Claude Code はそのサーバーから利用可能な機能を自動的に更新します。
プラグイン提供の MCP サーバー
プラグインは MCP サーバーをバンドルでき、プラグインが有効になると自動的にツールと統合を提供します。プラグイン MCP サーバーはユーザーが設定したサーバーと同じように機能します。 プラグイン MCP サーバーの仕組み:- プラグインはプラグインルートの
.mcp.jsonまたはplugin.json内でインラインで MCP サーバーを定義します - プラグインが有効になると、その MCP サーバーが自動的に起動します
- プラグイン MCP ツールは手動で設定された MCP ツールと一緒に表示されます
- プラグインサーバーはプラグインのインストール(
/mcpコマンドではない)を通じて管理されます
.mcp.json 内:
plugin.json 内でインライン:
- 自動ライフサイク��: プラグインが有効になるとサーバーが起動しますが、MCP サーバーの変更(有効化または無効化)を適用するには Claude Code を再起動する必要があります
- 環境変数: プラグイン相対パスに
${CLAUDE_PLUGIN_ROOT}を使用します - ユーザー環境アクセス: 手動で設定されたサーバーと同じ環境変数へのアクセス
- 複数のトランスポートタイプ: stdio、SSE、HTTP トランスポートをサポート(トランスポートサポートはサーバーによって異なる場合があります)
- バンドル配布: ツールとサーバーが一緒にパッケージ化
- 自動セットアップ: 手動の MCP 設定は不要
- チーム一貫性: プラグインがインストールされると全員が同じツールを取得
MCP インストールスコープ
MCP サーバーは 3 つの異なるスコープレベルで設定でき、それぞれサーバーのアクセシビリティと共有を管理するための異なる目的があります。これらのスコープを理解することで、特定のニーズに合わせてサーバーを設定する最適な方法を決定するのに役立ちます。ローカルスコープ
ローカルスコープのサーバーはデフォルトの設定レベルを表し、プロジェクトのパスの下の~/.claude.json に保存されます。これらのサーバーはプライベートなままで、現在のプロジェクトディレクトリ内で作業する場合にのみアクセス可能です。このスコープは個人開発サーバー、実験的な設定、または共有すべきでない機密認証情報を含むサーバーに最適です。
MCP サーバーの「ローカルスコープ」という用語は一般的なローカル設定とは異なります。MCP ローカルスコープのサーバーは
~/.claude.json(ホームディレクトリ)に保存されますが、一般的なローカル設定は .claude/settings.local.json(プロジェクトディレクトリ内)を使用します。設定ファイル��場所の詳細については、設定を参照してください。プロジェクトスコープ
プロジェクトスコープのサーバーは、プロジェクトのルートディレクトリの.mcp.json ファイルに設定を保存することでチーム協力を可能にします。このファイルはバージョン���理にチェックインするように設計されており、すべてのチームメンバーが同じ MCP ツールとサービスにアクセスできることを保証します。プロジェクトスコープのサーバーを追加すると、Claude Code は自動的にこのファイルを作成または更新して、適切な設定構造を使用します。
.mcp.json ファイルは標準化された形式に従います。
.mcp.json ファイルからプロジェクトスコープのサーバーを使用する前に承認を求めます。これらの承認選択をリセットする必要がある場合は、claude mcp reset-project-choices コマンドを使用します。
ユーザースコープ
ユーザースコープのサーバーは~/.claude.json に保存され、クロスプロジェクトのアクセシビリティを提供し、マシン上のすべてのプロジェクト全体で利用可能になりながら、ユーザーアカウントにプライベートなままです。このスコープは個人ユーティリティサーバー、開発ツール、または異なるプロジェクト全体で頻繁に使用するサービスに適しています。
適切なスコープの選択
以下に基づいてスコープを選択します。- ローカルスコープ: 個人サーバー、実験的な設定、または 1 つのプロジェクトに固有の機密認証情報
- プロジェクトスコープ: チーム共有サーバー、プロジェクト固有のツール、または協力に必要なサービス
- ユーザースコープ: 複数のプロジェクト全体で必要な個人ユーティリティ、開発ツール、または頻繁に使用されるサービス
MCP サーバーはどこに保存されていますか?
- ユーザーおよびローカルスコープ:
~/.claude.json(mcpServersフィールドまたはプロジェクトパスの下) - プロジェクトスコープ: プロジェクトルートの
.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 サーバー認証の場合
実践的な例
例: Sentry でエラーを監視する
例: コードレビューのために GitHub に接続する
例: PostgreSQL データベースをクエリする
リモート MCP サーバーで認証する
多くのクラウドベースの MCP サーバーは認証が必要です。Claude Code は安全な接続のために OAuth 2.0 をサポートしています。事前設定された OAuth 認証情報を使用する
一部の MCP サーバーは自動 OAuth セットアップをサポートしていません。「Incompatible auth server: does not support dynamic client registration」���ようなエラーが表示される場合、サーバーは事前設定された認証情報が必要です。まずサーバーの開発者ポータルを通じて OAuth アプリを登録し、サーバーを追加するときに認証情報を提供します。サーバーで OAuth アプリを登録する
サーバーの開発者ポータルを通じてアプリを作成し、クライアント ID とクライアントシークレットをメモします。多くのサーバーはリダイレクト URI も必要とします。その場合は、ポートを選択し、
http://localhost:PORT/callback の形式でリダイレクト URI を登録します。次のステップで --callback-port と同じポートを使用します。認証情報を使用してサーバーを追加する
次のいずれかの方法を選択します。
--callback-port に使用されるポートは任意の利用可能なポートです。前のステップで登録したリダイレクト URI と一致する必要があります。- claude mcp add
- claude mcp add-json
- CI / env var
--client-id を使用してアプリのクライアント ID を渡します。--client-secret フラグはマスクされた入力でシークレットを求めます。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/settings/connectors でサーバーを追加します。Team および Enterprise プランでは、管理者のみがサーバーを追加できます。
Claude Code を MCP サーバーとして使用する
Claude Code 自体を MCP サーバーとして使用でき、他のアプリケーションが接続できます。MCP 出力制限と警告
MCP ツールが大きな出力を生成する場合、Claude Code はトークン使用量を管理して会話コンテキストを圧倒しないようにするのに役立ちます。- 出力警告閾値: Claude Code は MCP ツール出力が 10,000 トークンを超える場合に警告を表示します
- 設定可能な制限:
MAX_MCP_OUTPUT_TOKENS環境変数を使用して最大許可 MCP 出力トークンを調整できます - デフォルト制限: デフ��ルトの最大値は 25,000 トークンです
- 大規模なデータセットまたはデータベースをクエリ
- 詳細なレポートまたはドキュメントを生成
- 広範なログファイルまたはデバッグ情報を処理
MCP リソースを使用する
MCP サーバーはファイルを参照する方法と同様に、@ メンションを使用して参照できるリソースを公開できます。MCP リソースを参照する
利用可能なリソースをリストする
プロンプトで
@ を入力して、接続されたすべての MCP サーバーから利用可能なリソースを表示します。リソースはオートコンプリートメニューのファイルと一緒に表示されます。MCP ツール検索でスケーリング
多くの MCP サーバーを設定している場合、ツール定義はコンテキストウィンドウの大部分を消費できます。MCP ツール検索は、すべてをプリロードする代わりに、オンデマンドでツールを動的にロードすることでこれを解決します。仕組み
Claude Code は MCP ツール説明がコンテキストウィンドウの 10% 以上を消費する場合、ツール検索を自動的に有効にします。このしきい値を調整するか、ツール検索を完全に無効にすることができます。トリガーされると:- MCP ツールは事前にコンテキストにロードされるのではなく、遅延されます
- Claude は必要に応じて関連する MCP ツールを検出するために検索ツールを使用します
- Claude が実際に必要とするツールのみがコンテキストにロードされます
- MCP ツールは引き続き視点から正確に機能します
MCP サーバー作成者向け
MCP サーバーを構築している場合、ツール検索が有効になるとサーバー命令フィールドがより有用になります。サーバー命令は Claude がツールを検索するタイミングを理解するのに役立ちます。これは skills の仕組みに似ています。 明確で説明的なサーバー命令を追加して、以下を説明します。- ツールが処理するタスクのカテゴリ
- Claude がツールを検索するタイミング
- サーバーの主要な機能
ツール検索を設定する
ツール検索はデフォルトで自動モードで実行されます。つまり、MCP ツール定義がコンテキストしきい値を超える場合にのみアクティブになります。ツールが少ない場合は、ツール検索なしで通常にロードされます。この機能にはtool_reference ブロックをサポートするモデルが必要です。Sonnet 4 以降または Opus 4 以降。Haiku モデルはツール検索をサポートしていません。
ENABLE_TOOL_SEARCH 環境変数でツール検索動作を制御します。
| 値 | 動作 |
|---|---|
auto | MCP ツールがコンテキストの 10% を超える場合にアクティブ化(デフォルト) |
auto:<N> | カスタムしきい値でアクティブ化。<N> はパーセンテージ(例:5% の場合は auto:5) |
true | 常に有効 |
false | 無効。すべての MCP ツールが事前にロード |
env フィールドで値を設定します。
disallowedTools 設定を使用して MCPSearch ツールを特に無効にすることもできます。
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 サーバーはそれらのいずれかと一致する 必要があります - Stdio サーバーはコマンド制限が存在する場合、名前だけでは渡すことはできません
- これにより、管理者はどのコマンドが実行を許可されているかを強制できます
- リモートサーバー(HTTP、SSE、WebSocket)は許可リストに
serverUrlエントリが存在する場合、URL ベースのマッチングを使用します - URL エントリが存在しない場合、リモートサーバーは名前ベースのマッチングにフォールバックします
- コマンド制限はリモートサーバーに適用されません
URL ベースの制限の仕組み
URL パターンは* を使用してワイルドカードをサポートし、文字の任意のシーケンスと一致します。これは特定のドメインまたはサブドメイン全体を許可するのに便利です。
ワイルドカードの例:
https://mcp.company.com/*- 特定のドメイン上のすべてのパスを許可https://*.example.com/*- example.com の任意のサブドメインを許可http://localhost:*/*- localhost 上の任意のポートを許可
- 許可リストに 任意の
serverUrlエントリが含まれている場合、リモートサーバーはそれらの URL パターンのいずれかと一致する 必要があります - リモートサーバーは 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 サーバー: ❌ ブロック(一致する名前エントリなし)
例: 混合名とコマンド許可リスト
例: 混合名とコマンド許可リスト
["npx", "-y", "approved-package"]の「local-tool」という名前の Stdio サーバー: ✅ 許可(コマンドと一致)["node", "server.js"]の「local-tool」という名前の Stdio サーバー: ❌ ブロック(コマンドエントリが存在しますが一致しない)["node", "server.js"]の「github」という名前の 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 設定は引き続き管理されたサーバーをフィルタリングして、実際にロードされるサーバーを決定します。