MCP/Skills アンチパターン集
このドキュメントでは、MCP と Skills の設計・運用で陥りやすい失敗パターンと、その回避方法を整理する。
1. over-MCPization(MCPの過剰使用)
症状
チーム内部の知識やガイドラインまでMCPサーバーとして実装してしまう。
問題のあるアプローチ
❌ チームのコーディング規約を取得するMCPサーバーを構築
❌ デザイン原則をAPIとして提供
❌ 社内ワークフローをMCPツール化なぜ問題か
- MCPサーバーの責務が肥大化
- サーバー運用コストの増加
- エージェント側でのカスタマイズが困難
- 認証・デプロイの複雑化
正しいアプローチ
✅ チーム内部の知識 → Skill として定義
✅ 外部APIへのアクセス → MCP として実装判断基準: 「これは外部サービスか、チームの知識か?」
2. over-Skillization(Skillsの過剰使用)
症状
外部APIの呼び出しやリアルタイムデータ取得をSkillで説明しようとする。
問題のあるアプローチ
❌ Skill: "DeepLを使った翻訳の仕方"(API呼び出し手順を詳述)
❌ Skill: "RFC検索の方法"(検索APIの使い方を説明)
❌ Skill: "GitHubリポジトリ操作手順"なぜ問題か
- Skillが肥大化・複雑化
- 外部システムの更新に追従困難
- 認証情報の管理が曖昧に
- エージェントが実行できない(参照のみ)
正しいアプローチ
✅ 外部API連携 → MCP として実装
✅ MCPの使い方・ガイドライン → Skill で補完判断基準: 「動的な実行が必要か、静的な知識か?」
3. 曖昧なSkill定義
症状
Skillの内容が抽象的すぎて、エージェントが具体的なアクションを取れない。
問題のあるアプローチ
markdown
❌ # コードレビュー Skill
コードレビューは大切です。
良いコードを書きましょう。
バグがないか確認してください。なぜ問題か
- エージェントが判断基準を持てない
- 実行結果が毎回異なる
- 品質の担保ができない
正しいアプローチ
markdown
✅ # コードレビュー Skill
## チェック項目
1. ESLintエラーがゼロであること
2. SOLID原則に違反していないこと
3. テストカバレッジが80%以上であること
## 判断基準
| 条件 | アクション |
| ----------------- | ---------------- |
| ESLintエラーあり | 修正必須 |
| カバレッジ80%未満 | テスト追加を要求 |対策: 数値基準、具体的な条件、明確なアクションを定義
4. MCPツール依存の過度な結合
症状
Skillが特定MCPの内部実装に強く依存している。
問題のあるアプローチ
markdown
❌ # 翻訳 Skill
deepl MCPのバージョン1.2.3の translate-text を使用。
パラメータ split_sentences は "nonewlines" を指定。
内部的にキャッシュが効くので2回目は速い。なぜ問題か
- MCPのバージョンアップで壊れる
- 内部実装への依存は保守困難
- 他のMCPに置き換えられない
正しいアプローチ
markdown
✅ # 翻訳 Skill
## 使用MCP
| MCP | 用途 |
| ---------------------------- | ------------ |
| deepl(または同等の翻訳MCP) | テキスト翻訳 |
## ワークフロー
1. 翻訳を実行(フォーマリティ: フォーマル)
2. 品質スコアを確認
3. 基準未満なら再翻訳対策: MCPのインターフェースレベルで記述、実装詳細に依存しない
5. 単一責任の原則違反
症状
1つのSkillに複数の異なる責務を詰め込む。
問題のあるアプローチ
markdown
❌ # 開発 Skill
## コードレビュー
...
## デプロイ手順
...
## 障害対応
...
## 新人オンボーディング
...なぜ問題か
- 更新時の影響範囲が大きい
- 必要な部分だけ参照できない
- コンテキスト消費が無駄に増える
正しいアプローチ
✅ skills/
├── code-review/SKILL.md
├── deployment/SKILL.md
├── incident-response/SKILL.md
└── onboarding/SKILL.md対策: 1 Skill = 1 責務
6. 更新されないSkill
症状
作成後に放置され、実際の運用と乖離したSkillが残り続ける。
問題のあるアプローチ
❌ 半年前に作成したSkillをそのまま使用
❌ チームの規約は変わったがSkillは更新していない
❌ 誰がオーナーか不明なぜ問題か
- エージェントが古い情報で動作
- 誤った判断につながる
- 信頼性の低下
正しいアプローチ
markdown
✅ ---
name: code-review
description: コードレビューガイドライン
owner: @frontend-team
last_reviewed: 2025-01-15対策:
- オーナーを明記
- 定期的なレビューサイクルを設定
- 最終確認日を記録
アンチパターン早見表
ここまで紹介したアンチパターンを一覧表にまとめる。
| パターン | 症状 | 対策 |
|---|---|---|
| over-MCPization | 内部知識をMCP化 | Skillに移行 |
| over-Skillization | 外部APIをSkillで説明 | MCPに移行 |
| 曖昧なSkill | 抽象的すぎる | 数値・条件を明確化 |
| 過度な結合 | MCP内部実装に依存 | インターフェースレベルで記述 |
| 単一責任違反 | 複数責務を1 Skillに | Skillを分割 |
| 更新されない | 運用と乖離 | オーナー・レビューサイクル設定 |
関連ドキュメント
アンチパターンの理解を深めるための関連ドキュメントを以下に示す。
- MCP vs Skills - 本質的な違いと選択判断
- Skillsとは - Skills 概要
- Skill設計ガイド - いつ・どのようにSkillを設計するか
- スキル作成ガイド - ステップバイステップ作成チュートリアル
- スキル導入・利用ガイド - インストールとプロジェクト導入
- 活用パターンガイド - ユースケースと役割分担
- 実例ショーケース - プロダクション実例
- Architecture - MCP/Skills/Agent構成論