「このMCP、どこに書けばいいんですか」。Claude CodeにMCPサーバーをつなぐ話になると、まずこの質問が出ます。

つなぐ操作そのものは、コマンド1本で終わります。つまずくのはそのあとです。自分の手元では動くのに、同僚の環境では出てこない。書いたはずの設定が一覧に並ばない。原因は書いた中身ではなく、書いた場所にあることが多いです。

MCP(Model Context Protocol)は、AIとツールをつなぐための公開仕様です(出典: MCP公式)。この記事は、接続設定を置ける3つの場所の違い、名前がぶつかったときの決着のつき方、そして通じたかどうかを確かめる手順を扱います。素材はClaude Code公式ドキュメントとMCP公式の記載です。

検証環境:Claude Code公式ドキュメント(code.claude.com/docs、2026-08-03時点の記載)。

こんなふうに調べていませんか

  • MCPサーバーの設定を書いたのに、一覧に出てこない
  • 自分の手元では動くのに、チームの誰かの環境では動かない

この記事を読み終えたときに手に入るもの

  • 共有したい範囲から、接続設定を置くスコープを選べるようになります
  • 同じ名前がぶつかったとき、どの定義が残るかを説明できるようになります
  • つながったかどうかを、表示だけで判断せずに確かめられるようになります

結論30秒でわかる、この記事の結論

  • 接続設定は、書く中身より先に「どこに書くか」で決まります。置き場所が、そのまま届く範囲になるからです。
  • 同じ名前が別々の場所にあると、勝った側の定義が丸ごと使われます。負けた側は一部も引き継がれません。
  • 書いた時点では、まだつながっていません。状態表示を読み、そのサーバーのツールを実際に呼ぶまでが設定です。
接続設定は、置き場所を決めるところから始まります書式より先に、決めておくものがあります接続設定は、置き場所を決めるところから始まります手順1届け先を決める自分だけか、チーム全員か手順2書き方を選ぶ行き先を書くか、起こし方を書くか手順3呼べたか見る表示を読み、実際に使わせる鈴木さん書式より先に、決めておくものがあります
接続設定は、置き場所を決めるところから始まります — 書式より先に、決めておくものがあります

進行役は3人です。若葉さんが言葉の側から、高梨課長が自分の手で動かす側から聞き、鈴木さん(本誌監修)が答えます。

01MCPの接続設定って、AIエージェントに何を触らせる作業なんですか?

若葉さん
若葉さんの発言

MCPを設定すると、何ができるようになるんでしょうか。

鈴木さん
鈴木さんの発言

建物に通用口を1つ足すようなものだと思っています。AIがいる部屋から、外のツールやデータベースへ出入りできる口を作る。どの口を開けるかは、こちら側が決めます。

MCPサーバーをClaude Codeへ接続すると、外部のツールやデータベースへ直接アクセスできるようになります。MCPは、AIとツールをつなぐための公開仕様です(出典: MCP公式)。

接続設定と呼んでいるのは、その通用口をどこに書き残すかを決める作業です。書く内容自体は、サーバーの名前と、つなぎ方と、行き先くらいしかありません。分量としては短い設定です。

それでも独立した工程として扱うのは、置き場所が3つあり、どれを選ぶかで「誰の環境で読み込まれるか」が変わるからです。中身がまったく同じでも、置き場所が違えば結果は違います。

02MCPの接続設定は、AIエージェントの共有範囲でどう選び分けるんですか?

置き場所は3つあります。誰と共有するかと、保存先のファイルが違います(出典: Claude Code公式ドキュメント)。

スコープ保存先チーム共有読み込まれる範囲
ローカル(既定)~/.claude.json(プロジェクトごとの欄)されないそのプロジェクトのみ
プロジェクト.mcp.json(プロジェクトのルート)される(バージョン管理経由)そのプロジェクトのみ
ユーザー~/.claude.json(トップレベル)されない自分の全プロジェクト

3つを見比べるより、2つの問いに答えるほうが早く決まります。この設定を自分だけが使うのか、チームへ配るのか。そして、このプロジェクトの中だけで効かせたいのか、手元のどのプロジェクトでも効かせたいのか。

置き場所を、届く先で並べ直す空いている区画には、この3つのどれも当たりません置き場所を、届く先で並べ直す空いている区画には、この3つのどれも当たりませんローカル(既定)手元の設定ファイルに残る。指定しないときの行き先プロジェクトリポジトリに乗せ、コードと一緒に運ぶユーザー手元の設定ファイル。案件をまたいで効くこの3つには無いプラグインやコネクタが、下の層で続く上:この案件の中だけ / 下:手元のどの案件でも左:自分の手元にとどまる / 右:リポジトリで全員へ渡る
置き場所を、届く先で並べ直す — 空いている区画には、この3つのどれも当たりません

置き直すと、表では見えないものが見えます。3つのどれも当たらない区画があることです。バージョン管理で全員へ配り、しかも各自の全プロジェクトで効く、という置き場所は、この3つの中には出てきません。

その位置に近い役割は、3スコープの下に続くプラグイン提供のサーバーやコネクタが担います。この記事は、開発者が自分で書く3つに絞って進めます。

この章のまとめ

置き場所は「誰に届けるか」と「どこで効かせるか」の2つで決まります。書式の話は、そのあとです。

03同じ名前の接続設定がぶつかると、AI社員はどちらを使うんですか?

同じ名前のサーバーが複数の場所に定義されていても、Claude Codeが採用するのは1つだけです。順位は決まっています(出典: 同)。

  1. ローカルスコープ
  2. プロジェクトスコープ
  3. ユーザースコープ
  4. プラグイン提供のサーバー
  5. claude.aiコネクタ
見つかった時点で、探すのをやめる後ろに同じ名前があっても、もう見に行きません見つかった時点で、探すのをやめる後ろに同じ名前があっても、もう見に行きません1手元だけローカル2この案件プロジェクト3全案件ユーザー4拡張ぶんプラグイン5外部の口コネクタ鈴木さん先に当たったものが丸ごと使われます。後ろの定義は、部分的にも混ざりません
見つかった時点で、探すのをやめる — 後ろに同じ名前があっても、もう見に行きません

見落とされやすいのは、順位そのものより決着のつき方です。勝った側の定義が丸ごと採用され、負けた側の同名定義はフィールド単位でも一切引き継がれません(出典: 同)。

キーごとに値を合算していくsettings.jsonの階層とは、仕組みが違います。settings.jsonの感覚のまま「片方に足りない項目は、もう片方から補われる」と読むと、取り違えます。

たとえばdbという名前のサーバーを、ローカルとプロジェクトの両方に別のURLで定義したとします。

スコープ定義内容の例実際に使われるか
ローカルpostgresql://staging...宛の接続使われる(優先順位1位)
プロジェクトpostgresql://prod...宛の接続使われない(フィールドごと破棄)

このとき動くのはローカルの定義だけです。プロジェクト側に書いたurlもheadersも残りません。

04接続設定を書き始める前に、AI導入の担当者は何を確かめるんですか?

書き始める前に見ておくものが4つあります。

確認すること確認方法見るポイント
Claude Codeのバージョンclaude --version古いバージョンでは--scopeの呼び方が違う
いま居るディレクトリpwd.mcp.jsonはプロジェクトのルートに作る
ワークスペース信頼初回起動時のダイアログ未承認のままだとプロジェクトスコープのサーバーが動かない
サーバー側の認証方式接続先の提供元ドキュメントOAuthかヘッダー認証かで手順が変わる
書き始める前に、埋めておく欄空いたままの欄が、あとで止まる場所になります書き始める前に、埋めておく欄空いたままの欄が、あとで止まる場所になります使っている版を控える呼び名そのものが変わっていることがあるいま居る場所を確かめる共有用のファイルは、案件のいちばん上に置く作業場所そのものを信頼する通していないと、共有側の定義が動かない相手側の認証のしかたを読むサインインが要るかどうかで、手順が枝分かれする
書き始める前に、埋めておく欄 — 空いたままの欄が、あとで止まる場所になります

スコープの呼び名は、過去のバージョンで違っていました。いまの「ローカル」は旧称「project」、いまの「ユーザー」は旧称「global」です(出典: 同)。

やっかいなのは、旧称の「project」が、いまの「プロジェクト」とは別のものを指している点です。古い解説を読むときは、呼び名ではなく保存先のファイル名で照合すると取り違えません。

05自分だけが使うMCPは、どのコマンドでAIエージェントに追加するんですか?

--scopeを省略すると、接続設定は既定でローカルスコープへ書き込まれます(出典: 同)。

# 基本形(HTTPサーバー)
claude mcp add --transport http notion https://mcp.notion.com/mcp

このコマンドは、実行したディレクトリのプロジェクトパスに紐づけて~/.claude.jsonへ書き込みます(出典: 同)。

// ~/.claude.json(実行したプロジェクトのpath配下)
{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "notion": {
          "type": "http",
          "url": "https://mcp.notion.com/mcp"
        }
      }
    }
  }
}

手元でプロセスとして動くサーバーは、stdio方式で追加します。起動コマンドと引数は--のあとに書きます。

claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
  -- npx -y airtable-mcp-server
行き先を渡すか、起こし方を渡すか同じ追加でも、手渡すものが違います行き先を渡すか、起こし方を渡すか同じ追加でも、手渡すものが違います外で動いているものへつなぐつなぎ方と行き先を手渡す相手はこちらの外で動いている鍵は見出しに載せることが多い綴りを取り違えても、書式としては通ってしまいます手元でプロセスを起こす起こす合図は区切りのあとへ区切りを落とすと引数を取り違える渡す値は名前と値の組で並べる起こし方は、その人の環境に寄りかかります
行き先を渡すか、起こし方を渡すか — 同じ追加でも、手渡すものが違います

--を書き忘れると、サーバー側のオプションをClaude Code自身のオプションとして誤って解釈します(出典: 同)。--envKEY=valueの形で、必要な数だけ並べられます。

手元のどのプロジェクトでも同じサーバーを使いたいときは、--scope userを付けます。

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

06チームで配るMCP接続設定は、AI社員を動かす全員にどう届けるんですか?

高梨課長
高梨課長の発言

チーム全員へ同じ設定を配りたいのですが、手順書を回すしかないでしょうか。

鈴木さん
鈴木さんの発言

--scope projectを付けると、リポジトリに乗る形のファイルになります。設定がコードと一緒に配られるので、手順書の更新漏れが起きにくくなります。

高梨課長
高梨課長の発言

受け取った側は、そのまま使える状態になりますか。

鈴木さん
鈴木さんの発言

そこはもう1段あります。配られてくることと、使ってよいと認めることは別に扱われています。

チームで同じ接続設定を使うときは--scope projectを付けます。

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

生成される.mcp.jsonはプロジェクトのルートに置かれ、バージョン管理へコミットして配ります(出典: 同)。

// .mcp.json(プロジェクトのルート)
{
  "mcpServers": {
    "shared-server": {
      "type": "http",
      "url": "https://example.com/mcp"
    }
  }
}

配る形にした時点で、性質が1つ変わります。この中身は、リポジトリを見られる全員の目に触れます。次の章の書き方が要るのは、そのためです。

07APIキーを直に書かずに、AIエージェントのMCP接続設定を配れますか?

配れます。値そのものではなく、値の名前だけを書く方法があります。書式は${VAR}${VAR:-既定値}の2種類です(出典: 同)。

{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}
配るファイルに、値そのものを書かない置くのは値ではなく、値の呼び名です配るファイルに、値そのものを書かない置くのは値ではなく、値の呼び名です値をそのまま置く鍵が本文として残る読める人の範囲が、そのまま広がる消しても、たどれる形で残り続ける配る相手を選べない置き場所です呼び名だけを置く中身は各自の手元から入る既定の行き先を添えておける呼び名が空でも読み込みは通る止まらないぶん、警告を見る癖が要ります
配るファイルに、値そのものを書かない — 置くのは値ではなく、値の呼び名です

展開できる場所はcommandargsenvurlheadersです(出典: 同)。外から渡したい値が入りやすいところが押さえられています。

気をつけたいのは、失敗の見え方です。変数が未設定で既定値も無い場合でも、設定は読み込まれます。展開されなかった${API_KEY}という文字列がそのまま使われ、claude mcp listに警告が出るだけです(出典: 同)。

つまり、エラーで止まってはくれません。認証に失敗した理由を接続先のせいだと思い込むと、警告を見落としたまま時間を使うことになります。

08MCPの接続設定を承認したのに使えないのは、エージェント側の何が原因ですか?

.mcp.jsonに書かれたサーバーは、使う前にClaude Code側の承認を求められます(出典: 同)。書いてある、イコール、すぐ動く、ではありません。

配られた設定が、使える状態になるまで届くことと、使ってよいと認めることは別です配られた設定が、使える状態になるまで届くことと、使ってよいと認めることは別です1共有ファイルが手元へ届くコードと一緒に運ばれてくる2作業場所そのものを信頼するここを通さないと、次の答えが読まれない3使ってよいと答えるこの答えは、配れない側にだけ残る4答えを取り消して選び直すやり直すための入口が別に用意されている
配られた設定が、使える状態になるまで — 届くことと、使ってよいと認めることは別です

ここで効いてくるのが、承認の記録がどこから読まれるかです。v2.1.196から、この承認はバージョン管理にコミットされていない設定からしか読まれません。対象になるのは、自分のユーザー設定や、信頼済みフォルダの.claude/settings.local.jsonなどです(出典: 同)。

裏返すと、プロジェクトへコミットした.claude/settings.json側に承認を書いても、ワークスペース信頼を通すまでは無視されます。クローン直後のリポジトリは、この意味で自分自身をまだ承認できません(出典: 同)。

承認をやり直したいときはclaude mcp reset-project-choicesを使います。

claude mcp reset-project-choices

この章のまとめ

承認は、リポジトリの中へ配れない種類の記録です。配れる設定と、配れない同意を分けて考えると、動かない理由を探しやすくなります。

09AIエージェントにMCPを繋いだあと、接続設定が効いたかはどこで分かるんですか?

高梨課長
高梨課長の発言

一覧に成功の印が出ていれば、もう使える状態と考えていいでしょうか。

鈴木さん
鈴木さんの発言

そこは分けています。表示が教えてくれるのは「つながった」までで、「呼べた」までは教えてくれません。最後に1回、実際に使う指示を出すところまでを確認に入れています。

設定ファイルを書いただけでは、接続が成立したとは限りません。確かめる入口は3つあります。

# 一覧と簡易ステータス
claude mcp list

# 個別サーバーの詳細
claude mcp get shared-server

# セッション内で対話的に確認する
/mcp

claude mcp listは、サーバーごとに次のいずれかの状態を表示します(出典: 同)。

表示意味次にすること
✔ Connected接続成功そのまま使う
! Needs authenticationOAuth未認証/mcpでサインイン、またはclaude mcp login <名前>
✘ Failed to connect接続失敗URL・認証情報・起動コマンドを見直す
⏸ Pending approvalプロジェクトスコープが未承認claudeを対話起動して承認する
同じ「使えない」でも、直す先が違う表示が、仕分けを先にやってくれます同じ「使えない」でも、直す先が違う表示が、仕分けを先にやってくれますつながった呼べるか試すここからが本当の確認認証が残るサインインへ対話で済ませてから戻る届かない行き先を疑う鍵の受け渡しも一緒に見る答え待ち使ってよいと返す対話で起動して選ぶ
同じ「使えない」でも、直す先が違う — 表示が、仕分けを先にやってくれます

同じ「使えない」でも、表示が違えば直す場所が違います。認証が残っているのか、そもそも届いていないのか、承認が済んでいないのか。表示は、その仕分けを先にやってくれます。

そのうえで、次の項目を確認します。

  • claude mcp listに追加したサーバー名が表示されている
  • ステータスが✔ Connectedになっている(OAuthサーバーは/mcpでサインインを済ませたあとに確認する)
  • プロジェクトスコープの場合、⏸ Pending approvalのままになっていないか確認した
  • そのサーバーのツールを使う指示を実際に出し、外部システムから応答が返ってきた

最後の項目を省かないでください表示だけを見て終えると、つながっているように見えて、実際には何も呼べていない状態を見逃します。

✘ Failed to connectのまま動かないときは、URLの打ち間違いより先に、認証ヘッダーやAPIキーの環境変数展開を疑うほうが早く着きます。

10MCPの接続設定でAI活用がつまずくのは、どんなところですか?

若葉さん
若葉さんの発言

気をつけるとしたら、どのあたりでしょうか。

鈴木さん
鈴木さんの発言

名前が似ているところです。設定まわりは似た言葉が多いので、別のものを同じだと思ったまま進んでしまうことがあります。

「ローカルスコープ」と.claude/settings.local.jsonを同じものだと思う。MCPのローカルスコープは~/.claude.jsonに保存されます。一般の権限設定が入る.claude/settings.local.jsonとは別のファイルです(出典: 同)。「ローカル」という呼び名は同じでも、指している実体が違います。

環境変数の展開ミスに気づかない。前の章のとおり、未設定でもエラーにはなりません。claude mcp listの警告を見落とすと、止まった原因が分からなくなります。

stdioサーバーの--を忘れる。サーバー起動コマンドの--portのようなオプションを、Claude Code自身のオプションとして解釈させてしまいます。

3つに共通しているのは、どれも設定を書いている画面の中では気づけないことです。書けてしまうし、保存もできてしまいます。おかしいと分かるのは、たいてい動かしてからです。

11MCPの接続設定を許可リストへ載せるとき、生成AIの権限ルールは何が違うんですか?

もう1つ、書けてしまうのに効かない書き方があります。権限ルールでサーバー単位をまとめて許可しようとして失敗する形です。

denyとaskのルールはmcp__*のようにサーバー名を伏せた形も書けますが、allowルールは違います。mcp__<サーバー名>__という具体名のあとにしか、ワイルドカードを置けません(出典: Claude Code公式ドキュメント「Permissions」)。

止める側と通す側で、省ける範囲が違う同じ書式に見えて、向きが変わると書けません止める側と通す側で、省ける範囲が違う同じ書式に見えて、向きが変わると書けません止める・確認する側相手の名前を伏せたまま書けるまとめて網を張れる広く掛けても安全な側へ倒れる広く書いて増えるのは、確認の手間だけです通す側相手の名前を出してから絞る名指しの後ろでしか省略できないまとめて開ける書き方は無い開ける範囲は、いつも名指しから始まります
止める側と通す側で、省ける範囲が違う — 同じ書式に見えて、向きが変わると書けません

止める側は広く網を張れて、通す側は名指しでしか書けない、という向きの違いになっています。安全な側へ倒れる作りなので、許可を書くときだけ手数が増えます。

接続したMCPサーバーのツールを許可リストへ載せる書き方は、Claude Codeの権限設定|AIエージェントに任せる範囲と3列の配分で扱っています。

12よくある質問

ローカルスコープとユーザースコープ、個人用途ならどちらを選べばよいですか

1つのプロジェクトだけで使うならローカル、複数のプロジェクトをまたいで使うならユーザーを選びます。ローカルの接続設定は、プロジェクトを跨いで引き継がれません。別のプロジェクトで同じサーバーを使いたくなったときに、また同じコマンドを打つことになります。どのプロジェクトでも呼ぶようなサーバーは、はじめからユーザー側へ置いておくほうが手間が少なくて済みます。

.mcp.jsonにAPIキーを直接書いても大丈夫ですか

バージョン管理にコミットするファイルなので避けます。環境変数展開の${API_KEY}のような書式を使い、値そのものは.mcp.jsonに書きません。リポジトリを見られる人の範囲が、そのまま鍵を見られる人の範囲になってしまうためです。すでに書いてしまった場合は、書式を直すだけでなく、その鍵を使い続けてよいかも合わせて判断してください。

同じ名前のサーバーを同じスコープに追加しようとするとどうなりますか

失敗します。同一スコープ・同一名でclaude mcp addを実行すると「already exists」というエラーが返り、既存の設定は上書きされません。書き換えたいときは、いまの定義を外してから入れ直します。なお、スコープが違えば同じ名前でも両方が存在できてしまい、そのときは採用順位のほうで決着します。

OAuth認証が必要なサーバーは、非対話モードでも接続できますか

/mcpパネルを開けない非対話実行では、その場でサインインできません。事前に対話セッションで/mcpclaude mcp login <名前>を実行し、認証を済ませておきます。自動実行の中で初めてそのサーバーを使うと、認証待ちのまま進まないことになります。定期実行へ組み込む前に、対話セッションでつないでおくのが安全です。

設定を書いたのに一覧へ出てこないときは、どこから見ればよいですか

まず、どのディレクトリでコマンドを実行したかを確認します。ローカルスコープはプロジェクトのパスに紐づくため、別の場所でclaude mcp listを叩くと出てきません。次に、.mcp.jsonへ書いた場合はワークスペース信頼と承認の状態を見ます。ファイルの中身よりも、読み込まれる条件のほうが原因になりやすいところです。

つなぐMCPサーバー自体は、どう選べばいいですか

接続設定の書き方とは別の判断になります。どんな権限を渡すことになるのか、提供元がどこなのかを先に見ます。選び方の観点はMCPの選び方|AIエージェントに任せる範囲から見る5軸にまとめています。実際のサーバーを1つ通して動かす流れはPlaywright MCPはどこまで動くか|認証4パターンと権限設計で公開しています。

13まとめ|今日やる3つのこと

置き場所は、共有したい範囲から決めました。名前がぶつかったときは、勝った側が丸ごと使われました。そして、書いた設定は呼べるまで確かめない、という順番でした。

今日この順で手をつけます

  1. つなぎたいサーバーを、自分だけで使うのかチームへ配るのかで仕分ける

    ここが決まらないと、書くファイルも決まりません

  2. 自分用の1つを--scopeなしで追加して、claude mcp listの表示まで見る

    既定のスコープの挙動を先に体で覚えられます

  3. そのサーバーのツールを使う指示を実際に出して、応答が返るところまで確認する

    表示が緑でも、呼べていないことがあります

AI検索では、こう聞かれています

  • MCPの接続設定は、どこに書けばいいんですか?

    「MCPの接続設定は、AIエージェントの共有範囲でどう選び分けるんですか?」の章で扱っています

  • 同じ名前のMCPサーバーを別々の場所に書いたら、どちらが使われるんですか?

    「同じ名前の接続設定がぶつかると、AI社員はどちらを使うんですか?」の章に採用順位があります

  • .mcp.jsonにAPIキーを書かずに配れますか?

    「APIキーを直に書かずに、AIエージェントのMCP接続設定を配れますか?」の章で説明しています

  • MCPをつないだのに使えないのは、何が原因ですか?

    「MCPの接続設定を承認したのに使えないのは、エージェント側の何が原因ですか?」の章で扱っています

次に読むなら、この記事です