Claude CodeのMCPとは?設定方法・スコープ・認証・権限の管理を解説
この記事でわかること
- Claude CodeでMCPを使うと何ができるか、つなげるサーバーの方式
- claude mcp addでの追加方法と、Windowsでの注意点
- local・project・userのスコープと、.mcp.jsonの書き方・承認・環境変数
- OAuth・トークン・headersHelperなど、認証の使い分け
- /mcpでの運用、ツール検索、タイムアウト、出力の上限
- 許可ルール・サブエージェント・管理者の制限など、安全に使う設定
- つながらないときの原因と対処
目次
- Claude CodeのMCPとは
- つないでできること
- つなげるサーバーの方式
- コマンドを打つ場所は2つある
- サーバーをつなぐ
- 最初の1台:認証のいらないサーバー
- 自分のパソコンで動かすサーバー(stdio)
- URLで指定するサーバー
- WebSocketのサーバー
- JSONで追加する・手順を読み替える
- Claude Desktopの設定を取り込む
- Windowsで使うときの注意
- ほかの画面からつなぐ
- スコープ・.mcp.json
- local:自分だけ・このプロジェクトだけ
- project:チームで共有する
- user:自分のすべてのプロジェクトで使う
- どのスコープにするか
- 同じ名前が複数あるときの優先順位
- 環境変数で秘密の値を分ける
- プロジェクトのサーバーは、最初に承認が必要
- ログイン・認証
- OAuthでログインする
- トークンをヘッダーで渡す
- 事前に登録したOAuthクライアントを使う
- 要求する権限(スコープ)を絞る
- headersHelperで、接続のたびにヘッダーを作る
- claude.aiのコネクタを引き継ぐ
- 運用・調整
- /mcpでできる操作
- 使わないサーバーを止める
- ツール検索で、読み込む量を抑える
- 待ち時間の設定
- 出力が大きすぎるとき
- 接続が切れたとき
- リソース・プロンプトを使う
- サブエージェントだけにサーバーを使わせる
- Claude Code自体をMCPサーバーにする
- 権限・安全
- 許可ルールの書き方
- リスク・対策
- データベースにつなぐ例:読み取り専用で
- 管理者が決める:組織の制限
- うまくいかないとき
- 症状別の対処
- 設定は合っているのに失敗するとき
- 原因を切り分ける順番
- よくある質問
- まとめ
「Claude Codeに、課題管理ツールやデータベースの中身を直接読ませたい」「.mcp.jsonを作ったのに、サーバーが一覧に出てこない」と悩んでいる方も多いのではないでしょうか。
Claude CodeのMCPは、外部のツールやデータにClaude Codeをつなぐ仕組みです。他のツールの画面から情報をコピーして貼り付ける作業をやめて、Claude Codeがそのサービスを直接読み、必要なら操作する形にできます。設定はclaude mcpというコマンドと、プロジェクトの.mcp.jsonというファイルで行います。
MCPそのものの説明や、Claudeのアプリでの「コネクタ」の使い方は、Claude MCPの記事で扱っています。この記事は、Claude Code側の設定と運用に絞ります。つなぎ方、設定の置き場所(スコープ)、認証、運用の調整、権限、うまくいかないときの直し方を順に解説します。内容は2026年10月時点の公式ドキュメントをもとにしています。機能によって必要なバージョンが決まっているものは、本文中に書きました。
Claude CodeのMCPとは

MCP(Model Context Protocol)は、AIアプリを外部のシステムにつなぐためのオープンな標準規格です。Claude Codeの公式ドキュメントでは、課題管理ツールや監視ダッシュボードの内容を、チャットに貼り付けている場面が、サーバーをつなぐ目安として挙げられています。つないだあとは、貼り付けた内容ではなく、そのシステムをClaude Codeが直接読み、操作できます。
Claude Codeでは、つなぎ先のことを「MCPサーバー」と呼びます。サーバーは、サービス提供元がインターネット上で公開しているものもあれば、自分のパソコンの中で動く小さなプログラムのこともあります。
つないでできること
公式ドキュメントが挙げている使い方を、業務の言葉に置き換えて表にまとめました。依頼は、そのまま日本語で書けます。
| やりたいこと | つなぐもの | 頼み方・使い方の例 |
|---|---|---|
| 課題の内容から実装を進める | 課題管理ツール、GitHub | 課題ENG-4521の内容を実装して、プルリクエストを作って |
| 監視データを調べる | エラー監視・分析ツール | この機能の利用状況を、監視ツールで確認して |
| データベースに問い合わせる | PostgreSQLなど | 先月の注文のうち、返品になった件数を出して |
| デザインを反映する | デザインツール、チャット | 新しいデザインに合わせて、メールのひな形を直して |
| 定型の作業を自動化する | メール | この10人に、フィードバック依頼の下書きを作って |
| 外部の出来事に反応する | チャンネル機能に対応したサーバー | 外出中でも、チャットやWebhookの知らせに反応させる |
最後の「外部の出来事に反応する」は、サーバーがセッションにメッセージを送り込む「チャンネル」という機能です。公式ドキュメントに別のページがあります。まずは上の5つから試すのが現実的です。
つなげるサーバーの方式
Claude Codeがつなげるサーバーは、動く場所と通信の方式によって4つに分かれます。どれを使うかは、サーバー側の案内で決まります。
| 方式 | 動く場所 | 追加のしかた | 認証 |
|---|---|---|---|
| HTTP | サービス提供元のサーバー | claude mcp add --transport http 名前 URL | OAuth(ブラウザでログイン)、ヘッダーでのトークン |
| SSE | サービス提供元のサーバー | HTTPと同じコマンド。--transport sseで直接指定もできる | 公式の例はヘッダー指定 |
| stdio | 自分のパソコンの中 | claude mcp add 名前 -- 起動コマンド | 環境変数でキーなどを渡す |
| WebSocket | サービス提供元のサーバー | .mcp.jsonかclaude mcp add-json(--transportでは指定できない) | ヘッダーのみ。OAuthは使えない |
公式ドキュメントでは、クラウドのサービスにつなぐなら、HTTPが推奨とされています。SSEは非推奨で、HTTPで使えるならHTTPを選びます。WebSocketは、サーバーからClaudeに向けて自発的にイベントを送りたいときだけの選択肢です。
コマンドを打つ場所は2つある
Claude Codeの設定は、コマンドを打つ場所によって使えるものが違います。初めてだと混乱しやすいので、先に整理しておきます。
| 場所 | 書き方 | 主な用途 |
|---|---|---|
| ターミナル(PowerShellなど) | claude mcp add、claude mcp list など | サーバーの追加・削除・一覧・ログイン |
| Claude Codeの会話の中 | /mcp | 状態の確認、認証、再接続、無効化 |
公式のクイックスタートでは、claude mcp addは、claudeを起動した会話の中ではなく、ターミナルで打つと説明されています。会話を始める前にサーバーを登録する、という考え方です。会話の中で、状態を見たり、ログインしたりするときに使うのが/mcpです。
サーバーをつなぐ

ここでは、実際にサーバーをつなぐ手順を、種類ごとに説明します。まず認証のいらないサーバーで流れをつかみ、そのあとに、自分のパソコンで動くサーバーやURLを指定するサーバーの追加方法を見ていきます。
最初の1台:認証のいらないサーバー
公式のクイックスタートでは、Claude Codeのドキュメントを検索できる、認証不要のサーバーが例になっています。手順は、どのサーバーでも同じです。
- サーバーを追加するターミナルで
claude mcp add --transport http claude-code-docs https://code.claude.com/docs/mcpを実行します。「Added HTTP MCP server …」と表示されれば、設定の書き込みは成功です。名前のclaude-code-docsは自由に決められます。 - 接続の状態を確認する
claude mcp listを実行し、サーバーの横に「✔ Connected」と出ているかを確認します。 - 会話の中で使う
claudeを起動し、「claude-code-docsサーバーを使って、MCP_TIMEOUTが何かを調べて」のように、サーバー名を挙げて頼みます。初めてツールを呼ぶときに許可を求められるので、内容を見て承認します。 - 不要になったら削除する
claude mcp remove claude-code-docsで削除できます。リモートのサーバーを削除すると、保存されていたログイン情報(OAuthのトークンとクライアント登録)も一緒に消えます。
「Added …」の表示は、設定を書き込んだという意味で、接続できたことまでは保証しません。必ず、claude mcp listか/mcpで状態を確かめてください。一覧に出る状態の意味は次のとおりです。
| 表示 | 意味 |
|---|---|
| ✔ Connected | つながっていて、使える状態 |
| ! Connected · tools fetch failed | サーバーには接続できたが、ツールの一覧を取れていない。claude mcp get 名前で詳細を見る |
| ! Needs authentication | サーバーには届いているが、ブラウザでのログインか、トークンの指定が必要 |
| ✘ Failed to connect | サーバーが応答しない。HTTPの状態やエラーの文面が横に表示される |
| ✘ Connection error | 接続の試行中にエラーが起きた。詳細は表示されない |
| ⏸ Pending approval | プロジェクトの.mcp.jsonにあるサーバーで、まだ承認していない |
| ⊘ Disabled for this project | このプロジェクトでは無効にしてある。/mcpで戻せる |
自分のパソコンで動かすサーバー(stdio)
ブラウザの操作やファイルの読み書きのように、自分のパソコンの資源が必要なものは、サーバーのプログラムを自分のパソコンで起動します。公式の例は、ブラウザを操作できるPlaywrightのサーバーです。npxで動くので、Node.jsのバージョン18以降が必要です。
claude mcp add playwright -- npx -y @playwright/mcp@latest
書き方の要点は3つあります。
--transportは付けません。ローカルのサーバーは、初期値のstdioで動きます。--(ハイフン2つ)より後ろが、サーバーを起動するコマンドです。これを付けないと、Claude Codeが-yなどの引数を自分のオプションとして読んでしまいます。- APIキーなどの環境変数は
--env キー=値で渡します。サーバー名の直後に--envを置くと名前が環境変数の一部と読まれて拒否されるので、間に--transport stdioのような別のオプションを入れます。
環境変数を渡す例は、公式ドキュメントでは次の形です。
claude mcp add --env AIRTABLE_API_KEY=キー --transport stdio airtable -- npx -y airtable-mcp-server
最初の接続確認で「Failed to connect」と出ることがあります。npxがパッケージをダウンロードしている間は、接続できないためです。少し待ってから、もう一度claude mcp listを実行してください。数回試しても変わらないときは、後の「うまくいかないとき」の項を見てください。
stdioのサーバーには、Claude CodeがCLAUDE_PROJECT_DIRという環境変数を渡します。値はプロジェクトの根元のフォルダで、サーバーを自作する場合に、フォルダを基準にした処理を書けます。
URLで指定するサーバー
クラウドのサービスは、URLを指定して追加します。ログインのいらないサーバーも、OAuthでログインするサーバーも、追加のコマンドは同じです。トークンで認証するサーバーは、--headerでトークンを添えます。公式ドキュメントのGitHubの例は、次のとおりです。
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer 自分のトークン"
この例では、GitHubの設定画面で「fine-grained token」(対象のリポジトリを絞れるトークン)を作ってから、コマンドに書きます。claude mcp addは、トークンが正しいかを確かめずに設定を保存します。値を間違えても、追加の時点ではエラーになりません。あとから、/mcpでその行に✘が出て、失敗の詳細にHTTPの状態(401など)が表示されます。
SSEの方式しか対応していないサーバーも、同じコマンド(--transport http)で追加できます。Claude Codeが、まずHTTPを試し、受け付けられなければSSEに切り替えます。この自動の切り替えには、v2.1.265以降が必要です。それ以前のバージョンでは、--transport sseを指定します。
WebSocketのサーバー
サーバー側からClaudeに向けて通知を送りたい場合は、WebSocketのサーバーを使います。claude mcp add --transportでは指定できないので、add-jsonか.mcp.jsonに書きます。
claude mcp add-json events-server '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer トークン"}}'
認証はヘッダーだけで、OAuthは使えません。サーバーがリクエストに答えるだけの作りなら、HTTPを選んでください。
JSONで追加する・手順を読み替える
サーバーの案内に設定のJSONが載っている場合は、claude mcp add-jsonでそのまま追加できます。
claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'
MCPはClaude Code専用ではないため、サーバーの案内が、Claude Desktop・Cursorなど他のツール向けに書かれていることもよくあります。そのときは、案内の中からURL・起動コマンド・JSONのブロックのどれかを探して、次のように読み替えます。
| 案内に載っているもの | 意味 | Claude Codeでの追加 |
|---|---|---|
https://から始まるURL | リモートのサーバー | claude mcp add --transport http 名前 URL |
wss://から始まるURL | WebSocketのサーバー | add-jsonで"type":"ws"を指定 |
npx -y 〜などの起動コマンド | 自分のパソコンで動くサーバー | claude mcp add 名前 -- npx -y 〜 |
mcpServersのJSON | 他のツールの設定ファイルの書き方 | 中身の1つ分をadd-jsonに渡す(外側のmcpServersは付けない) |
JSONを読み替えるときに修正が要る点が2つあります。1つ目は、urlがあるのにtypeがない場合です。Claude Codeはtypeのない項目をstdioのサーバーとして読むため、"type": "http"を足します。2つ目は、サーバー名に使えるのが英数字・ハイフン・アンダースコアだけという点です。スペースや日本語を含む名前は、付け替えます。
なお、typeには、MCPの仕様に合わせたstreamable-httpという書き方も、httpの別名として使えます。
Claude Desktopの設定を取り込む
Claude Desktop(チャットのアプリ)にすでに設定してあるサーバーは、claude mcp add-from-claude-desktopで取り込めます。実行すると、取り込むサーバーを選ぶ画面が出ます。公式ドキュメントでは、この機能はmacOSとWSL(Windows Subsystem for Linux)でだけ使えると説明されています。ほかの環境では、上のJSONの読み替えで追加してください。
Windowsで使うときの注意
公式ドキュメントから、Windowsで役立つ点を拾います。claude mcp addは、PowerShellでもコマンドプロンプトでも同じ書き方で使えます。
| 場面 | 内容 |
|---|---|
| 設定ファイルの場所 | ~/.claude.jsonは%USERPROFILE%\.claude.json(多くはC:\Users\ユーザー名\.claude.json)。CLAUDE_CONFIG_DIRを設定していれば、そのフォルダの中の.claude.jsonを読む |
| URLに届くかの確認 | PowerShellではcurlが別のコマンドの別名になっているため、curl.exe -I URLと書く |
| 起動の待ち時間を延ばす | $env:MCP_TIMEOUT = "60000"; claudeのように、同じ行で環境変数を設定してから起動する(単位はミリ秒) |
| 状態の記号 | 古いコンソールでは「✔」「✘」が「√」「×」で表示されることがある |
npxで動くサーバー | Node.jsが必要。公式のPlaywrightの例では、バージョン18以降 |
Windowsへのインストールそのものは、Windowsへのインストールの記事で解説しています。
ほかの画面からつなぐ
ここまでは、ターミナルのClaude Codeでの方法です。公式のクイックスタートでは、画面ごとのつなぎ方を次のように案内しています。
| 使う画面 | つなぎ方 |
|---|---|
| Claude Codeのデスクトップアプリ | コネクタの画面から追加する |
| VS Code | 拡張機能の「外部ツールとのMCP接続」の手順に従う |
| クラウドのセッション | リポジトリに.mcp.jsonをコミットしておく。リポジトリが1つのセッションで読み込まれる |
| claude.ai | claude.aiの「コネクタ」で追加すると、同じアカウントのClaude Codeに自動で表示される |
スコープ・.mcp.json

MCPサーバーの設定は、どこに保存するか(スコープ)によって、使える範囲と、チームで共有できるかどうかが変わります。claude mcp addの--scope(短縮形は-s)で指定します。
| スコープ | 指定 | 使える範囲 | チームで共有 | 保存場所 |
|---|---|---|---|---|
| local(初期値) | --scope local | 今のプロジェクトだけ | しない | ~/.claude.jsonの、プロジェクトごとの欄 |
| project | --scope project | 今のプロジェクトだけ | する(バージョン管理で共有) | プロジェクトの直下の.mcp.json |
| user | --scope user | 自分のすべてのプロジェクト | しない | ~/.claude.jsonの、最上位のmcpServers |
スコープは、サーバーを追加するときに決まります。あとから変えるには、いったん削除して、別のスコープで追加し直します。たとえば、localで追加したものをプロジェクト全員で使いたくなったら、claude mcp remove 名前 --scope localで消してから、--scope projectで追加し直します。
local:自分だけ・このプロジェクトだけ
初期値のスコープです。そのプロジェクトで自分だけが使え、他のプロジェクトには出てきません。個人の実験用のサーバーや、バージョン管理に入れたくない認証情報を使うサーバーに向いています。
なお、MCPの「local」は、一般の設定の.claude/settings.local.jsonとは別の場所に保存されます。MCPのlocalは、ホームフォルダの~/.claude.jsonの中に、プロジェクトのパスごとに記録されます。
{
"projects": {
"/path/to/your/project": {
"mcpServers": {
"stripe": {
"type": "http",
"url": "https://mcp.stripe.com"
}
}
}
}
}
project:チームで共有する
プロジェクトの直下に.mcp.jsonを置いて、チーム全員で同じサーバーを使う方法です。claude mcp add --scope projectを実行すると、ファイルが自動で作られます。ファイルをバージョン管理に入れておけば、リポジトリを取り込んだ人に、同じ設定が届きます。
{
"mcpServers": {
"claude-code-docs": {
"type": "http",
"url": "https://code.claude.com/docs/mcp"
},
"playwright": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@playwright/mcp@latest"]
}
}
}
手で書くときは、HTTPのサーバーにはurl、stdioのサーバーにはcommandとargsを書きます。ファイルを保存したら、新しいセッションを始めてください。.mcp.jsonは、セッションの開始時にだけ読み込まれます。
ファイルの置き場所を間違えやすい
公式のトラブルシューティングでは、~/.claude/.mcp.json、~/.claude/mcp.json、%APPDATA%\Claude\mcp.jsonなどは、Claude Codeが読まない場所だと案内されています。読まれるのは、~/.claude.jsonと、プロジェクトの直下の.mcp.jsonです。
user:自分のすべてのプロジェクトで使う
自分のパソコンの、どのプロジェクトでも使いたいサーバーに向いています。個人で毎日使う道具(ドキュメント検索、ブラウザ操作など)は、userスコープにしておくと、プロジェクトごとに追加し直す手間がなくなります。
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic
どのスコープにするか
| こんなサーバーなら | スコープ | 理由 |
|---|---|---|
| チーム全員が、そのプロジェクトで使う | project | .mcp.jsonを共有すれば、各自が追加する手間がなくなる |
| 自分の個人用のキーやトークンを使う | local | 設定ファイルがリポジトリに入らない |
| どのプロジェクトでも使う、自分用の道具 | user | 1回の追加で、全プロジェクトに出てくる |
| まだ試している段階 | local | 他のメンバーや他のプロジェクトに影響しない |
同じ名前が複数あるときの優先順位
同じサーバーが複数の場所に定義されている場合、Claude Codeは最も優先順位の高い1つだけに接続します。選ばれた定義がまるごと使われ、項目が混ぜ合わされることはありません。
| 優先順位 | 定義の場所 | 重複の見分け方 |
|---|---|---|
| 1 | local | 名前が同じ |
| 2 | project(.mcp.json) | 名前が同じ |
| 3 | user | 名前が同じ |
| 4 | プラグインが持つサーバー | URLまたはコマンドが同じ |
| 5 | claude.aiのコネクタ | URLが同じ |
組織が管理設定のmanagedMcpServersで配ったサーバーは、これらより上に置かれます(v2.1.259以降)。同じ名前のサーバーを、別々のURLで複数のスコープに定義すると、claude mcp listと/mcpに警告が出ます。不要な方は、claude mcp remove 名前 --scope スコープ名で消してください。
環境変数で秘密の値を分ける
.mcp.jsonでは、環境変数を展開できます。チームで設定ファイルを共有しながら、APIキーなどの値だけを各自のパソコンの環境変数に置くためのしくみです。
| 書き方 | 意味 |
|---|---|
${VAR} | 環境変数VARの値に置き換える |
${VAR:-default} | VARがあればその値、なければdefaultを使う |
使える場所は、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 mcp listに警告が出て、${VAR}という文字がそのまま使われます。意図した値で動かすには、変数を設定するか、:-で既定値を付けます。
一部の認証情報は、空として扱われる
リモートのサーバーのurlとheadersでは、ANTHROPIC_API_KEY・ANTHROPIC_AUTH_TOKENのようなClaude Code自身の認証情報や、クラウドの認証情報、NPM_TOKENなどは空の値として扱われます。リポジトリの.mcp.jsonが、これらの認証情報をサーバーに送れないようにするためです。Bearer ${ANTHROPIC_AUTH_TOKEN}と書くと、サーバーには「Bearer 」だけが届いて、401で失敗します。自分で名前を付けた別の環境変数にコピーして、その名前を書いてください。
プロジェクトのサーバーは、最初に承認が必要
他の人が作ったリポジトリを開いたときに、知らないうちにプログラムが起動しないようにするため、.mcp.jsonのサーバーは、初めて使うときに承認を求められます。承認の選択をやり直したいときは、claude mcp reset-project-choicesを実行します。
承認についての細かい決まりは、次のとおりです。
claude mcp listとclaude mcp getは、ワークスペースを信頼する(claudeを起動して、信頼の確認を承認する)までは、リポジトリの外にある設定の承認だけを見ます。リポジトリの.claude/settings.jsonに書かれた承認は、信頼する前は無視されます。- 承認を事前に済ませる設定が、
enabledMcpjsonServers(サーバーを指定)とenableAllProjectMcpServers(すべて承認)です。拒否はdisabledMcpjsonServersで、これが最優先です。 claude -p(対話なしの実行)、Agent SDK、クラウドのセッションでは、承認の画面を出せないため、プロジェクトのサーバーを確認なしで読み込みます。読み込ませたくない場合は、disabledMcpjsonServers、--setting-sources、--strict-mcp-configのいずれかを使います。
ログイン・認証

クラウドのサービスのMCPサーバーは、多くが認証を求めます。Claude Codeでは、サーバーが401(認証が必要)や403(権限なし)を返すと、「認証が必要」として扱います。認証の方式は、サーバーの案内に合わせて選びます。
| 方式 | 向いているサーバー | 設定のしかた |
|---|---|---|
| OAuth(ブラウザでログイン) | Sentry・Notion・Linearなど、ログインを案内しているサービス | URLで追加し、/mcpかclaude mcp loginでログイン |
| ヘッダーでトークンを渡す | GitHubなど、トークン発行を案内しているサービス | --header "Authorization: Bearer トークン" |
| 事前登録したOAuthクライアント | OAuthの自動登録に対応していないサービス | --client-id・--client-secret・--callback-port |
| headersHelper | 社内SSOや、短い期間で切れるトークンなど | ヘッダーを出力するコマンドを.mcp.jsonに書く |
OAuthでログインする
一番よく使う方法です。Sentryの例で、流れを追います。
- サーバーを追加する
claude mcp add --transport http sentry https://mcp.sentry.dev/mcpを実行します。この時点で、claude mcp listの状態が「! Needs authentication」なのは、正常です。 - /mcpを開く
claudeを起動して/mcpと入力し、一覧から対象のサーバーを選び、「Authenticate」を選びます。 - ブラウザで許可するブラウザが開き、サービスのログイン画面が表示されます。ログインして、許可する範囲を確認します。
- つながったことを確認するClaude Codeに戻ると、状態が「Connected」に変わります。
公式ドキュメントが挙げているポイントを補足します。
- 認証のトークンは安全に保存され、自動で更新されます。
- ブラウザが自動で開かないときは、表示されたURLを自分でブラウザに貼り付けます。
- 認証のあとにブラウザの画面が接続エラーになった場合は、アドレス欄のURL全体をコピーして、Claude Codeの入力欄に貼り付けます。
- アクセスを取り消したいときは、
/mcpのメニューで「Clear authentication」を選びます。
ターミナルから直接ログインすることもできます。claude mcp login 名前で認証でき、claude mcp logout 名前でログイン情報を消せます。SSHなどで接続していて、自分のパソコンのブラウザが使えない場合は、認証のURLが表示されます。そのURLを手元のブラウザで開き、移動したあとのURL全体を貼り戻します。--no-browserを付けると、ブラウザがあっても、URLを表示する方式を強制できます。
トークンをヘッダーで渡す
トークンで認証するサーバーは、追加のときに--headerでトークンを渡します。.mcp.jsonに書く場合は、トークンそのものではなく、${変数名}の形にして、実際の値は各自の環境変数に入れます。こうしておけば、リポジトリにキーが残りません。
"headers": {
"Authorization": "Bearer ${GITHUB_PAT}"
}
設定したAuthorizationのヘッダーをサーバーが拒否した場合、Claude CodeはOAuthに切り替えず、接続の失敗として扱います。トークンが、そのMCPのエンドポイントで有効かを確かめるか、ヘッダーを外してOAuthを試します。
事前に登録したOAuthクライアントを使う
サーバーによっては、OAuthの自動登録(Dynamic Client Registration)に対応していません。「Incompatible auth server: does not support dynamic client registration」というエラーが出た場合は、サーバーの開発者向けの画面でアプリを登録して、クライアントIDとシークレットを入手します。
claude mcp add --transport http --client-id クライアントID --client-secret --callback-port 8080 my-server https://mcp.example.com/mcp
--client-secretを付けると、シークレットを入力する画面(入力内容は伏せ字)が出ます。登録のときにリダイレクトURIを求められたら、使っていないポートを選び、http://localhost:ポート番号/callbackと入力して、同じポートを--callback-portに指定します。
- シークレットは、設定ファイルではなく、macOSではシステムのキーチェーンに、それ以外では認証情報のファイルに保存されます。
- シークレットを設定できるのは、サーバーを追加するときだけです。あとから変えるときは、削除して、
--client-secret付きで同じスコープに追加し直します。 - これらのフラグは、HTTPとSSEのサーバーにだけ効きます。stdioのサーバーには効果がありません。
- 設定できているかは、
claude mcp get 名前で確かめられます。
要求する権限(スコープ)を絞る
サーバーによっては、必要以上に多くの権限をまとめて要求することがあります。セキュリティ部門が承認した範囲に絞りたいときは、.mcp.jsonのoauth.scopesで、要求する権限を固定できます。値は、スペースで区切った1つの文字列です。
{
"mcpServers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"scopes": "channels:read chat:write search:read"
}
}
}
}
あとから、サーバーが「権限が足りない(insufficient_scope)」と返したときは、そのスコープをoauth.scopesに足してから、/mcpで認証し直します。足さないまま認証し直しても、トークンには足りない権限が入りません。
headersHelperで、接続のたびにヘッダーを作る
OAuth以外の認証(Kerberos、短い期間で切れるトークン、社内のSSOなど)を使うサーバーには、headersHelperを使います。Claude Codeが、接続のたびにコマンドを実行し、その出力をヘッダーとして使います。
{
"mcpServers": {
"internal-api": {
"type": "http",
"url": "https://mcp.internal.example.com",
"headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
}
}
}
- コマンドは、文字列の組のJSONオブジェクトを標準出力に書く必要があります。
- 実行は、シェルの中で行われ、10秒で打ち切られます。
- 結果は保存されないため、トークンの使い回しは、スクリプト側で行います。
- リポジトリの
.mcp.jsonやプラグインが持つコマンドは、自分で書いたものではないので、名前にTOKENやKEYなどを含む環境変数が外された状態で実行されます。 - プロジェクトの
.mcp.jsonとlocalスコープのヘルパーは、そのフォルダを信頼する確認を承認するまで実行されません。
claude.aiのコネクタを引き継ぐ
claude.aiのアカウントでClaude Codeにログインしていれば、claude.aiの「コネクタ」で追加したサーバーが、/mcpの一覧に自動で出てきます。TeamとEnterpriseのプランでは、コネクタを追加できるのは管理者だけです。
ただし、次の場合は読み込まれません。
ANTHROPIC_API_KEY・ANTHROPIC_AUTH_TOKEN・apiKeyHelperで認証している- Amazon BedrockなどのClaude以外の提供元を使っている
claude setup-tokenで作った長期トークン(CLAUDE_CODE_OAUTH_TOKEN)を使っている
表示されないときは、/statusで、今どの認証方式が有効かを確認します。また、Microsoft 365・Gmail・Googleカレンダーなどは、Claude Codeからのログインに対応していません。Claude Codeでこれらをclaude mcp addで追加しようとすると、claude.aiで接続するよう案内する表示が出ます。claude.aiの画面で接続すれば、Claude Codeにも表示されます。
claude.aiのコネクタを使いたくない場合は、設定のdisableClaudeAiConnectorsをtrueにするか、環境変数ENABLE_CLAUDEAI_MCP_SERVERSをfalseにして起動します。コネクタを個別に止めたいときは、/mcpで、そのプロジェクトに限ってオフにできます。
運用・調整

サーバーをつないだあとの運用で、知っておくと役立つ設定をまとめます。サーバーが増えたときの読み込みの量、待ち時間、出力の上限といった、「つないだのに使いにくい」と感じたときの調整点です。
/mcpでできる操作
会話の中の/mcpは、サーバーの状態を見る画面であると同時に、操作の入口でもあります。
| やりたいこと | 操作 |
|---|---|
| ログインする | サーバーを選んで「Authenticate」 |
| ログインし直す | 「Re-authenticate」。更新用のトークンが拒否されたときの通知で案内される |
| ログイン情報を消す | 「Clear authentication」 |
| つなぎ直す | 「Reconnect」 |
| 失敗したサーバーをまとめて再接続する | /mcp reconnect all(v2.1.284以降) |
| 一時的に止める | サーバーを無効にする(設定は残る) |
| ツールの数・名前を見る | サーバーを選ぶと、ツールの一覧が表示される |
使わないサーバーを止める
サーバーを削除せずに、接続だけを止めることができます。/mcpでオフにすると、設定は残ったまま、Claude Codeがそのサーバーに接続しなくなります。この選択は、プロジェクトごとに~/.claude.jsonへ記録されます。使わない期間のあるサーバーは、削除するより、無効にしておく方が戻しやすくなります。
ツール検索で、読み込む量を抑える
サーバーを増やすと、ツールの定義がClaude Codeの作業スペース(コンテキスト)を使います。この負担を抑える仕組みがツール検索で、初期設定で有効です。起動時には、ツールの名前とサーバーの説明だけを読み込み、必要になったときに詳細を探します。公式ドキュメントでは、サーバーごとのツール数に決まった上限はなく、実際の限界はコンテキストの余裕で決まると説明されています。
挙動は、環境変数ENABLE_TOOL_SEARCHで変えられます。
| 値 | 動き方 |
|---|---|
| 未設定 | すべてのMCPツールを後回しにして、必要なときに読み込む。一部の環境では、自動で最初にすべて読み込む |
true | ANTHROPIC_BASE_URLが公式以外のホストでも、後回しにする(プロキシが対応している場合) |
auto | ツールの定義が、コンテキストの10%未満なら最初に読み込む。10%に達したら後回しにする |
auto:5 | しきい値を5%にする。数字は0から100まで |
false | すべてのツールを、最初に読み込む(検索なし) |
毎回の会話で必ず使うサーバーは、サーバーの設定に"alwaysLoad": trueを書くと、ツール検索の対象から外して、常に読み込めます。使うツールが少ないサーバーにだけ付けてください。最初に読み込むツールが多いほど、会話の作業スペースが減ります。
{
"mcpServers": {
"core-tools": {
"type": "http",
"url": "https://mcp.example.com/mcp",
"alwaysLoad": true
}
}
}
待ち時間の設定
サーバーの起動や、ツールの実行に時間がかかるときは、次の設定を調整します。
| 設定 | 内容 | 初期値 |
|---|---|---|
MCP_TIMEOUT | サーバーの起動を待つ時間(ミリ秒) | 30秒 |
MCP_TOOL_TIMEOUT | ツールの実行を待つ時間(ミリ秒) | 約28時間 |
.mcp.jsonのtimeout | そのサーバーだけの、ツール実行の待ち時間(ミリ秒)。1000未満は無視される | 未設定 |
CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT | 応答も進捗の通知もない状態が続いたときに、打ち切るまでの時間 | ネットワークのサーバーは5分、stdioは30分 |
Claude Codeのメインの会話で、ツールの実行が2分を過ぎると、その呼び出しは自動でバックグラウンドの作業に移ります(v2.1.212以降)。Claudeはすぐに次の作業に進み、結果は完了したときに通知で届きます。実行中の作業は/tasksで見られ、止めることもできます。この秒数はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで変え、0にすると自動のバックグラウンド化を止められます。
出力が大きすぎるとき
ツールの返す結果が大きいと、会話の作業スペースを一気に使ってしまいます。Claude Codeには、次の保護があります。
| 項目 | 内容 |
|---|---|
| 警告 | 1回のツールの出力が1万トークンを超えると警告が出る(固定) |
| 上限 | 初期値は2万5,000トークン。MAX_MCP_OUTPUT_TOKENSで変えられる |
| 上限を超えた場合 | 結果をファイルに保存し、会話にはファイルの場所を載せる。Claudeは必要なときにファイルを読む |
| 文字数での上限 | テキストの結果が5万文字を超えると、トークン数にかかわらずファイルに保存される |
上限を上げる場合は、Claude Codeを起動する前に環境変数を設定します。PowerShellでは、$env:MAX_MCP_OUTPUT_TOKENS = "50000"; claudeのように書きます。ただし、上限を上げると、Claudeが読む量も増えて、使用量が増えます。大きな結果は、そのままファイルに保存させて、必要な部分だけを読ませる方が、効率がよい場合も多くあります。
接続が切れたとき
リモートのサーバーが途中で切れたときは、Claude Codeが、最大5回、1秒から始めて倍々に間隔を空けながら、自動で再接続を試みます。5回失敗すると、失敗として扱われ、「MCP server … disconnected · open /mcp to reconnect」という通知が出ます。stdioのサーバーは、自分のパソコンの中のプログラムなので、自動では再接続されません。/mcpから、手動で再接続してください。
リソース・プロンプトを使う
サーバーが対応していれば、ツール以外に2つの使い方があります。
- リソースの参照:入力欄で
@を打つと、ファイルと並んでサーバーのリソースが候補に出ます。@github:issue://123のように、サーバー名とリソースの場所を指定します。1つの依頼に、複数を並べることもできます。 - プロンプトの実行:
/を打つと、サーバーが用意した依頼の型が、/mcp__サーバー名__プロンプト名の形で出ます。引数は、スペースで区切って後ろに並べます(例:/mcp__github__pr_review 456)。
サーバーが、作業の途中で入力を求めてくることもあります(エリシテーション)。フォームを表示するか、ブラウザで開くURLを案内するかのどちらかで、設定は要りません。表示された画面に答えれば、サーバーに戻されます。
サブエージェントだけにサーバーを使わせる
特定の仕事を任せるサブエージェントにだけ、サーバーを使わせることもできます。サブエージェントの定義ファイルのmcpServersに、サーバーを書きます。
---
name: browser-tester
description: Playwrightで、実際のブラウザで機能を確認する
mcpServers:
# その場で定義:このサブエージェントだけで使える
- playwright:
type: stdio
command: npx
args: ["-y", "@playwright/mcp@latest"]
# 名前で参照:設定済みのサーバーを使う
- github
---
公式ドキュメントでは、メインの会話にツールの説明を載せたくないサーバーは、.mcp.jsonではなく、サブエージェントの中に書くと、メインの会話の作業スペースを使わずに済むと説明されています。サブエージェントの作り方は、サブエージェントの記事で解説しています。
Claude Code自体をMCPサーバーにする
逆向きの使い方もあります。claude mcp serveを実行すると、Claude Code自体が、他のアプリから使えるMCPサーバーになります。Claude Desktopの設定ファイルに、次のように書くと、Claude DesktopからClaude Codeの道具(ファイルの読み書きなど)を使えます。
{
"mcpServers": {
"claude-code": {
"type": "stdio",
"command": "claude",
"args": ["mcp", "serve"],
"env": {}
}
}
}
claudeにPATHが通っていないと、spawn claude ENOENTというエラーになります。その場合は、commandに、claudeの実行ファイルのフルパスを書きます。このサーバーが渡すのはClaude Codeの道具だけなので、個々の操作の確認は、呼び出す側のアプリが行います。
権限・安全

MCPは、Claude Codeに外部のサービスを読み、操作させる仕組みです。便利な反面、つなぐものや許可の範囲を誤ると、意図しない変更や、情報の流出につながります。公式のセキュリティのページでは、自分で作ったサーバーか、信頼できる提供元のサーバーを使うことが推奨されています。Anthropicは、ディレクトリに載せるコネクタを審査しますが、MCPサーバーのセキュリティ監査や運用はしないとも書かれています。
許可ルールの書き方
MCPのツールも、Claude Codeの許可ルールで制御できます。ルールには、設定ファイルのサーバー名(claude mcp addで付けた名前)を使います。
| ルール | 対象 |
|---|---|
mcp__puppeteer | puppeteerサーバーの全ツール |
mcp__puppeteer__* | 同じく、puppeteerサーバーの全ツール(ワイルドカードの書き方) |
mcp__puppeteer__puppeteer_navigate | puppeteerサーバーのpuppeteer_navigateツールだけ |
mcp__github__get_* | githubサーバーの、名前がget_で始まるツール |
許可と拒否は、設定ファイル(settings.json)のpermissionsに書きます。次の例は、GitHubサーバーのget_で始まるツールを確認なしで許可し、ブラウザ操作のサーバーを使えなくするものです。
{
"permissions": {
"allow": ["mcp__github__get_*"],
"deny": ["mcp__playwright"]
}
}
拒否のルールは、"mcp__*"と書けば、すべてのMCPツールをまとめて止められます。MCPを一時的に使わせたくないときの書き方です。
書き方の決まりを3つ挙げます。
- 許可ルールのワイルドカードは、
mcp__サーバー名__という、固定の文字のあとにだけ使えます。"*"や"mcp__*"のような、サーバー名を含まない許可ルールは警告が出て、何も許可しません。 - 拒否・確認のルールは、
mcp__*のように、サーバー名の位置にもワイルドカードを書けます。 mcp__で始まるルールに、括弧で条件を付けることはできません。設定ファイルに書くと、そのルールは読み飛ばされ、起動時の画面とclaude doctorに表示されます。ツールの引数で絞りたいときは、--disallowedToolsの拒否ルールを使います。
ツールの名前は、サーバーの種類によって形が違います。
| サーバーの種類 | ツールの名前の形 |
|---|---|
| 自分で追加したサーバー | mcp__サーバー名__ツール名 |
| claude.aiのコネクタ | mcp__claude_ai_サーバー名__ツール名 |
| プラグインが持つサーバー | mcp__plugin_プラグイン名_サーバー名__ツール名 |
サブエージェントのtoolsや、フックの対象指定でツールを指す場合も、この名前を使います。プラグインのサーバーを、サーバー名だけのmcp__サーバー名__.*で指定すると、フックは動きません。
リスク・対策
| リスク | 何が起こるか | 対策 |
|---|---|---|
他人のリポジトリの.mcp.json | サーバーとして、知らないプログラムが起動される | 承認の画面で中身を確認する。信頼できない場合は承認しない |
| プロンプトインジェクション | 読み込んだ文書やWebページに仕込まれた指示に、Claudeが従う | 外部の内容を読むサーバーは、書き込み系のツールを承認制にする |
| 権限が広すぎる | 意図しない更新や削除が起こる | 許可の範囲を絞る。読み取り専用のDBユーザーなどを使う |
| 設定ファイルに残った認証情報 | リポジトリを通じて、キーが共有される | ${変数名}で環境変数を参照する |
| 提供元による変更 | サーバーのツールの内容を、提供元があとから変えられる | 信頼できる提供元だけを使う。使わなくなったら削除する |
公式のセキュリティのページでは、.mcp.jsonを見るだけでは、セッションが読み込むサーバーのすべては分からないと注意されています。ほかのスコープ、claude.aiのコネクタ、プラグインも、サーバーを追加できるためです。一覧は、claude mcp listや/mcpで確認します。
データベースにつなぐ例:読み取り専用で
公式ドキュメントのデータベースの例では、読み取り専用のユーザーで接続することが勧められています。Claudeが実行する問い合わせで、データが書き換わらないようにするためです。
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"
つないだあとは、「先月の売上の合計は?」「注文のテーブルの構成を見せて」のように、自然な言葉で頼めます。/mcpで、このdbの行にチェックが付いていれば、サーバーは起動しています。
本番のデータには、書き込める権限を渡さない
Claude Codeにつなぐデータベースのユーザーは、まず読み取り専用にします。書き込みが必要になっても、本番ではなく、検証用の環境で試してから範囲を広げてください。接続の文字列にパスワードが含まれる場合は、設定ファイルに直接書かず、環境変数で渡す形にしておくと、リポジトリに残りません。
管理者が決める:組織の制限
会社でClaude Codeを使う場合は、個人の判断に任せずに、管理者がMCPの範囲を決められます。公式ドキュメントは、制限の強さに応じた方式を挙げています。
| 方式 | できること | 設定 |
|---|---|---|
| MCPを使わせない | 特定のものを除いて、サーバーを読み込まない | 空のmcpServersを書いたmanaged-mcp.json |
| 固定のサーバーだけ配る | 全員に同じサーバーを配り、他は追加させない | サーバーを書いたmanaged-mcp.json |
| サーバーを配る(追加は自由) | 配ったサーバーに加えて、各自のサーバーも使える | 管理設定のmanagedMcpServers(v2.1.259以降) |
| 承認済みの一覧だけ許す | 許可リストにないサーバーを使えなくする | allowedMcpServersとallowManagedMcpServersOnly: true |
| 禁止するものだけ決める | 危ないサーバーだけを止め、他は許す | deniedMcpServers |
managed-mcp.jsonの置き場所は、WindowsではC:\Program Files\ClaudeCode\managed-mcp.jsonです。管理者権限での書き込みが必要で、会社では、デバイスの管理ツール(グループポリシーやIntuneなど)で配るのが一般的です。ファイルには、全員が読めるため、認証情報を書かないでください。ユーザーごとの値は、${変数名}やOAuthで渡します。
許可リスト・拒否リストでは、サーバーをserverUrl(URL、ワイルドカード可)、serverCommand(stdioの起動コマンド)、serverName(名前)のどれかで指定します。serverNameは、ユーザーが自由に付けられる名前なので、セキュリティの制御としては使えません。実際に動くサーバーを制限したいときは、serverUrlかserverCommandで指定します。
うまくいかないとき

つながらないときや、期待どおりに動かないときは、まず状態の表示(claude mcp listまたは/mcp)を見ます。v2.1.219以降では、接続に失敗したときに、HTTPの状態やサーバーが返したエラーの文面が、状態の横に表示されます。claude mcp get 名前では、同じ内容が「Issue:」の行に出ます。まずここを読んでください。
症状別の対処
| 症状 | 考えられる原因 | 対処 |
|---|---|---|
| /mcpに「No MCP servers configured」と出る | 別のプロジェクトでlocalスコープで追加した。設定ファイルの場所が違う。.mcp.jsonの書き方が不正 | 今のプロジェクトで追加し直すか、--scope userで追加する。場所は~/.claude.jsonと、プロジェクト直下の.mcp.json。claude mcp listの警告で、不正な項目が分かる |
| Failed to connect | URLの間違い、サーバーの停止、トークンの誤り | 横に出たHTTPの状態を読む。curl.exe -I URLで届くかを確かめる。404や405ならサーバーは動いている |
| Connection error | 接続の試行中にエラーが起きた。詳細は表示されない | URLにcurl.exeで届くか、stdioなら起動コマンドを直接実行して確かめる |
| MCP endpoint not found | URLのパス(末尾の部分)が違う | claude mcp get 名前でURLを確かめ、サーバーの案内と比べる。削除して追加し直す |
| Needs authentication | ログインがまだ | /mcpで「Authenticate」。トークン方式なら--headerで渡す |
| 起動のタイムアウト | 初回のnpxのダウンロードなどで、30秒を超えた | MCP_TIMEOUT=60000 claude(PowerShellは$env:MCP_TIMEOUT = "60000"; claude) |
| MCP server … already exists | 同じスコープに同じ名前がある | claude mcp remove 名前で消すか、別の名前にする。複数のスコープにあるときは--scopeで指定する |
| つながるが、ツールが出ない | 必要な環境変数(APIキーなど)が渡っていない | --env キー=値か、.mcp.jsonのenvで渡す。サーバーの案内で、必要な変数を確かめる |
.mcp.jsonを直したのに反映されない | セッションの開始時にだけ読み込まれる。承認を断っている | Claude Codeを終了して開き直す。claude mcp reset-project-choicesで承認をやり直す |
| ブラウザが開かない、ログインに失敗する | OAuthの流れが途中で止まっている | 表示されたURLを手で開く。画面が接続エラーなら、URL全体を貼り戻す |
| 「has a url but no type」と出る | urlがあるのにtypeがない | "type": "http"(またはsse・ws)を足す |
| 「does not support dynamic client registration」 | OAuthの自動登録に対応していない | サーバーの画面でアプリを登録し、--client-idなどで渡す |
| 「is Anthropic-hosted and doesn't support local OAuth」 | Microsoft 365・Gmailなど、claude.aiでしか接続できないサーバー | claude mcp removeで消してから、claude.aiの画面で接続する |
| claude.aiのコネクタが出ない | APIキーなど、別の認証方式で動いている | /statusで確認し、/loginでclaude.aiのアカウントを選ぶ |
| ツールが一覧にあるのに、呼び出せない | ツールの完全な名前が128文字を超えている | /mcpでツールを選び、完全な名前を確認する。サーバー名を短くする |
| サーバー名で警告が出る | workspace・claude-in-chrome・computer-useなどの予約名を使っている | 別の名前に付け替える |
設定は合っているのに失敗するとき
トークンを貼り付けたときに、前後に見えない空白や改行が入ることがあります。Claude Codeは、設定値にこうした空白があると、claude mcp listと/mcpに「Leading or trailing whitespace in: headers.Authorization」のような警告を出します(値そのものは表示されません)。Claude Codeは空白を取り除かず、書いてあるとおりに使うため、設定を直す必要があります。
環境変数を使っている場合は、変数名の綴りと、「空として扱われる認証情報」(前の章の囲みを参照)に当たらないかも確かめます。リモートのサーバーのurlとheadersで、ANTHROPIC_AUTH_TOKENなどを参照していると、空の値が送られて、401になります。
原因を切り分ける順番
症状が表のどれにも当てはまらないときは、次の順で確かめると、原因を絞りやすくなります。
- 状態の表示を見る
claude mcp listか/mcpで、状態と、横に出ているHTTPの状態・エラーの文面を確認します。 - 入口の設定を確かめる
claude mcp get 名前で、URL・コマンド・スコープ・環境変数を確認します。stdioなら、--の付け忘れで、起動コマンドが正しく渡っていないことがあります。 - 別の方法で届くかを確かめるURLに
curl.exeで届くか、stdioのコマンドをターミナルで単体で実行できるかを試します。 - 認証をやり直すログインの期限切れや、権限の不足がないか、
/mcpの「Re-authenticate」で確かめます。 - 削除して、追加し直す設定が混ざっている可能性があるときは、
claude mcp removeで消して、新しい名前で追加します。
よくある質問
claude mcp addと/mcpは、何が違いますか?
claude mcp addは、ターミナルで打って、サーバーの設定を登録するコマンドです。/mcpは、Claude Codeの会話の中で、状態の確認・認証・再接続・無効化をするための画面です。追加はclaude mcp add、運用は/mcpと覚えておくと整理しやすくなります。
サーバーは、いくつまで追加できますか?
公式ドキュメントでは、サーバーごとのツール数に決まった上限はないとされています。実際の限界は、コンテキストの余裕で決まります。ツール検索が初期設定で有効なので、追加するだけで作業スペースが大きく埋まることはありません。使わないものは、無効にするか削除しておくと見通しがよくなります。
追加したサーバーを、他のプロジェクトでも使いたいときは?
スコープは追加するときに決まるため、削除して、--scope userで追加し直します。たとえば、claude mcp remove 名前 --scope localで消してから、claude mcp add --scope user …を実行します。
トークンやAPIキーを、.mcp.jsonに書いてもよいですか?
直接書くのは避けましょう。.mcp.jsonは、リポジトリで共有することが多いファイルです。${変数名}の形で環境変数を参照し、実際の値は各自の環境に置くと、リポジトリにキーが残りません。
サーバーを削除すると、ログイン情報はどうなりますか?
リモートのサーバーをclaude mcp removeで削除すると、Claude Codeが保存していたOAuthのトークンとクライアント登録も、あわせて削除されます。
MCPの機能は、無料プランでも使えますか?
公式のMCPのページには、プランごとの条件は書かれていません。Claude Code自体を使えるプランは、別に決まっています。最新の条件は、Claude Codeの料金の記事と、公式の料金ページで確認してください。
同じサーバーを、Claude Code以外のツールでも使えますか?
MCPは標準規格なので、サーバーの多くは、Claude Desktop・Cursorなど、他の対応ツールからも使えます。公式ドキュメントも、サーバーの案内が他のツール向けに書かれていることを前提に、読み替えの方法を載せています。ただし、設定の書き方や認証の流れは、ツールごとに違います。
クラウドのセッション(Claude Code on the web)でも使えますか?
使えます。リポジトリに.mcp.jsonをコミットしておけば、リポジトリが1つのセッションで読み込まれます。claude.aiのコネクタは、クラウドのホストが渡します。ただし、認証が必要なコネクタは、セッションの中ではなく、claude.aiの画面で接続し直します。
ツールの実行が長くて、止まってしまいます。
ツールの実行を待つ時間は、MCP_TOOL_TIMEOUTか、.mcp.jsonのtimeoutで調整します。応答も進捗の通知もない状態が続いて打ち切られる場合は、CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUTが関係します。メインの会話では、2分を過ぎた呼び出しは、自動でバックグラウンドに移ります。
会社で、MCPを使わせないようにできますか?
できます。管理者が、空のサーバー一覧を書いたmanaged-mcp.jsonを配ると、特定のもの以外のサーバーは読み込まれなくなります。許可リストを使って、承認済みのサーバーだけを許す方法もあります。
自分でMCPサーバーを作れますか?
作れます。公式のmcp-server-devプラグインを入れて/mcp-server-dev:build-mcp-serverを実行すると、用途を聞かれ、HTTPかstdioのサーバーのひな形を作ってくれます。社内で使う場合は、認証と権限の設計を先に決めておきましょう。
まとめ
この記事のまとめ
- Claude CodeのMCPは、外部のツールやデータにつなぐ仕組み。クラウドのサービスはHTTP、自分のパソコンで動かすものはstdioが基本
claude mcp addはターミナルで打つ。追加したら、claude mcp listか/mcpで状態を必ず確認する- スコープは、local(自分だけ・初期値)、project(
.mcp.jsonでチーム共有)、user(全プロジェクト)の3つ。同じ名前はlocalが優先される - 認証は、OAuth・ヘッダーのトークン・headersHelperから選ぶ。キーは
${変数名}で環境変数から渡し、設定ファイルに残さない - サーバーが増えたら、ツール検索、無効化、出力の上限、タイムアウトで調整する。使わないものは削除か無効にする
- 許可ルール(
mcp__サーバー名)、読み取り専用のユーザー、管理者の制限で、範囲を絞る
MCPは、Claude Codeを「手元のファイルだけを見るAI」から「社内のツールにつながって仕事をするAI」に近づける仕組みです。まずは1つのサーバーを、自分のパソコンの中のlocalスコープで、読み取りだけの仕事に使い、結果を確かめてから、共有や書き込みに広げていくのが安全です。
チームで広げる段階では、つなぐサービスの選定、スコープの決め方、認証と権限の設計、管理設定の配布など、決めることが一気に増えます。INTERCREATE JAPANでは、Claude Codeの導入から、MCPを使った社内の仕組みづくりまでをお手伝いしています。
参考・出典
- Connect Claude Code to tools via MCP(Claude Code Docs)
- Connect to MCP servers(Claude Code Docs)
- Control MCP server access for your organization(Claude Code Docs)
- Configure permissions(Claude Code Docs)
- Create custom subagents(Claude Code Docs)
- Security(Claude Code Docs)
- Environment variables(Claude Code Docs)
- Settings(Claude Code Docs)
- What is the Model Context Protocol (MCP)?(Model Context Protocol)
INTERCREATE JAPAN