3行でいうと

  • MCPサーバーは、claude mcp add で足します。つなぎ方は、URLで呼ぶ「http」(リモート向けに推奨)と、手元でプログラムを起動する「stdio」が基本で、「sse」は非推奨と書かれています。
  • 足した設定には3つの範囲があります。自分だけ・このプロジェクトだけ(local、既定)、チームで共有(project、.mcp.json)、自分の全プロジェクト(user)です。同じ名前が複数あるときの優先順位も公式に書かれています。
  • 安全面は「入れる側が信頼を判断する」前提です。公式は、Anthropicは各MCPサーバーのセキュリティ監査も管理もしないと書いています。承認の画面、権限ルール、組織の許可リストはありますが、それで足りるかの判断は使う人に残ります。

この記事は公式ドキュメントを2026年10月16日に読んでまとめたもので、実際に使って確かめた記録ではありません。運営者はClaude Codeを入れていますが、使い心地はこの記事には書いていません。コマンドや設定名は公式に書かれたとおりに写しており、動作確認はしていません。公式の文章は要約の形で取得したため、引用はせず言い換えています。バージョン番号つきの挙動は、公式ページに書かれていた範囲です。

先に結論

MCPとは:道具箱に「外の道具」を足す

MCP(Model Context Protocol)は、AIの道具を外部のサービスとつなぐための公開された共通ルールだと、公式は説明しています。MCPサーバーを足すと、Claude Codeが、課題管理ツール、監視画面、データベースなどのデータを、自分で読んだり操作したりできるようになります。

たとえるなら、道具箱に、外の工具屋さんから借りた道具を足すイメージです(僕らのたとえで、公式の表現ではありません)。

足し方:3種類のつなぎ方

公式ドキュメントに出てくるコマンドは、次のとおりです。

つなぎ方 コマンドの形(公式の例) 向いているもの
http claude mcp add --transport http notion https://mcp.notion.com/mcp URLで公開されているリモートのサーバー。公式は推奨と書いています
stdio claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable -- npx -y airtable-mcp-server 手元のパソコンでプログラムを起動するサーバー
sse claude mcp add --transport sse asana https://mcp.asana.com/sse 古い方式。公式は非推奨と書いています

読むときの注意点を2つ挙げます。

足したあとの確認は claude mcp list で、「Connected」「Needs authentication」「Failed to connect」などの状態が出ます。Claude Codeの中では /mcp が同じ役目です。

範囲:どこで有効になるのか

MCPサーバーの設定には、3つの置き場所(スコープ)があります。

スコープ 有効になる場所 チームで共有 保存先(公式の記載)
local(既定) 足したプロジェクトの中だけ しない ~/.claude.json の、そのプロジェクトの項目
project そのプロジェクトの中だけ git経由でする プロジェクト直下の .mcp.json
user 自分のすべてのプロジェクト しない ~/.claude.json の最上位の mcpServers

指定は --scope local、--scope project、--scope user です(短い形は -s)。公式は、スコープは足すときに決まり、あとから変えるには「消して、足し直す」のだと書いています。

同じ名前が複数あるとき。 公式が書いた優先順位は、local、project、user、プラグインが持つサーバー、claude.aiのコネクタ、の順です。項目は丸ごと使われ、中身は混ぜ合わされません。組織が管理設定の managedMcpServers(v2.1.259以降)で配ったサーバーは、これらより上になると書かれています。

.mcp.json の書き方。 公式の例は、mcpServers の下に名前をつけ、type と url を書く形です。値には ${VAR}(環境変数の値)と ${VAR:-default}(なければ既定値)が使え、共有するファイルにトークンそのものを書かずに済みます。

環境変数の展開と、「空として読まれる」認証情報
  • ${VAR} が使える場所は、command、args、env、url、headers です。未設定で既定値もないときは、${VAR} の文字のまま読み込まれ、claude mcp list が警告を出します。
  • リモートサーバーの url と headers の中では、ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、AWS_BEARER_TOKEN_BEDROCK、HTTPS_PROXY、NPM_TOKEN など、認証情報にあたる変数は、空として読まれると公式は書いています。リポジトリやプラグインが、あなたの認証情報を外部のサーバーへ送らないようにするための仕組みです。API_KEY のような一般的な名前は、普通に展開されます。

認証:ログインのしかたは3通り

公式に書かれている認証の方法を並べます。

  1. OAuth(ブラウザでログイン)。 リモートのhttp/sseサーバーが対象です。足したあと、Claude Codeの中で /mcp を開き、そのサーバーを選んで認証します。トークンは自動で更新され、「Clear authentication」で取り消せます。シェルからは claude mcp login <名前>(SSH先などでは --no-browser)も使えます。サーバーを消すと、保存されたOAuthトークンも消えると書かれています。
  2. 固定のトークン(ヘッダー)。 claude mcp add --transport http secure-api https://api.example.com/mcp --header "Authorization: Bearer your-token" の形です。公式は、このヘッダーをサーバーが拒否したとき、Claude Codeは接続失敗として扱い、OAuthに切り替えない、と書いています。
  3. ヘッダーを作るコマンド(headersHelper)。 接続のたびにコマンドを実行し、出てきたJSONをヘッダーに使います。10秒のタイムアウトがあり、結果は保存されないと書かれています。

このほか、事前登録のコールバック用ポートが要るサーバー向けに --callback-port、クライアント登録に対応しないサーバー向けに --client-id と --client-secret があります。

認証まわりの注意(公式の記載)。

安全面:何が起きうるか、公式はどう備えているか

公式の「Security」ページは、MCPについて、自分で書くか、信頼できる提供元のサーバーを使うことを勧めています。また、Anthropicは、ディレクトリに載せるコネクタを掲載基準で審査するが、各MCPサーバーのセキュリティ監査や管理はしない、と明記しています。MCPページにも、外部の内容を取ってくるサーバーはプロンプトインジェクション(文章の中に紛れ込ませた命令でAIを操ろうとする攻撃)の危険がある、と書かれています。

1. プロジェクトの .mcp.json は、使う前に承認を求められる。 公式は、人からもらったリポジトリが、あなたの同意なしにプログラムを起動できないようにするための承認だと説明しています。承認をやり直したいときは claude mcp reset-project-choices です。

2. ただし、承認の画面が出ない場面がある。 claude -p、Agent SDK、クラウドのセッションは、確認の画面を出せないので、プロジェクトのサーバーを聞かずに読み込むと書かれています。止めたいときは、設定の disabledMcpjsonServers、--setting-sources、--strict-mcp-config などを使います。信頼していないフォルダでは、リポジトリ自身がコミットした設定で承認済みにすることはできず、サーバーは「承認待ち」のままになるとも書かれています。

3. 権限ルールで、使える道具を絞れる。 書き方は、mcp__puppeteer(そのサーバーの全ツール)、mcp__puppeteer__puppeteer_navigate(特定のツール)などです。許可ルールの * は、サーバー名を決めたあとにしか使えず、mcp__* のような全サーバー向けの許可は、警告つきで無視されると書かれています。

4. サーバーの作者が「毎回確認」を要求できる。 サーバーが道具に anthropic/requiresUserInteraction: true を付けると、許可ルールや自動承認のモードがあっても、毎回確認の画面が出ます(dontAsk モードでは拒否)。同意そのものが目的の操作のための仕組みです。

5. 組織の管理。 既定では、Claude Codeを使う人は好きなMCPサーバーにつなげます。組織側は、管理者権限で置く managed-mcp.json で、使えるサーバーを固定できます(空にすれば、ごく一部の例外を除いてMCPを止められます)。ほかに、許可リスト allowedMcpServers と拒否リスト deniedMcpServers があり、serverUrl、serverCommand、serverName で照合します。公式は、serverName は利用者が付けた名前にすぎず、セキュリティの制御にならないと警告しています。実際に動くものを縛るには、serverUrl か serverCommand を使う、と書かれています。許可リストをだれにも上書きさせないための設定は allowManagedMcpServersOnly: true です。

状態表示、タイムアウト、再接続(公式の記載)
  • claude mcp list の状態は、Connected、Needs authentication、Failed to connect、承認待ち、プロジェクトで無効など7種類が、表で説明されています。
  • 起動の待ち時間は既定で30秒で、環境変数 MCP_TIMEOUT(ミリ秒)で変えられます。ツールの実行時間の上限は MCP_TOOL_TIMEOUT で、既定は約28時間と書かれています。
  • リモートサーバーが途中で切れたときは、5回まで自動で再接続します。stdioサーバーは自動では再接続されません。

僕らの見立て:足す前に自分に聞くこと

ここからは僕らの見立てです。公式の記載から組み立てたもので、公式の推奨そのものではありません。足す前に、次の4つを自分に聞いてみます。

  1. 誰が作ったサーバーか。 公式は「信頼できる提供元か自作」を勧めています。サーバー名は自分で付けられるので、名前だけでは分かりません。
  2. 手元でプログラムが動くか(stdio)、URLに話しかけるだけか(http)。 何が自分のパソコンの中で動くのかを、先に把握したいところです。
  3. どの範囲に足すか。 迷ったら既定の local です。userに足すと、すべてのプロジェクトで使える候補になります。
  4. トークンをどこに置くか。 --header に直接書くと履歴などに残りうる、とは公式に書かれていません。これは僕らの推測で、${VAR} で環境変数から読ませる形のほうが扱いやすいのでは、という見立てです。

気をつけること

出典