CoreCodeブログ

ガイド

Claude Code の MCP 設定:MCP サーバーの追加・共有・トラブルシューティング

公開日: · 最終確認:

MCP(Model Context Protocol)は、AI ツールを接続するためのオープンな標準です。MCP サーバーを使うと、Claude Code がツール、データベース、API に直接アクセスできるので、データをチャットにコピーする必要がなくなります。このページでは、3 種類のトランスポートそれぞれで使うコマンド、設定の保存場所、チームでの共有方法、認証、失敗したときの確認点を手順に沿って説明します。内容は Anthropic の Connect Claude Code to tools via MCP に沿っており、2026 年 10 月 30 日にそのページで確認しました。

ポイント
  • サーバーは claude mcp add で追加します。リモートサーバーには --transport http、自分のマシン上のプロセスには stdio を使います。SSE は非推奨です。
  • デフォルトでは、設定は local スコープ(~/.claude.json、このプロジェクトのみ、自分だけに非公開)に入ります。チームで共有するには --scope project を付けると、プロジェクトルートの .mcp.json に書き込まれます。
  • サーバーの管理には claude mcp list、claude mcp get <name>、claude mcp remove <name> を使います。Claude Code 内の /mcp では、状態の確認と OAuth のサインインができます。
  • 接続する前に、そのサーバーを信頼できるか確認してください。外部のコンテンツを取得するサーバーは、プロンプトインジェクションの危険にさらされる可能性があります。

MCP とは何か、いつサーバーを接続するか

MCP サーバーを使うと、Claude Code がツール、データベース、API にアクセスできます。課題管理ツールや監視ダッシュボードなど、別のツールからチャットにデータをコピーしていると気づいたら、サーバーを接続する場面です。接続すれば、Claude は貼り付けられた内容に頼らず、そのシステムを直接読んだり操作したりできます。

セキュリティ:各サーバーを接続する前に、信頼できるか確認してください。外部のコンテンツを取得するサーバーは、プロンプトインジェクションの危険にさらされる可能性があります。

トランスポートごとのサーバーの追加方法

どの方法も claude mcp add を使います。サーバーから提供された情報から始めてください。https:// のアドレスならリモートサーバー、npx などの起動コマンドなら自分のマシンで動くサーバーです。

トランスポート用途備考
HTTPリモートサーバー推奨。クラウドサービスで最も広くサポートされているトランスポートです。
SSESSE のエンドポイントだけを公開しているリモートサーバー非推奨。利用できる場合は HTTP を使ってください。
stdioローカルのプロセスシステムへの直接アクセスが必要なツールや、カスタムスクリプトに向きます。

リモート HTTP サーバー

# Basic syntax
claude mcp add --transport http <name> <url>

# Real example: Connect to Notion
claude mcp add --transport http notion https://mcp.notion.com/mcp

# Example with Bearer token
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

JSON 設定では、type フィールドに http の別名として streamable-http を指定できます。url があって type がない JSON のエントリは設定エラーです。Claude Code は type のないエントリを stdio サーバーとして読み取り、スキップします。

リモート SSE サーバー

SSE(Server-Sent Events)トランスポートは非推奨です。利用できる場合は HTTP を使ってください。サービスによっては、いまだに SSE のエンドポイントだけを公開しています。その場合も同じ claude mcp add --transport http <name> <url> コマンドで追加できます。Claude Code はまず HTTP を試し、サーバーが受け付けなければ SSE に切り替えます。この自動切り替えには Claude Code v2.1.265 以降が必要です。それより前のバージョンの場合や、SSE で直接接続したい場合は、--transport sse を渡します。

# Basic syntax
claude mcp add --transport sse <name> <url>

# Real example: Connect to Asana
claude mcp add --transport sse asana https://mcp.asana.com/sse

# Example with authentication header
claude mcp add --transport sse private-api https://api.company.com/sse \
  --header "X-API-Key: your-key-here"

ローカルの stdio サーバー

stdio サーバーは、自分のマシン上のローカルプロセスとして動作します。

# Basic syntax
claude mcp add [options] <name> -- <command> [args...]

# Real example: Add Airtable server
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
  -- npx -y airtable-mcp-server

他のクライアント向けの手順を変換する

サーバーのセットアップ手順が Claude Desktop、Cursor、その他の MCP クライアント向けに書かれていて、claude mcp add のコマンドが載っていないことがあります。その中から、URL、起動コマンド、JSON ブロックを探してください。

claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'

add-json では、type のない url のエントリには、先に "type": "http"、"type": "sse"、"type": "ws" のいずれかを追加する必要があります。claude mcp add --transport は ws を受け付けないので、WebSocket サーバーは .mcp.json か claude mcp add-json で設定します。サーバー名に使えるのは、英字、数字、ハイフン、アンダースコアだけです。

スコープ:設定の保存場所

MCP サーバーは 3 つのスコープで設定できます。スコープによって、どのプロジェクトでサーバーが読み込まれるか、設定をチームと共有するかどうかが決まります。-s または --scope で選び、デフォルトは local です。

スコープ読み込まれる範囲チームとの共有保存場所
local(デフォルト)現在のプロジェクトのみしない~/.claude.json
project現在のプロジェクトのみする(バージョン管理経由)プロジェクトルートの .mcp.json
user自分のすべてのプロジェクトしない~/.claude.json
# Local scope
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

# Project scope
claude mcp add --transport http shared-server --scope project https://example.com/mcp

# User scope
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

local スコープのサーバーは、~/.claude.json の中で、そのプロジェクトのパスの下に保存されるので、他のプロジェクトには表示されません。個人用の開発サーバー、試験的な設定、バージョン管理に入れたくない認証情報を持つサーバーに使います。なお、MCP サーバーの「local スコープ」は、一般的なローカル設定ファイルである .claude/settings.local.json とは別のものです。

同じサーバーが複数の場所で定義されている場合、Claude Code は、最も優先順位の高いソースの定義を使って 1 回だけ接続します。エントリ全体が使われ、フィールドがスコープをまたいで統合されることはありません。優先順位は、高い順に次のとおりです:local スコープ、project スコープ、user スコープ、プラグインが提供するサーバー、claude.ai のコネクタ。

.mcp.json でサーバーをチームと共有する

project スコープは、設定をプロジェクトのルートにある .mcp.json ファイルに保存します。project スコープのサーバーを追加すると、Claude Code がこのファイルを作成または更新します。バージョン管理にチェックインすれば、チーム全員が同じ MCP ツールを使えます。

{
  "mcpServers": {
    "shared-server": {
      "type": "http",
      "url": "https://example.com/mcp"
    }
  }
}

セキュリティ上の理由から、Claude Code は、対話セッションで .mcp.json ファイルの project スコープのサーバーを使う前に、承認を求めます。その承認の選択をリセットするには、claude mcp reset-project-choices を実行します。

.mcp.json の環境変数

.mcp.json は環境変数の展開に対応しているので、チームで 1 つの設定を共有しつつ、マシン固有のパスや API キーなどの機密値は各自の環境に置けます。サーバーの command、args、env、url、headers の値で、変数を参照できます。

{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}

参照した変数が未設定で、デフォルト値もない場合でも、設定は読み込まれます。Claude Code は claude mcp list に変数が見つからないという警告を出し、展開されていない ${VAR} のテキストをそのまま使います。リモートサーバーの url と headers では、ANTHROPIC_API_KEY や ANTHROPIC_AUTH_TOKEN などの認証情報の変数は、展開されずに空として読み取られます。そうした認証情報をサーバーに渡したいときは、自分で付けた名前の変数にコピーして、その名前を参照してください。

サーバーの一覧表示、確認、削除

# List all configured servers
claude mcp list

# Get details for a specific server
claude mcp get notion

# Remove a server
claude mcp remove notion

# (within Claude Code) Check server status
/mcp

claude mcp add は成功すると Added ... の行を出力します。これは設定が書き込まれたことを意味します。認証情報は検証されないので、プレースホルダーのトークンも受け付けられ、サーバーは後から接続に失敗します。Claude Code が実際に接続できたか確認するには、claude mcp get <name> を実行するか、Claude Code で /mcp を実行して、サーバーの行にチェックマークが付いているか見てください。

claude mcp list は、各サーバーの横にヘルスステータスを表示します。

ステータス意味
✔ Connected接続済み
! Needs authenticationサインインが必要です。次のセクションを参照してください
✘ Failed to connectClaude Code が接続できませんでした。claude mcp list は失敗の詳細を行の末尾に付け、claude mcp get <name> は Issue: の行に表示します
⏸ Pending approval (run claude to approve)まだ承認していない .mcp.json のサーバーです。claude を対話的に実行して、確認して承認します

リモートサーバーを削除すると、Claude Code は、そのサーバー用に保存した OAuth トークンとクライアント登録も削除しますが、認可サーバー側でトークンを失効させることはしません。認可サーバーが失効に対応している場合は、claude mcp remove <name> の前に、シェルで claude mcp logout <name> を実行してください。

設定を失わずにサーバーを使わないようにするには、/mcp パネルでオフに切り替えます。Claude Code はそのサーバーへの接続をやめ、設定は残します。

リモートサーバーでの認証

クラウドベースの MCP サーバーの多くは認証が必要で、Claude Code は OAuth 2.0 に対応しています。サーバーが 401 Unauthorized または 403 Forbidden を返すと、Claude Code はそのリモートサーバーを認証が必要なものとして扱います。

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

続いて Claude Code 内で /mcp を実行し、ブラウザの手順に従ってログインします。

セッションを開かずにサインインするには、シェルからフローを実行します。

claude mcp login sentry

保存された認証情報を後で消去するには、claude mcp logout <name> を実行します。SSH セッションや、ディスプレイサーバーのない Linux では、claude mcp login がローカルのブラウザが使えないことを検出し、ブラウザを開く代わりに認可 URL を表示します。その URL を手元のマシンで開き、ブラウザのアドレスバーにあるリダイレクト URL の全体を、プロンプトに貼り付け直してください。この手順には対話的なターミナルが必要なので、ssh -t で接続します。ローカルのブラウザが検出された場合でも URL のプロンプトを強制するには、--no-browser を渡します。

サーバーに headers.Authorization を設定していて、サーバーがそれを拒否した場合、Claude Code は OAuth にフォールバックせず、接続が失敗したと報告します。そのトークンが MCP エンドポイントで有効か確認するか、ヘッダーを削除して OAuth のフローを使ってください。claude -p や Agent SDK の実行には /mcp パネルがないので、先に対話セッションか claude mcp login <name> でサインインしておきます。

タイムアウトと出力の上限

export MAX_MCP_OUTPUT_TOKENS=50000
claude

警告のしきい値は固定です。サーバーがツール自身の上限を引き上げない限り、50,000 文字を超える成功したテキスト結果は、この変数にかかわらずファイルに保存されます。

トラブルシューティング

症状原因と対処
has a "url" but no "type" を含むエラーJSON のエントリに url があって type がないため、stdio として読み取られてスキップされています。"type": "http"(または "sse" / "ws")を追加します。
stdio サーバーのフラグが Claude のオプションとして読み取られる-- がありません。サーバーのコマンド全体を -- の後ろに置きます。
--env がサーバー名を飲み込む--env とサーバー名の間に、--transport stdio など別のオプションを置きます。
⏸ Pending approval.mcp.json のサーバーがまだ承認されていません。claude を実行して対話的に承認します。承認の選択をやり直すには、claude mcp reset-project-choices を実行します。
✘ Failed to connectclaude mcp get <name> を実行し、Issue: の行にある HTTP ステータスやエラーテキストを読みます。claude mcp add は認証情報を検証しないので、401 は通常トークンが誤っていることを意味します。
! Needs authentication/mcp を実行するか、シェルで claude mcp login <name> を実行します。
claude mcp list に空白の警告が出るよくある原因は、末尾に改行が付いたトークンを貼り付けたことです。警告は Leading or trailing whitespace in: headers.Authorization のように表示されます。Claude Code は空白を削らないので、設定を編集して取り除いてください。
同じサーバー名が複数のスコープで異なるエンドポイントを持っているclaude mcp list と /mcp が警告を出します。使いたいエンドポイントを残し、他は claude mcp remove <name> --scope <scope> で削除します。
サーバーが切断され、失敗したままになる対話セッションでは、/mcp のサーバーのメニューから Reconnect を選びます。失敗したすべてのサーバーを再試行するには、/mcp reconnect all を実行します(v2.1.284 以降が必要)。

FAQ

サーバーは HTTP と SSE のどちらで追加すべきですか?

HTTP です。HTTP が推奨のトランスポートで、SSE は非推奨です。SSE のエンドポイントだけを公開しているサービスでも、サーバーが HTTP を受け付けなければ Claude Code が SSE に切り替えるため、同じ --transport http のコマンドで使えます(v2.1.265 以降)。それより前のバージョンでは、--transport sse を渡してください。

local、project、user スコープはどう使い分けますか?

自分だけが必要なサーバーや、バージョン管理に入れたくない認証情報を持つサーバーには local(デフォルト)を使います。チーム全員に使わせたいなら project で、設定はプロジェクトルートの .mcp.json に入るので、それをコミットします。すべてのプロジェクトで使いたいサーバーには user を使います。同じ名前が複数の場所にある場合は、local が project より、project が user より優先されます。

リレー経由で使う場合、Claude Code はどこで設定しますか?

このページが扱うのは MCP サーバーの設定だけで、Anthropic のページにもリレーの説明はありません。リレー経由で Claude Code を使う設定は、Claude Code のセットアップにあります。

参考資料