業務で使う!MCPの実践ワークフロー
MCPの3大プリミティブ(ツール・リソース・プロンプト)の仕組みと、エージェンティックルプーでの実務ワークフロー設計。
🔄 レッスン3で必須MCPサーバー5選を設定しました。でも、サーバーが「何を」AIに提供しているのか — その内部の仕組みをまだ理解していません。
MCPの3大プリミティブ
MCPサーバーがAIに提供するものは、3つに分類されます。
ツール(Tools)— AIが呼び出す「動詞」
Model-driven(AIモデル主導)。AIが会話の文脈を判断して、必要なタイミングで自動的に呼び出します。
@mcp.tool()
def search_issues(repo: str, query: str) -> str:
"""GitHubリポジトリのイシューを検索する"""
# GitHub APIを呼び出して結果を返す
ユーザーが「このリポジトリのバグイシューを見せて」と言うと、AIが search_issues ツールを呼び出すべきだと判断し、実行します。
特徴: 副作用がある操作(ファイル作成、メッセージ送信、DB書き込み)はツールとして定義します。
リソース(Resources)— アプリが提供する「名詞」
App-driven(アプリ主導)。アプリケーションがコンテキストとしてAIに渡す読み取り専用データです。
@mcp.resource("file://{path}")
def read_file(path: str) -> str:
"""ファイルの内容を読み取る"""
return open(path).read()
ファイルの中身、DBスキーマ、設定情報など — AIが判断材料として使うデータはリソースです。
特徴: 読み取り専用。副作用なし。安全にAIに提供できます。
プロンプト(Prompts)— ユーザーが選ぶ「テンプレート」
User-driven(ユーザー主導)。あらかじめ定義されたプロンプトテンプレートを、ユーザーが選択して実行します。
@mcp.prompt()
def code_review_prompt(pr_url: str) -> str:
"""PRのコードレビューテンプレート"""
return f"{pr_url} のコードをレビューしてください。\n\n観点:バグ、パフォーマンス、セキュリティ、可読性"
Claude Desktopではスラッシュコマンド(/)でプロンプト一覧を呼び出せます。チーム内でレビュー手順を標準化するのに使えます。
✅ Quick Check: 「Slackにメッセージを送信する」機能は、ツール・リソース・プロンプトのどれとして実装すべき?(ツールです。メッセージ送信は副作用のあるアクションなので、AIモデルが必要性を判断して呼び出すツールとして定義します。)
3つのプリミティブの使い分け
| プリミティブ | 主導者 | 用途 | 例 |
|---|---|---|---|
| ツール | AIモデル | 副作用のあるアクション | メッセージ送信、ファイル作成、API呼び出し |
| リソース | アプリ | 読み取り専用のデータ提供 | ファイル内容、DBスキーマ、設定値 |
| プロンプト | ユーザー | テンプレート実行 | コードレビュー手順、レポート生成フォーマット |
この3つの区別を覚えておくと、レッスン5でサーバーを自作するときの設計がスムーズになります。
高度な機能:Sampling、Roots、Elicitation
3大プリミティブ以外にも、2025年の仕様更新で追加された機能があります。
| 機能 | 説明 | 追加時期 |
|---|---|---|
| Sampling | サーバーがAIモデルに推論を依頼(再帰的な思考が可能に) | 初期仕様 |
| Roots | クライアントがサーバーに許可するファイルパスを明示 | 2025年 |
| Elicitation | サーバーがユーザーに追加入力を動的に要求(OAuth認証画面等) | 2025年6月 |
これらは上級者向けです。まずは3大プリミティブをしっかり理解しましょう。
エージェンティックループ:MCPの真価
MCPが本当に力を発揮するのは、エージェンティックループ — 複数ステップを自動で回すワークフローです。
[ステップ1:コンテキスト収集]
├── GitHub MCP → 未解決イシュー一覧を取得
├── ファイルシステム → 関連コードを読み取り
└── DB MCP → 最近のエラーログを取得
[ステップ2:分析・判断]
├── AIが情報を統合して優先度を判定
└── 修正方針を決定
[ステップ3:アクション実行]
├── ファイルシステム → コードを修正
├── GitHub MCP → PRを作成
└── Slack MCP → チームに通知
[ステップ4:検証]
├── テスト結果を確認
└── 問題があればステップ2に戻る
この「コンテキスト収集 → アクション → 検証 → 繰り返し」がエージェンティックループの基本パターン。
実務ワークフロー例
週次レポート自動化
ユーザー:「先週の開発活動をまとめてSlackに投稿して」
AIの動作:
1. GitHub MCP → 先週マージされたPR一覧を取得
2. GitHub MCP → 新規・クローズしたイシューを取得
3. 分析 → PRをカテゴリ分け(機能追加、バグ修正、リファクタリング)
4. レポート生成 → マークダウン形式で整理
5. Slack MCP → #dev-updates に投稿
LINEヤフーの事例
LINEヤフーのエンジニアチームは、GitHub + Jira + ConfluenceのMCPサーバーを組み合わせてPRレビュー準備を自動化。PR URLを渡すだけで、関連する設計ドキュメントやチケットの文脈を自動収集。週6時間のレビュー工数を削減しています。
✅ Quick Check: エージェンティックループで「検証」ステップがある理由は?(コードの修正やメッセージの送信が正しく実行されたか確認するため。テスト失敗や送信エラーがあれば、修正→再実行のループを回します。)
まとめ
- MCPの3大プリミティブ:ツール(AI主導)、リソース(アプリ主導)、プロンプト(ユーザー主導)
- ツールは副作用のあるアクション、リソースは読み取り専用データ、プロンプトはテンプレート
- エージェンティックループ:コンテキスト収集 → アクション実行 → 結果検証 → 繰り返し
- 高度な機能:Sampling、Roots、Elicitationも仕様に追加済み
- 複数サーバーの組み合わせで実務ワークフローを自動化
次のレッスン
3大プリミティブの仕組みがわかりました。レッスン5では、いよいよ PythonのFastMCPで自分だけのMCPサーバーを作ります。30行のコードから始めて、ツールとリソースを実装していきましょう。
理解度チェック
まず上のクイズを完了してください
レッスン完了!