Model Context Protocol (MCP)
Claude CodeでMCPを設定する方法を学びます。
Model Context Protocol (MCP)は、LLMが外部ツールやデータソースにアクセスできるようにするオープンプロトコルです。MCPの詳細については、MCPドキュメントを参照してください。
サードパーティのMCPサーバーは自己責任で使用してください。MCPサーバーを信頼していることを確認し、特にインターネットと通信するMCPサーバーを使用する際は注意してください。これらはプロンプトインジェクションのリスクにさらされる可能性があります。
MCPサーバーの設定
MCP stdioサーバーの追加
MCP SSEサーバーの追加
MCP HTTPサーバーの追加
MCPサーバーの管理
ヒント:
-s
または--scope
フラグを使用して、設定が保存される場所を指定します:local
(デフォルト):現在のプロジェクトであなたのみが利用可能(古いバージョンではproject
と呼ばれていました)project
:.mcp.json
ファイルを通じてプロジェクト内の全員と共有user
:すべてのプロジェクトであなたが利用可能(古いバージョンではglobal
と呼ばれていました)
-e
または--env
フラグで環境変数を設定(例:-e KEY=value
)- MCP_TIMEOUT環境変数を使用してMCPサーバーの起動タイムアウトを設定(例:
MCP_TIMEOUT=10000 claude
で10秒のタイムアウトを設定) - Claude Code内で
/mcp
コマンドを使用していつでもMCPサーバーのステータスを確認 - MCPはクライアント・サーバーアーキテクチャに従い、Claude Code(クライアント)が複数の専門サーバーに接続可能
- Claude Codeはリアルタイム通信のためのSSE(Server-Sent Events)とストリーミング可能なHTTPサーバーをサポート
- OAuth 2.0認証が必要なリモートサーバーで認証するには
/mcp
を使用
MCPサーバースコープの理解
MCPサーバーは3つの異なるスコープレベルで設定でき、それぞれがサーバーのアクセシビリティと共有の管理において異なる目的を果たします。これらのスコープを理解することで、特定のニーズに最適なサーバー設定方法を決定できます。
スコープ階層と優先順位
MCPサーバー設定は明確な優先順位階層に従います。同じ名前のサーバーが複数のスコープに存在する場合、システムはローカルスコープのサーバーを最初に優先し、次にプロジェクトスコープのサーバー、最後にユーザースコープのサーバーという順序で競合を解決します。この設計により、必要に応じて個人設定が共有設定を上書きできることが保証されます。
ローカルスコープ
ローカルスコープのサーバーはデフォルトの設定レベルを表し、プロジェクト固有のユーザー設定に保存されます。これらのサーバーはあなたにとってプライベートであり、現在のプロジェクトディレクトリ内で作業している場合にのみアクセス可能です。このスコープは、個人開発サーバー、実験的設定、または共有すべきでない機密認証情報を含むサーバーに最適です。
プロジェクトスコープ
プロジェクトスコープのサーバーは、プロジェクトのルートディレクトリにある.mcp.json
ファイルに設定を保存することで、チームコラボレーションを可能にします。このファイルはバージョン管理にチェックインされるように設計されており、すべてのチームメンバーが同じMCPツールとサービスにアクセスできることを保証します。プロジェクトスコープのサーバーを追加すると、Claude Codeは自動的にこのファイルを作成または更新し、適切な設定構造を含めます。
結果として生成される.mcp.json
ファイルは標準化された形式に従います:
セキュリティ上の理由から、Claude Codeは.mcp.json
ファイルからプロジェクトスコープのサーバーを使用する前に承認を求めます。これらの承認選択をリセットする必要がある場合は、claude mcp reset-project-choices
コマンドを使用してください。
ユーザースコープ
ユーザースコープのサーバーはプロジェクト間でのアクセシビリティを提供し、ユーザーアカウントにプライベートを保ちながら、マシン上のすべてのプロジェクトで利用可能にします。このスコープは、個人ユーティリティサーバー、開発ツール、または異なるプロジェクト間で頻繁に使用するサービスに適しています。
適切なスコープの選択
以下に基づいてスコープを選択してください:
- ローカルスコープ:個人サーバー、実験的設定、または1つのプロジェクトに固有の機密認証情報
- プロジェクトスコープ:チーム共有サーバー、プロジェクト固有のツール、またはコラボレーションに必要なサービス
- ユーザースコープ:複数のプロジェクトで必要な個人ユーティリティ、開発ツール、または頻繁に使用するサービス
リモートMCPサーバーでの認証
多くのリモートMCPサーバーは認証を必要とします。Claude Codeはこれらのサーバーへのセキュアな接続のためのOAuth 2.0認証フローをサポートしています。
認証が必要なリモートサーバーの追加
/mcpコマンドを使用した認証
Claude Code内で、/mcp
コマンドを使用して認証を管理します:
これにより、以下が可能なインタラクティブメニューが開きます:
- すべてのサーバーの接続ステータスを表示
- OAuthが必要なサーバーで認証
- 既存の認証をクリア
- サーバーの機能を表示
OAuthフローの完了
サーバーで「認証」を選択すると:
- ブラウザが自動的にOAuthプロバイダーに開きます
- ブラウザで認証を完了します
- Claude Codeがアクセストークンを受信し、安全に保存します
- サーバー接続がアクティブになります
ヒント:
- 認証トークンは安全に保存され、自動的に更新されます
- アクセスを取り消すには
/mcp
メニューの「認証をクリア」を使用 - ブラウザが自動的に開かない場合は、提供されたURLをコピーしてください
- OAuth認証はSSEとHTTPの両方のトランスポートで動作します
Postgres MCPサーバーへの接続
PostgreSQLデータベースへの読み取り専用アクセスをClaudeに与えて、クエリとスキーマ検査を行いたいとします。
Postgres MCPサーバーの追加
Claudeでデータベースをクエリ
ヒント:
- Postgres MCPサーバーは安全性のために読み取り専用アクセスを提供します
- Claudeはデータベース構造の探索と分析クエリの実行を支援できます
- これを使用して、馴染みのないプロジェクトのデータベーススキーマを素早く理解できます
- 接続文字列が必要最小限の権限を持つ適切な認証情報を使用していることを確認してください
JSON設定からのMCPサーバーの追加
Claude Codeに追加したい単一のMCPサーバーのJSON設定があるとします。
JSONからのMCPサーバーの追加
サーバーが追加されたことを確認
ヒント:
- シェルでJSONが適切にエスケープされていることを確認してください
- JSONはMCPサーバー設定スキーマに準拠している必要があります
- プロジェクト固有の設定ではなくグローバル設定にサーバーを追加するには
-s global
を使用できます
Claude DesktopからのMCPサーバーのインポート
Claude DesktopでMCPサーバーをすでに設定しており、手動で再設定することなくClaude Codeで同じサーバーを使用したいとします。
Claude Desktopからのサーバーのインポート
インポートするサーバーの選択
コマンドを実行すると、インポートしたいサーバーを選択できるインタラクティブダイアログが表示されます。
サーバーがインポートされたことを確認
ヒント:
- この機能はmacOSとWindows Subsystem for Linux(WSL)でのみ動作します
- これらのプラットフォームの標準的な場所からClaude Desktop設定ファイルを読み取ります
- グローバル設定にサーバーを追加するには
-s global
フラグを使用 - インポートされたサーバーはClaude Desktopと同じ名前を持ちます
- 同じ名前のサーバーがすでに存在する場合、数値サフィックスが付きます(例:
server_1
)
Claude CodeをMCPサーバーとして使用
Claude Code自体をMCPサーバーとして使用し、他のアプリケーションが接続してClaudeのツールと機能を提供できるようにしたいとします。
ClaudeをMCPサーバーとして開始
他のアプリケーションからの接続
Claude Desktop などの任意のMCPクライアントからClaude Code MCPサーバーに接続できます。Claude Desktopを使用している場合は、この設定を使用してClaude Code MCPサーバーを追加できます:
ヒント:
- サーバーはView、Edit、LSなどのClaudeのツールへのアクセスを提供します
- Claude Desktopで、Claudeにディレクトリ内のファイルを読み取り、編集などを行うよう依頼してみてください
- このMCPサーバーは単にClaude CodeのツールをMCPクライアントに公開しているだけなので、個々のツール呼び出しに対するユーザー確認の実装はクライアント側の責任であることに注意してください
MCPリソースの使用
MCPサーバーは、ファイルを参照する方法と同様に、@メンションを使用して参照できるリソースを公開できます。
MCPリソースの参照
利用可能なリソースのリスト表示
プロンプトで@
と入力すると、接続されたすべてのMCPサーバーから利用可能なリソースが表示されます。リソースは自動補完メニューでファイルと一緒に表示されます。
特定のリソースの参照
@server:protocol://resource/path
の形式を使用してリソースを参照します:
複数のリソース参照
単一のプロンプトで複数のリソースを参照できます:
ヒント:
- リソースは参照時に自動的に取得され、添付ファイルとして含まれます
- リソースパスは@メンション自動補完でファジー検索可能です
- サーバーがサポートしている場合、Claude CodeはMCPリソースをリストおよび読み取るツールを自動的に提供します
- リソースはMCPサーバーが提供する任意のタイプのコンテンツ(テキスト、JSON、構造化データなど)を含むことができます
MCPプロンプトをスラッシュコマンドとして使用
MCPサーバーは、Claude Codeでスラッシュコマンドとして利用可能になるプロンプトを公開できます。
MCPプロンプトの実行
利用可能なプロンプトの発見
/
と入力すると、MCPサーバーからのものを含むすべての利用可能なコマンドが表示されます。MCPプロンプトは/mcp__servername__promptname
の形式で表示されます。
引数なしでプロンプトを実行
引数付きでプロンプトを実行
多くのプロンプトは引数を受け入れます。コマンドの後にスペース区切りで渡します:
ヒント:
- MCPプロンプトは接続されたサーバーから動的に発見されます
- 引数はプロンプトの定義されたパラメータに基づいて解析されます
- プロンプトの結果は会話に直接注入されます
- サーバーとプロンプト名は正規化されます(スペースはアンダースコアになります)