第14回 外部連携の全て ─ MCP vs 直接API
Claude Codeを外の世界とつなぐ2つの道、MCPと直接APIを正直に比較する。「MCPは繋ぐだけでコンテキストを食う」がツール検索の既定化でどう変わったか(68ツールで0トークン)を実測で示し、残るトレードオフは制御性であることを整理する。Claude Codeの使い方コース 第14回。
外部連携の全て
第14回スタート。Claude Codeを「外の世界」とつなぐ話。今日のゴールは2つ。①外とつなぐ2つの道(MCPと直接API)を知る ②自分はどっちを選ぶか判断できるようになる。便利さと正直な比較の回。
応援お願いします!
共通テンプレート(src/deck-shared.tsx の CtaSlide)。高評価・チャンネル登録・メンバーシップ・noteメンバーシップのお願い。内容はテンプレート側で一括管理。
そもそも外部連携とは
Claude Code単体はこのPCの中だけで完結している。カレンダー・メール・Todo・GitHub・Notionなど外のサービスとつなぐと、一気に「秘書」になる。たとえ=助手に外線電話と社外の鍵を渡すイメージ。つなぎ方には2つの道がある、という前振り。
MCPとは何か
1つ目の道がMCP(Model Context Protocol)。AIと外部サービスをつなぐための共通規格。たとえ=USB-Cの差し込み口。MCPサーバーを足すと、Claude Codeがそのサービスのツールを自動で発見して使えるようになる。業界標準として対応サービスが増えてきている。
MCPの使い方は驚くほど簡単
入り口は2つあると分けて話す。①自分で入れる=「claude mcp add サーバー名」、または「◯◯のMCPを繋いで」と頼むだけ。例=Notion / GitHub / Google Calendar / Slack。②プラグインが連れてくる=プラグインを入れると、その中の `.mcp.json` に書かれたMCPサーバーが一緒に入る。ここが今回の追加ポイントで、**1プラグイン=1サーバーではない**。実例は自分の環境。`claude mcp add` を一度も使っていないのに、プラグイン経由で4サーバー入っていた。`azure-skills` 1つが azure・context7・foundry-mcp の3個を持ち込み、context7 は別に入れた context7 プラグインと**重複**していた。見分け方は名前で、`plugin:プラグイン名:サーバー名` の形になる。棚卸しは `/mcp`。要らないサーバーはトグルで個別にオフにできる(プラグインごと消さなくてよい)。注意1つ、プラグイン由来には認証が要るものが混ざる(自分の環境では foundry-mcp が未認証のまま放置されていた)。使う瞬間に初めて気づくので、入れたら `/mcp` を一度見る癖をつける。手軽さの副作用が「知らないうちに増える」こと。
もう一つの道 ─ 直接API
2つ目の道。Claude Codeはターミナルで動く=シェルもPythonも実行できる。だからcurlやrequestsでAPIを直接叩ける。「このAPIを叩くスクリプトを書いて」と頼むだけ。一度書けばコマンド一発、第13回のスキルでラップすれば繰り返し使える。たとえ=自分専用の道具を一本作る。MCP=道具を渡す / 直接API=自分で道具を使う。
トレードオフ① コンテキスト
ここが今回いちばん更新した部分。ネット上でよく見る「MCPは繋ぐだけでコンテキストを食う」は、2026年7月現在のClaude Codeでは**既定では起こらない**。ツール検索(tool search)が既定で有効になり、MCPツールのスキーマは遅延読み込みされる。セッション開始時に載るのはツール名とサーバー説明だけ。実測:同じAzure MCP(`@azure/mcp`・68ツール)で、昔の全スキーマ先読み=83,301文字・約24,000トークン → 今=ツール名773文字+サーバー説明2,048文字(2KBで切られる)=約800トークン。96.6%減。だから `/context` は「68 tools · 0 tokens」と出る(遅延されたツール定義はシステムプロンプトに載らない)。ただし**ゼロではない**と必ず言う。①サーバー説明は常時載る ②Claudeがそのツールを使う瞬間にスキーマが会話へ展開される(1本あたり約1,000〜2,400文字)③`alwaysLoad:true` を付けたサーバーや `ENABLE_TOOL_SEARCH=false` では従来どおり全部先読みされる。この回の締めに繋げるメッセージは「コンテキストはもうMCPを避ける主な理由ではなくなった」。
トレードオフ② 安定性と制御
もう1つの軸。MCPは認証(OAuthトークンの更新失敗など)や、サブエージェントから呼べない問題が起きることがある。直接スクリプトはトークンも実行も自分で管理=完全に制御できる。サブエージェントからもBash経由で確実に動く。手間はかかるが、壊れにくく自分でコントロールできる。
正直に告白します
信頼を勝ち取る回。私は実際にMCPを全部やめて、外部連携をすべて直接APIスクリプトに移行した。理由は、私の使い方が「毎日同じ操作を繰り返す」自動化中心だから。ここで**時期を正直に言う**のが今回の肝。移行を決めた当時はツール検索がなく、繋ぐだけで本当に重かった。だから理由の半分はコンテキストだった。その理由は今もう弱い。それでも直接APIを使い続けているのは、トレードオフ②(認証と実行を自分で握れる・サブエージェントからも確実に動く)のほうが自分には効いているから。「古い理由を今も理由として語らない」という姿勢そのものが、この回で一番伝えたい誠実さ。
でもMCPが悪いわけじゃない
フェアに。MCPが向く場面=色々なサービスをとりあえず繋いで試す探索フェーズ/公式サーバーが充実している連携/自分でスクリプトを書かない・たまにしか使わないので動的なツール発見が活きるとき。向かない=毎日使う軽量API、認証や実行を自分で握りたいとき。**「コンテキスト節約が最優先のとき」は理由から外した**(ツール検索で前提が変わったため)。大事なのは優劣でなくトレードオフを理解すること。
どっちを選ぶ?判断の物差し
判断基準をシンプルに。繰り返す・決まった操作→直接API+スキル(制御性。認証も実行も自分で握れる)。手軽に色々試したい・たまにしか使わない→MCP(追加の速さ)。締めの言い方を変えた点に注意:以前は「コンテキストと相談して選ぶ」だったが、ツール検索でコンテキスト差がほぼ消えたので**「どこまで自分で握りたいかで選ぶ」**にした。
ここで手を動かす
実演パート。題材はAzure MCP(`@azure/mcp`・68ツール)。狙いは「ツール検索が何を節約しているか」を目で見せること。①Azure MCPを繋いだ状態で `/context` を打つ=`MCP tools · 68 tools · 0 tokens` が出る。ここで「68個ぶら下がっているのに0」を強調する ②`/mcp` で68ツールが実在することを見せる(0だからといって繋がっていないわけではない)。ここで一覧に `plugin:azure:azure` のようなプラグイン由来の名前が並んでいるのも見せる=自分で追加していないサーバーが実際にいる③先読みに戻す=`ENABLE_TOOL_SEARCH=false claude` で起動し直して `/context`=約24,000トークン載る。これが昔の姿で、ツール検索が消してくれている分 ④直接APIの対比=az CLIを叩くスクリプト1本が数百トークンで同じ仕事をすることを見せる。撮影の注意3点。(a) `npx -y @azure/mcp@latest` は初回ダウンロードが走るので本番前に一度起動してキャッシュを温める。(b) ツールを実際に呼ぶとテナント/サブスクリプションの認証に行くので、デモは `/context` の比較で止める(JBSテナントの情報を画面に出さない)。(c) ③は別ターミナル・別セッションで起動する。同じセッションでは環境変数が効かない。
今日のまとめ
外部連携には2つの道。MCP=差すだけで使える手軽さ。そして「繋ぐだけでコンテキストを食う」はツール検索が既定になった今もう古い(68ツールで0トークン)。直接API+スキル=手間はかかるが認証も実行も自分で握れる。私は直接APIに全面移行したが、その決め手だったコンテキストの理由は今は弱い。優劣でなくトレードオフ。自分の使い方で選ぶ。
次回予告
次回は第15回「第2の脳 & 私の実際の使い方」。概念と実践を1本で。CLAUDE.mdやObsidianを使った、人間とAIが共有する知識の作り方。チャンネル登録とメンバーシップもよろしく!
応援お願いします!
共通テンプレート(src/deck-shared.tsx の CtaSlide)。最後にもう一度、高評価・チャンネル登録・メンバーシップ・noteメンバーシップのお願い。