13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCPとCLI、どちらを使うべきか──実践的な選択フレームワーク

13
Posted at

3行まとめ

MCPとCLIは、ユースケースによって向き不向きがあります。以下の表が判断の出発点になります。

判断軸 MCP向き CLI向き
CLIツールの有無 既存CLIがない 成熟したCLIがある
CLIの構造化出力 CLIにJSON出力がない --json等で対応可能
認証・状態管理 OAuth等の複雑な認証 環境変数やトークンで完結
利用者 非エンジニアを含む エンジニアのみ
クライアント共有 複数AIクライアントで使う 単一環境で使う

本記事では5つの判断軸と決定フローチャートを提示します。自分のユースケースに当てはめて判断してみてください。

この記事の対象読者

  • Claude Code等のAIコーディングツールを使っている方
  • MCPサーバーの導入を検討しているが判断に迷っている方
  • 「MCPは不要」という記事を読んで本当にそうか気になった方

MCPの基本概念や実装方法については別記事で解説しています。本記事はMCPの仕組みを知ったうえで「使うべきか否か」を判断したい方向けです。

なぜ「MCP vs CLI」が議論になるのか

MCPの設計意図

MCPはAIモデルと外部ツールをつなぐプロトコルです。Tools(関数呼び出し)だけでなくResources(データ参照)やPrompts(テンプレート)も扱えますが、本記事ではTools連携に絞ります。従来はFunction Callingを個別に実装する必要がありました。MCPはこの接続部分を標準化します。一度作ったサーバーを複数のクライアントから利用可能にします。

しかし、多くの開発者が気づいたことがあります。Claude Codeはすでにbashを実行できます。gitcurljqghを直接呼び出せます。わざわざMCPサーバーを作る必要があるのかという疑問です。

推論モデルの進化が変えたこと

2024年初頭のLLMは、CLIの出力解釈が苦手な場面がありました。構造化されたJSON応答を返すMCPの方が扱いやすいケースが多かったのです。

しかし2025年以降、推論モデルの能力は向上しました。git logの出力を読んで要約する、curlの結果から特定フィールドを抽出する。こうしたタスクの精度は大きく改善しています。

この進化がMCPの価値を相対的に下げたのは事実です。ただし、すべての場面でCLIが優るわけではありません。

トークンコストの構造的な違い

MCP導入の判断で見落とされがちなのがトークンコストです。MCPとCLIでは、コストの発生構造が異なります。

MCPのコスト構造

MCPサーバーを登録すると、ツール定義がシステムプロンプトに追加されます。これが入力トークンとして毎回消費されます。

たとえば10個のToolを持つMCPサーバーを3つ登録するとします。30個分のツール定義が読み込まれます。使わないToolにもトークンが消費されます。

ただし、Claude CodeにはTool Searchによる遅延ロード機能があります。すべてのツール定義が常時フルロードされるわけではありません。それでもサーバー数が増えるほど負荷は大きくなります。

CLIのコスト構造

CLIはコマンド実行結果だけがコンテキストに入ります。MCPのような大量のツール定義は不要です。

ただし、CLI実行もコストがゼロではありません。Claude Codeではbash自体がツール定義を持っています。また、git logが数百行を返せばその分トークンを消費します。

コスト比較

項目 MCP CLI
ツール定義コスト サーバー数・ツール数に比例 bash定義分のみ(固定)
実行時コスト 構造化された応答(小さい) コマンド出力全体(可変)
未使用ツールのコスト 遅延ロードで軽減されるが発生 なし
スケーリング サーバー数に比例して増加 変わらない

MCPのコストはサーバー数に比例します。使う頻度が低いMCPサーバーは、必要なときだけ有効化する運用を検討してみてください。

5つの判断軸

1. CLIが存在するか

最もシンプルな判断基準です。やりたいことを実現するCLIツールがすでにあるなら、まずCLIを試してみてください。

  • git → CLIで十分
  • gh(GitHub CLI) → CLIで十分
  • 社内の独自API → CLIがなければMCPを検討

2. CLIが必要な構造化出力を提供するか

多くの成熟したCLIはJSON出力をサポートしています。gh --jsonaws --output jsonkubectl -o jsonなどです。この場合、構造化データのためにMCPを導入する必要はありません。

MCPの構造化出力が有利になるのは以下のケースです。

  • CLIがJSON出力に対応していない場合
  • バイナリデータや非テキストデータを扱う場合
  • 複数APIの結果を組み合わせた応答が必要な場合

3. 認証・状態管理をまたぐか

CLIツールは通常、環境変数やconfig fileで認証情報を管理します。この方式で十分なら、MCPは不要です。

一方、OAuthフローでは話が変わります。リダイレクトやトークンリフレッシュが必要な場合、MCPサーバーに認証ロジックを集約する方が扱いやすくなります。

4. 利用者はエンジニアか

エンジニアはCLIの出力を読めます。エラーが出ても対処できます。この場合、CLIで十分です。

非エンジニア(PM、デザイナー等)がAIツールを使う場合は判断が変わります。CLIのエラー出力が利用者に露出すると混乱を招きます。MCPサーバーが整形された応答を返す方が使いやすくなります。ただし必須条件ではなく、UX上の重み付け要素です。

5. 複数クライアントで共有するか

Claude Codeだけで使うなら、CLIで問題ありません。しかしCursor、Cline、Claude Desktopでも使いたい場合はどうでしょうか。MCPサーバーなら一度の実装で複数クライアントに対応できます。

決定フローチャート

ユースケース別の対応表

具体的なユースケースごとに、MCP・CLIどちらが適しているかを整理します。

ユースケース 推奨 理由
Gitの操作(commit, push, log) CLI git CLIが成熟しており、追加の抽象化は不要
GitHub Issue/PRの操作 CLI gh CLIが高機能で十分
ファイルの読み書き CLI シェルコマンドで完結する
PostgreSQLクエリ どちらも CLIのpsqlで可能だが、MCPならスキーマ補助が便利
Slack連携 MCP ワークスペース操作向けの汎用CLIが弱く、OAuth認証が必要
Google Workspace操作 どちらも CLIが登場(非公式・pre-1.0)、安定性重視ならMCP
社内REST API MCP CLI不在の場合が多く、認証ロジックを内包できる
Docker操作 CLI docker CLIが標準的
AWS操作 CLI aws CLIが公式に提供されている
ブラウザ自動操作 どちらも Playwright CLIが登場しトークン効率が良い。複数クライアント共有ならMCP
CI/CDパイプライン操作 CLI ghや各CIツールのCLIで対応可能

MCPが優れる場面

CLIでは対応しにくく、MCPが真価を発揮するケースを整理します。

CLIが存在しないSaaS統合

多くのSaaSはREST APIを提供していますが、CLIは公式に提供していません。curlで叩くことは可能です。しかし認証ヘッダーの組み立てやペイロードの構築を毎回モデルに任せるのは非効率です。

MCPサーバーとしてラップすれば、これらのロジックをサーバー側に閉じ込められます。

非エンジニア向けの展開

チーム内の非エンジニアにAIツールを使ってもらう場合、CLIの生出力は読みにくいことがあります。MCPサーバーが整形された応答を返す設計にすれば、ユーザー体験が向上します。

IDE統合での構造化データ

CursorやCline等のIDE統合型AIツールでは、bash実行の自由度がClaude Codeほど高くない場合があります。MCPサーバーなら統一的なインターフェースを提供できます。

CLIが優れる場面

逆に、MCPを使う必然性がなくCLIで十分なケースも多くあります。

ローカル開発での日常操作

gitnpmdockermake──ローカル開発で頻繁に使うツールは、成熟したCLIが揃っています。MCPでラップしてもメリットはほぼありません。むしろツール定義分のトークンが無駄になります。

軽量な情報取得

「このファイルの行数を数えたい」「環境変数を確認したい」──こうした単発の操作に対してMCPサーバーを用意するのは過剰です。wc -lenvを直接実行する方が速く、安価です。

高頻度の繰り返し操作

1つのセッションで何十回も呼ばれる操作を考えます。MCPの固定コストは相対的に小さくなります。しかしCLIで同じことができるなら、あえてMCPにする理由がありません。

ハイブリッド戦略:両方使う

実務では「MCP or CLI」の二択ではなく、両方を組み合わせるのが現実的です。

MCPサーバー数を絞る

前述の通り、MCPサーバーを登録するだけでトークンコストが発生します。「使うかもしれない」で追加するのではなく、実際に頻繁に使うものだけを登録してみてください。

MCPサーバーを10個以上登録するとツール定義だけで数千トークンに達します。不要なサーバーは無効化しておくのが得策です。

「まずCLI、必要ならMCP」のアプローチ

判断に迷ったら、まずCLIで試してみてください。CLIで不便を感じた場合にのみ、MCPサーバーの導入を検討する。このアプローチなら、過剰なMCP導入を防げます。

CLI運用で不便を感じやすいサインは以下の通りです。

  • 毎回同じ認証処理をモデルに書かせている
  • CLIの出力パースで頻繁にミスが起きる
  • 複数のCLIを組み合わせた複雑なパイプラインが必要
  • 非エンジニアのチームメンバーも同じ操作をしたい

.mcp.jsonの設計指針

MCPサーバーを導入する場合の.mcp.json設計で意識したいポイントです。

  • 登録サーバーは5個以下を目安にする
  • 認証情報は.mcp.jsonに直書きせず、環境変数で外出しする
  • プロジェクト固有のサーバーはプロジェクトスコープに配置する
  • 汎用的なサーバー(Slack等)はユーザースコープに配置する
.mcp.json
{
  "mcpServers": {
    "internal-api": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/internal-api-server/build/index.js"],
      "env": {
        "API_TOKEN": "${INTERNAL_API_TOKEN}"
      }
    }
  }
}

まとめ

MCPとCLIは競合するものではなく、補完関係にあります。

  • CLIが存在し、テキスト出力で十分なら、CLIを使う
  • CLIがない、認証が複雑、複数クライアントで共有したいなら、MCPを検討する
  • 迷ったらCLIから始めて、不便を感じたらMCPに移行する

自分のユースケースに合った手段を選ぶのが、結局のところ一番合理的です。本記事のフローチャートや対応表を判断材料にしていただければ幸いです。

参考リンク

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?