0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CLI vs MCP——AIエージェント時代に「最古のUI」が再注目される理由

0
Last updated at Posted at 2026-04-18

CLI vs MCP——AIエージェント時代に「最古のUI」が再注目される理由

カバー画像

飛書(Lark)、DingTalk、企業微信、Google、Stripe——2026年に入ってから、テック大手が次々とCLIツールをオープンソースで公開しています。

GUIの時代にCLIなんて時代逆行では? そう思うかもしれない。でも実際は逆です。AIエージェントが実務に入り込むほど、CLIの価値が再発見されている。

理由はシンプル。CLIはAIの母語だから。

LLMの学習データには膨大なコードとターミナルログが含まれている。GUIのスクリーンショットを解釈させるより、git commit -m "fix" と打たせる方がはるかに速く、安く、正確。MCPが「AIにツールを使わせるプロトコル」として注目を集めたけれど、CLIの方が同じことをもっとシンプルにできるケースが増えています。

この記事では、CLI復権の背景、注目のOSSプロジェクト、そしてMCPとの使い分けを整理します。


1. なぜ今CLIなのか——AIにとっての「理想のUI」

GUIは人間のために作られたインターフェースです。ボタン、ドロップダウン、ドラッグ&ドロップ——すべて「目で見て、手で操作する」ことが前提。

でもAIエージェントには「目」も「手」もない。あるのはテキストの入出力だけ。

特性 GUI CLI
入力 マウス・タッチ・視覚的操作 テキストコマンド
出力 画面上のピクセル描画 構造化テキスト / JSON
エラー通知 ダイアログ、赤い枠線 終了コード + stderr
自動化 画面操作の記録・再生(脆い) シェルスクリプト / パイプ(堅牢)
AI との相性 低い(画面認識が必要) 高い(テキストベースで直接処理)

CLIの出力はそのままLLMのコンテキストに流し込める。GUIの出力はスクリーンショットを撮って画像認識にかける必要がある。どっちが速いかは明白です。

自分もAIエージェントにGUI操作をさせようとして、ブラウザ自動化で散々苦労した経験があります。ボタンの位置が数ピクセルずれるだけで全部止まる。CLIに切り替えた途端、安定して動くようになって「最初からこっちでよかったじゃん」と思いました。


2. 注目のOSSプロジェクト

2.1 CLI-Anything:ソフトウェアを一行でCLI化

CLI-Anything は、任意のオープンソースソフトウェアに対してCLIラッパーを自動生成するツールです。

何ができるか:

  • ソースコードを解析 → APIを洗い出し → コマンド設計 → 実装 → テスト → 公開、を自動で実行
  • Draw.io、OBS Studio等のGUIアプリをコマンドライン経由で操作可能にする
  • AIエージェントが --help で段階的にコマンドを学習できる設計
# インストール
pip install cli-anything

# Draw.ioのCLIラッパーを生成
cli-anything generate drawio --source ./drawio-src

# 生成されたCLIを使う
drawio-cli create --type flowchart --output diagram.png

ここが面白い。エージェントは最初に --help だけ読めばいい。全ツール定義をコンテキストに詰め込むMCPと比べて、トークン消費が最大30分の1になるとのこと。

2.2 Open CLI:Webサイトをコマンドライン化

Open CLI は、WebサイトやElectronアプリをCLIツールに変換するプロジェクト。

対応プラットフォームの例:

サービス CLIで何ができるか
Hacker News 記事一覧の取得、コメントの閲覧
BOSS直聘 求人情報の検索・フィルタ
Grok チャット操作
各種Webアプリ 裏側でブラウザを自動操作し、テキスト/JSONで結果を返す

バックグラウンドでヘッドレスブラウザが動いて、結果だけをテキスト/JSONで返してくる。AIエージェントにとっては「APIが存在しないサービスにもCLIでアクセスできる」という意味で強力。


3. 公式CLI生態系の広がり

OSSだけでなく、公式CLIの整備も加速しています。

パイプライン

# GitHub CLI:リポジトリ作成からPRレビューまで
gh repo create my-app --public --clone
gh pr create --title "feat: add auth" --body "OAuth2対応"

# Google Cloud CLI:インフラ管理
gcloud compute instances create my-vm --zone=asia-northeast1-a

# Stripe CLI:決済イベントの監視
stripe listen --forward-to localhost:4242/webhook

# 飛書CLI:ドキュメント操作
feishu doc list --folder "プロジェクトA"

これらの公式CLIは安定していて、APIキーによる認証も整備されている。AIエージェントが MCP経由でAPIを叩く代わりに、CLIを直接呼ぶ という選択肢が現実的になっています。


4. CLI vs MCP:構造的な違い

ここからが本題。MCPとCLIは「AIにツールを使わせる」という同じ目標に対して、まったく異なるアプローチを取ります。

MCPの仕組み

MCP(Model Context Protocol)は、LLMのコンテキストにツール定義を注入し、Function Callingで呼び出すプロトコル。

[LLMのコンテキスト]
  ├── システムプロンプト
  ├── ツール定義A(JSON Schema)   ← 常に全量注入
  ├── ツール定義B(JSON Schema)   ← 使わなくてもトークン消費
  ├── ツール定義C(JSON Schema)
  └── ユーザーの質問

CLIの仕組み

CLIベースでは、エージェントが必要なときだけ --help で使い方を調べる。

[LLMのコンテキスト]
  ├── システムプロンプト
  ├── 「shellでコマンドを実行できます」(1行だけ)
  └── ユーザーの質問

  → エージェントが必要に応じて実行:
    $ tool-name --help          ← 必要なときだけ学習
    $ tool-name subcommand -o json  ← 実行して結果を取得

比較表

観点 MCP CLI
ツール定義のコスト 全ツール定義を常時コンテキストに注入。ツール追加ごとにトークン消費増大 --help で按需取得。未使用ツールのトークン消費ゼロ
デバッグ エージェント内部のブラックボックス。人間が再現しにくい コマンドをコピーしてターミナルに貼るだけで再現可能
組み合わせ 1ツール1呼び出し。複雑なタスクは多ラウンド必要 パイプ `
構造化出力 JSON(Function Callingの戻り値) --output json / --format csv で柔軟に切替
エラーハンドリング ツールごとに異なる形式。統一されていない 終了コード + stderr の統一規約
人間のラーニング ツール定義のJSON Schemaを読む必要がある man / --help で即座に確認

正直、MCPをいくつか自作した経験がありますが、デバッグの辛さは本物です。エージェントが内部で何をやっているかが見えない。同じことをCLIで実装したら、失敗したコマンドをそのままターミナルで再実行できるので、原因特定が圧倒的に速かった。


5. MCPが勝つ場面

ここまでCLIを推してきましたが、MCPには明確な利点があるケースがあります。公平に整理すると:

MCPが向いている場面:

  • マルチテナント環境: 複数ユーザーの権限を統一的に管理する必要がある場合。CLIは原則として実行ユーザーの権限で動く
  • クラウドプラグイン市場: Slack AppやChatGPT PluginsのようなマーケットプレイスではMCPの標準化されたインターフェースが有利
  • 認証の一元管理: OAuth、APIキーのライフサイクル管理をフレームワーク側に任せたい場合
  • 実行環境の制約: ターミナルアクセスがない環境(Webベースのチャットボット等)

CLIが向いている場面:

  • ローカル環境での開発・自動化
  • 既存のUNIXツール群との統合
  • デバッグとトラブルシューティングの速度が重要
  • トークンコストを最小化したい

どちらか一方が完全に勝つわけではない。現状はCLIの方が「費用対効果が高い場面が多い」という感触です。


6. 融合のトレンド:CLI ↔ MCP の相互変換

二者択一ではなく、融合が始まっています。

# MCPサーバーをCLIツールとして使えるようにするブリッジ
mcp-to-cli --server github-mcp --output gh-mcp-cli

# 逆に、既存CLIツールをMCPサーバーとして公開
cli-to-mcp --command "gh" --expose-as github-tools

MCPも「全ツール定義の常時注入」から「必要なときだけロードする遅延読み込み」に進化しつつある。これはまさにCLIの --help 方式を取り入れた動き。

最終的には、開発者はどちらか一方を選ぶのではなく、状況に応じて使い分ける——あるいは意識すらしなくなる方向に進むと思っています。


7. まとめ

CLIは「古い技術の再発見」ではない。AIエージェント時代に最適化された、テキストファーストなインターフェースとして正当に評価されつつある。

  • トークン消費: CLI --help の按需学習で最大30倍削減
  • デバッグ: コマンドコピペで即再現。MCPのブラックボックスとは雲泥の差
  • 組み合わせ: パイプラインでワンライナー化。MCPは1ツール1往復
  • ただしMCPはマルチテナント・認証一元管理で依然として優位

あなたのAIエージェントは、ツールをMCP経由で呼んでいますか?それともCLI経由ですか? 両方使い分けているなら、どういう基準で分けているか、コメント欄で教えてください。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?