なぜCLIなのか、MCPではないのか?
学習後にできること
本レッスンでは、以下の内容を理解できます:
- ✅ MCPとスキルシステムのポジショニングの違いを理解する
- ✅ なぜCLIがスキル読み込みに適しているかを理解する
- ✅ OpenSkillsの設計哲学を習得する
- ✅ スキルシステムの技術原理を理解する
現在の課題
あなたは次のような疑問を持っているかもしれません:
- "なぜより進んだMCPプロトコルを使わないのか?"
- "CLI方式は古すぎるのではないか?"
- "MCPの方がAI時代の設計に適しているのではないか?"
本レッスンでは、これらの設計決定の背後にある技術的な考察を解説します。
核心問題:スキルとは何か?
CLI vs MCPを議論する前に、「スキル」の本質を理解しましょう。
スキルの本質
スキルの定義
スキルは静的命令 + リソースの組み合わせであり、以下を含みます:
SKILL.md:詳細な操作ガイドとプロンプトreferences/:参考ドキュメントscripts/:実行可能なスクリプトassets/:画像、テンプレートなどのリソース
スキルは動的サービス、リアルタイムAPI、サーバー実行が必要なツールではありません。
Anthropicの公式設計
Anthropicのスキルシステムはもともとファイルシステムに基づいて設計されています:
- スキルは
SKILL.mdファイルの形式で存在 <available_skills>XMLブロックで使用可能なスキルを記述- AIエージェントが必要に応じてファイル内容をコンテキストに読み込み
このため、スキルシステムの技術選択はファイルシステムと互換性がある必要があります。
MCP vs OpenSkills:ポジショニング比較
| 比較項目 | MCP(Model Context Protocol) | OpenSkills(CLI) |
|---|---|---|
| 適用シーン | 動的ツール、リアルタイムAPI呼び出し | 静的命令、ドキュメント、スクリプト |
| 実行要件 | MCPサーバーが必要 | サーバー不要(純粋なファイル) |
| エージェントサポート | MCPをサポートするエージェントのみ | AGENTS.md を読み込めるすべてのエージェント |
| 複雑さ | サーバーデプロイとメンテナンスが必要 | ゼロコンフィグ、そのまま使える |
| データソース | サーバーからリアルタイムに取得 | ローカルファイルシステムから読み込み |
| ネットワーク依存 | 必要 | 不要 |
| スキル読み込み | プロトコル呼び出し経由 | ファイル読み込み経由 |
なぜCLIがスキルシステムに適しているのか?
1. スキルはファイルである
MCPはサーバーが必要:MCPサーバーをデプロイし、リクエスト、レスポンス、プロトコルハンドシェイクなどを処理...
CLIはファイルのみ:
# スキルはファイルシステムに保存される
.claude/skills/pdf/
├── SKILL.md # メイン命令ファイル
├── references/ # 参考ドキュメント
│ └── pdf-format-spec.md
├── scripts/ # 実行可能なスクリプト
│ └── extract-pdf.py
└── assets/ # リソースファイル
└── pdf-icon.pngメリット:
- ✅ ゼロコンフィグ、サーバー不要
- ✅ スキルをバージョン管理可能
- ✅ オフラインで使用可能
- ✅ デプロイが簡単
2. 汎用性:すべてのエージェントで使用可能
MCPの制限:
MCPプロトコルをサポートするエージェントのみが使用できます。Cursor、Windsurf、AiderなどのエージェントがそれぞれMCPを実装すると、以下の問題が生じます:
- 重複開発作業
- プロトコル互換性の問題
- バージョン同期の困難
CLIのメリット:
シェルコマンドを実行できるすべてのエージェントで使用可能:
# Claude Codeからの呼び出し
npx openskills read pdf
# Cursorからの呼び出し
npx openskills read pdf
# Windsurfからの呼び出し
npx openskills read pdf統合コストゼロ:エージェントがシェルコマンドを実行できるだけで十分です。
3. 公式設計に準拠
Anthropicのスキルシステムはもともとファイルシステム設計であり、MCP設計ではありません:
<!-- AGENTS.md内のスキル記述 -->
<available_skills>
<skill>
<name>pdf</name>
<description>Comprehensive PDF manipulation toolkit...</description>
<location>project</location>
</skill>
</available_skills>呼び出し方法:
# 公式設計の呼び出し方法
npx openskills read pdfOpenSkillsはAnthropicの公式設計を完全に遵守しており、互換性を保っています。
4. 段階的な読み込み(Progressive Disclosure)
スキルシステムの核心的メリット:必要に応じて読み込み、コンテキストを簡潔に保ちます。
CLIの実装:
# 必要なときだけスキル内容を読み込む
npx openskills read pdf
# 出力:SKILL.mdの完全な内容を標準出力へMCPの課題:
MCPで実装する場合、以下が必要です:
- スキルリストを管理するサーバー
- 段階的な読み込みロジックの実装
- コンテキスト管理の処理
一方、CLI方式は段階的な読み込みを自然にサポートしています。
MCPの適用シーン
MCPが解決する問題はスキルシステムと異なります:
| MCPが解決する問題 | 例 |
|---|---|
| リアルタイムAPI呼び出し | OpenAI API呼び出し、データベースクエリ |
| 動的ツール | 電卓、データ変換サービス |
| リモートサービス統合 | Git操作、CI/CDシステム |
| 状態管理 | サーバー状態を維持する必要があるツール |
これらのシーンではサーバーとプロトコルが必要であり、MCPが正しい選択です。
スキルシステム vs MCP:競合関係ではない
核心的な観点:MCPとスキルシステムは異なる問題を解決しており、どちらか一方を選ぶものではありません。
スキルシステムのポジショニング
[静的命令] → [SKILL.md] → [ファイルシステム] → [CLI読み込み]適用シーン:
- 操作ガイドとベストプラクティス
- ドキュメントと参考資料
- 静的スクリプトとテンプレート
- バージョン管理が必要な設定
MCPのポジショニング
[動的ツール] → [MCPサーバー] → [プロトコル呼び出し] → [リアルタイムレスポンス]適用シーン:
- リアルタイムAPI呼び出し
- データベースクエリ
- 状態が必要なリモートサービス
- 複雑な計算と変換
補完関係
OpenSkillsはMCPを排斥するのではなく、スキル読み込みに特化しています:
AIエージェント
├─ スキルシステム(OpenSkills CLI)→ 静的命令を読み込む
└─ MCPツール → 動的サービスを呼び出すこれらは補完関係にあり、代替関係ではありません。
実際の事例:どれを使用すべきか?
事例1:Git操作の呼び出し
❌ スキルシステムには不適:
- Git操作は動的であり、リアルタイムの対話が必要
- Gitサーバーの状態に依存
✅ MCPに適:
# MCPツール経由で呼び出し
git:checkout(branch="main")事例2:PDF処理ガイド
❌ MCPには不適:
- 操作ガイドは静的
- サーバー実行は不要
✅ スキルシステムに適:
# CLI経由で読み込み
npx openskills read pdf
# 出力:詳細なPDF処理手順とベストプラクティス事例3:データベースクエリ
❌ スキルシステムには不適:
- データベースへの接続が必要
- 結果は動的
✅ MCPに適:
# MCPツール経由で呼び出し
database:query(sql="SELECT * FROM users")事例4:コードレビュー基準
❌ MCPには不適:
- レビュー基準は静的ドキュメント
- バージョン管理が必要
✅ スキルシステムに適:
# CLI経由で読み込み
npx openskills read code-review
# 出力:詳細なコードレビューチェックリストと例将来:MCPとスキルシステムの統合
可能な進化方向
MCP + スキルシステム:
# スキル内でMCPツールを参照
npx openskills read pdf-tool
# SKILL.mdの内容
本スキルではMCPツールを使用します:
1. mcp:pdf-extractを使用してテキストを抽出
2. mcp:pdf-parseを使用して構造を解析
3. 本スキルが提供するスクリプトで結果を処理メリット:
- スキルは高度な命令とベストプラクティスを提供
- MCPは基礎的な動的ツールを提供
- 両者を組み合わせることで、より強力な機能を実現
現在の段階
OpenSkillsがCLIを選択した理由は以下の通りです:
- スキルシステムはすでに成熟したファイルシステム設計である
- CLI方式は実装がシンプルで汎用性が高い
- 各エージェントによるMCPサポートの実装を待つ必要がない
レッスンのまとめ
OpenSkillsがCLIを選択しMCPを採用しなかった核心的な理由:
核心的な理由
- ✅ スキルは静的ファイル:サーバー不要、ファイルシステムに保存
- ✅ 汎用性が高い:すべてのエージェントで使用可能、MCPプロトコルに依存しない
- ✅ 公式設計に準拠:Anthropicのスキルシステムはもともとファイルシステム設計
- ✅ ゼロコンフィグデプロイ:サーバー不要、そのまま使える
MCP vs スキルシステム
| MCP | スキルシステム(CLI) |
|---|---|
| 動的ツール | 静的命令 |
| サーバーが必要 | 純粋なファイルシステム |
| リアルタイムAPI | ドキュメントとスクリプト |
| プロトコルサポートが必要 | 統合コストゼロ |
競合ではなく補完
- MCPは動的ツールの問題を解決
- スキルシステムは静的命令の問題を解決
- 両者を組み合わせて使用可能
関連ドキュメント
付録:ソースコード参照
クリックしてソースコードの場所を表示
更新日時:2026-01-24
| 機能 | ファイルパス | 行番号 |
|---|---|---|
| CLIエントリーポイント | src/cli.ts | 39-80 |
| readコマンド | src/commands/read.ts | 1-50 |
| AGENTS.md生成 | src/utils/agents-md.ts | 23-93 |
重要な設計決定:
- CLI方式:
npx openskills read <name>でスキルを読み込み - ファイルシステム保存:スキルは
.claude/skills/または.agent/skills/に保存 - 汎用互換性:Claude Codeと完全に互換性のあるXML形式を出力