- MCPは業界で急速に関心を失っており、今ではCLIベースのアプローチのほうがより実用的
- LLMはすでにコマンドラインツールの利用に長けており、別個のプロトコルがなくても文書とCLIだけで十分に作業を遂行可能
- CLIは人間とLLMの両方が同じ環境で実行・デバッグ可能で、問題原因の把握が単純
- 合成可能性(composability)と認証体系、安定性の面でもCLIはMCPより効率的で保守しやすい
- MCPは初期化の不安定さ、繰り返しの再認証、権限制御の欠如など、実務で継続的な摩擦を引き起こす
- ほとんどの場合、CLIのほうがより単純で信頼性の高い選択肢であり、企業はMCPサーバーより先にAPIとCLIの提供に注力すべき
MCPの限界とCLIの優位性
- Anthropicの**Model Context Protocol(MCP)**発表以降、業界は競うようにMCPサーバーを構築したが、OpenClawやPiなど主要ツールはこれをサポートしておらず、実質的な利点もない
- LLMはすでにCLIとドキュメントを通じて作業を実行できる
- MCPは新たなエンドポイントと認証体系を追加するが、既存機能を重複させるだけ
- LLMはCLIツールの利用に最適化されており、非常に習熟している
- 数百万件のman page、Stack Overflowの回答、GitHubのシェルスクリプトを学習している
- たとえば
gh pr view 123 のようなコマンドをClaudeに指示すれば、そのまま動作する
- MCPはよりクリーンなインターフェースを約束したが、実際には各ツールの説明・パラメータ・使用タイミングを同じように文書化しなければならない
CLIは人間にとっても有用
- CLIでは人間とLLMが同じコマンドを共有できる
- Jiraで予期しない挙動が起きたとき、同じ
jira issue view コマンドを直接実行して再現できる
- MCPではツールがLLMの会話内にしか存在せず、問題発生時にはJSON送信ログを掘り返す手間が生じる
- デバッグにプロトコルデコーダが必要であってはならない
- CLIは入力と出力が明確で、問題追跡が容易
合成可能性(Composability)
- CLIは
jq、grep、ファイルリダイレクトなどとパイプラインで組み合わせられる
- 大規模なTerraformプラン分析の例:
terraform show -json plan.out | jq '[.resource_changes[] | select(.change.actions[0] == "no-op" | not)] | length'
- MCPではプラン全体をコンテキストウィンドウにダンプする必要があり(高コストで、しばしば不可能)、またはMCPサーバー自体にカスタムフィルタリングを実装しなければならない
- CLI方式は、すでに存在し十分に文書化されたツールを活用し、人間とエージェントの双方が理解できる
認証(Auth)の問題
- MCPは認証について不必要に強い前提を持ちすぎている(opinionated)
- CLIツールはすでに検証済みの認証体系を使っている:
aws はプロファイルとSSO、gh は gh auth login、kubectl は kubeconfig
- 人間が直接使う場合でもClaudeが駆動する場合でも、同じ認証フローが適用される
- 認証問題が起きた場合も、
aws sso login、gh auth refresh など既存の方法で解決でき、MCP専用のトラブルシューティングは不要
運用上の問題点: 可動部品がないこと(No Moving Parts)
- ローカルMCPサーバーは別途プロセスを起動・維持する必要があり、Claude Codeでは子プロセスとして生成されるため、ときどき問題が起きる
- CLIツールはディスク上のバイナリファイルにすぎず、バックグラウンドプロセス・状態管理・初期化手順が不要
実務での不便さ
- 初期化の不安定さ: MCPサーバーが起動せずClaude Codeを再起動することが頻繁にあり、状態を初期化してから再試行する必要がある
- 繰り返しの再認証: 複数のMCPツールを使うとそれぞれで認証が必要だが、SSOや長期有効な資格情報を使うCLIにはこの問題がない
- 権限制御の粗さ: Claude CodeではMCPツールを名前ベースで許可できるが、読み取り専用制限やパラメータ範囲の指定はできない
- CLIでは
gh pr view は許可し、gh pr merge には承認を求めるなど、きめ細かな権限制御が可能
MCPが有効な場合
- CLIに相当するツールがまったく存在しない場合、MCPが適している可能性はある
- 標準化されたインターフェースとしての価値や、CLIよりMCPのほうが適したユースケースが存在する可能性は認められる
- しかし大半の作業ではCLIのほうが単純で、デバッグが速く、信頼性が高い
中核的な教訓とビルダーへの要請
- 最高のツールとは人間にも機械にも機能するツールであり、CLIは数十年にわたる設計の反復を経て、組み合わせやすく、デバッグしやすく、既存の認証システムと統合されている
- MCPはより良い抽象化を作ろうとしたが、すでに十分に良い抽象化が存在していた
- MCPサーバーに投資しながら公式CLIを持たない企業は戦略を再考すべきであり、
良いAPI → 良いCLI の順で提供すれば、エージェントが自律的に活用する
- 不要なプロトコルの複雑さを減らし、生産性と保守性を向上できる
8件のコメント
MCPに利点がないというわけではなく、MCPの利点がない用途にまで無差別に使っていた幻想から目が覚めたということです。マイクロサービスをLLMのために公開する時もCLIを使うわけではないですし、MCPは「API」プロトコルなのですから。
あのときもAPIを使えばよかったんですよね。実際、MCPを使っていた理由はlong contextの限界のためだったのですが、今ではその限界の大半を克服したので。
ものすごく共感します。
aws mcpを入れなくても、Claude Codeが勝手にaws cliで必要なものを取ってきて使っていました 😂
Hacker Newsの意見
長い間この言い方を避けてきたが、今ではMCPには実質的な利点がないという確信がある
自分は開発ワークフロー全体をシェルコマンドで制御するAIエージェントを運用しているが、こいつらはCLIフラグを初めて見ても
--helpの出力だけでうまく把握する一方でMCPサーバーは常に不安定で、管理が必要だった
CLIは
jq、grep、ファイルリダイレクトなどで組み合わせられるが、MCPはサーバーが返す形式に縛られている結局のところMCP採用は技術的理由というより、「AI-first」なマーケティングシグナルにすぎないと思う
MCPはRESTやgRPCのように、単なるラッパー概念として理解すればよい
今はLLM CLIツールが頂点だと思う
ただ、MCPの結果が常にコンテキストウィンドウに入るのは不便だ。ファイルシステムにダンプできればよいのにと思う
MCPは、インストールやリソースプロビジョニングなしにすぐ呼び出せるブラックボックスAPIのようなものだ
一方CLIはローカル環境にアクセスできるので、はるかに精密だ
jq、duckdbCLIを使って大規模なデータファイルをサンプリングし、Opus 4.6が自動でクエリを調整しながら探索するCLIはリアルタイム応答性が高く、探索的データ分析に特に有用だ
よく使うCLIには
showboat、br、psql、roborevなどがあるduckdbをChatGPTと一緒に使ったときは楽しかったが、ローカルDBを維持するようにシステムプロンプトを設定しているのか気になるMCPは、CLIにないツールを見つけて文脈に応じて呼び出すときに意味がある
たとえば自分が作ったechomindrは、ポッドキャストから創業者の意思決定を抽出したDBをMCPとして提供している
Claudeがスタートアップ関連の質問を受けると、実際の創業者の経験を検索して答える
CLIは人間がどのツールを使うべきかをすでに知っている場合に適していて、MCPは発見型のツール選択に適している
筆者はAIの使い方を開発者中心にしか見ていないようだ
ほとんどのユーザーはChatGPTのようなWebベースのインターフェースでLLMを使っている
企業の立場では、マーケティング、セールス、プロジェクト管理ツールをつなぐにはMCPの方がはるかに適している
MCP自体は悪くないが、stdio MCPは過剰設計だ
その代わり、Streamable HTTP + OAuth Discovery方式が、最近では最も効率的なAI統合の方法だ
たとえばSentry MCPは、単一のURLだけで認証とデータアクセスが可能だ
問題はMCPの実装方式だ。bashで呼び出す代わりに、MCPをHTTPエンドポイントとして公開すれば、はるかに柔軟に動作する
私の顧客の一部にはMCPサーバーがないのに、開発者たちがそれを求めてくる
結局、Postman APIをJSONでエクスポートして提供したが、開発者たちはMCPサーバーを欲しがる
MCP対応の有無がマーケティングのチェックリストのように機能しているのが現実だ
このブログは開発者中心の視点に偏っているようだ
非開発者向けツールやサービスと接続するときは、MCPの方がはるかに自然だ
「MCP 5年経験者募集」のような求人広告は、結局無意味なミームになったわけだ
CLIがMCPより優れている理由の1つは、情報理論的に最適化された形式を持っているからだ
Unixツールの出力は関連情報が近くに配置されていて、LLMの注意メカニズムが効率的に働く
JSONはパースはしやすいが、読むことや推論には不便だ
CLI形式は人間にもLLMにも直感的だ
関連参考: Entropy and Information Layout
MCPとCLIの比較は、まるでOpenAPIと文字列(JSON)を比較するようなものだ
MCPは形式的に定義されている一方、CLIは
(String, List String, Map Int Stream) -> PIDレベルの抽象インターフェースだ結局どちらもAPIにすぎず、重要なのは目標達成のために適切なツールを選ぶことだ
--helpで完全なドキュメントを提供するので、LLMがそれを理解できるならMCPの標準化の方が良いとは言いにくいそうでなければ、現実には両アプローチが異なることを直接体感するはずだ
ある人がSaaSを開発していて、AI統合のためにCLIとMCPのどちらか一方を検討するなら、おそらく先にMCPを選ぶ気がします。CLIをサポートするのは管理ポイントが増えることですからね。両立はできても、なくなりはしないと思います。
LLMの知能が高まるにつれて、MCPの必要性が曖昧になってきたということのようですね。
私も実際にそう感じています。
リモート実行はmcp、ローカル実行はskillsとして整理されるようです。
私もMCPよりCLIでツールを直接作って使い始めました。