AIエージェント開発の個人的な研究と知見の共有
本記事は3部構成です。
はじめに:個人プロジェクトとTech-Verse 2025
本記事は著者の個人プロジェクトとして、Codingエージェントとの協働で作成されました。AIエージェント開発についての知見と実装手法をまとめたものです。Codingエージェントの効果的な活用方法についての詳細は、Tech-Verse 2025イベントで発表予定です。
AIエージェント技術は多くの企業で注目されており、私の勤務するLINEヤフーでも技術革新の一環として探求が進められています。高度な技術基盤と「つくる」を大切にする企業文化に触れる中で、私はAIエージェントの可能性に個人的な関心を持ち、この記事シリーズを通じて学びを共有したいと思います。
注意: 本記事は筆者の個人的な研究に基づくもので、所属企業の公式見解を代表するものではありません。
本パートの概要:サブエージェントとMCPの詳細
パート1:アーキテクチャの理解と実装アプローチとパート2:Central Agentの内部詳細では、Central-Sub Agentシステムの全体アーキテクチャとCentral Agentの内部動作について説明しました。パート3では、システムの「最下層」—サブエージェントが外部世界と直接やり取りする部分—に焦点を当てます。
本パートでは、サブエージ ェントを効果的に実装する方法、特にModel Context Protocol(MCP)を活用して柔軟で強力かつ安全なサブエージェントを作る方法を解説します。
1. エージェントアーキテクチャにおけるサブエージェント
1.1 サブエージェントの役割
サブエージェントはAIエージェントシステム内の専門的なコンポーネントであり、それぞれが特定のタスクを担当し、特定の外部システムとやり取りします。サブエージェントは、Central Agentが調整する「専門家」と考えることができます。

1.2 サブエージェントの特徴
理想的なサブエージェントは以下の特徴を備える必要があります:
- 専門性:特定のドメイン(Jira、Slack、Calendarなど)に特化
- 一貫したインターフェース:Central Agentが容易に調整できる標準化されたインターフェースを提供
- エラー処理能力:外部APIからの例外を確実に処理
- 解釈能力:自然言語と特定APIリクエストの変換
- アクセス制御:外部システムとのやり取り時の安全性を確保
1.3 サブエージェントの実装方法
サブエージェントの実装方法はいくつかあり、それぞれに長所と短所があります:
| 方法 | 説明 | 長所 | 短所 |
|---|---|---|---|
| 直接 | サブエージェントが外部APIを直接呼び出す | シンプル、高い制御性 | API構造に依存、保守が困難 |
| SDK/ライブラリ | 既存ライブラリを利用してAPIを呼び出す | テスト済みコードの活用、時間短縮 | サードパーティライブラリの更新に依存 |
| Function Calling | 関数を定義し、LLMが呼び出し方法を決定 | 柔軟、拡張が容易 | 精度に欠ける場合があり、制御が難しい |
| MCP(Model Context Protocol) | AIが外部システムとやり取りするための標準プロトコル | 標準化、安全、柔軟 | MCPサーバーの実装が必要 |
2. Model Context Protocol(MCP)
2.1 MCPとは
Model Context Protocol(MCP)は、AIモデルが外部データソースやシステムと標準化された方法でやり取りできるようにするオープンプロトコルです。MCPは、AIが現実世界のデータや機能に安全かつ効率的にアクセス・操作するという重要な課題を解決します。

MCPは以下を実現するための構造化フレームワークを提供します:
- 様々なソースからのデータクエリ
- 外部システムへのアクション実行
- AIとシステム間のやり取りの一貫性確保
2.2 MCPの主な構成要素
MCPエコシステム は以下の主要コンポーネントで構成されます:
- MCPクライアント:AIがMCPサーバーとやり取りするためのライブラリ
- MCPサーバー:AIリクエストをバックエンドシステムに橋渡し
- トランスポート:クライアントとサーバー間の通信チャネル(STDIO、HTTP/SSE、WebSockets)
2.3 MCPのコア概念
2.3.1 リソース
リソースは、AIがMCPでデータにアクセスするための主要な手段です。URIでアドレス指定可能なデータエンティティです。
jira://issues - すべてのissue一覧
jira://issues/PROJ-123 - 特定issueの詳細
リソースの特徴:
- 読み取り専用:データのクエリ/取得専用、状態変更なし
- 構造化:返却データは一貫した構造
- フィルタ可能:多くの場合、クエリパラメータで結果を絞り込み可能
2.3.2 ツール
ツールは、AIがシステムの状態を変更するアクションを実行するための関数です。ツールはパラメータ付きの関数のようなものです。
// MCPでのツール定義例
{
name: "createIssue",
description: "Jiraで新しいissueを作成",
input: {
projectKey: "string", // プロジェクトキー
summary: "string", // issueタイトル
description: "string" // issue説明
}
}
ツールの特徴:
- 状態変更:データの作成・更新・削除に使用
- パラメータあり:特定の入力が必要で、バリデーションされる
- 結果返却:実行結果を通知
2.4 MCPとFunction Callingの比較
| 観点 | MCP | Function Calling |
|---|---|---|
| 標準化 | 標準プロトコル、アプリ間で一貫 | 実装ごとに異なる |
| データ型 | リソースとツール | 入出力付き関数 |
| やり取り | 双方向、ストリーミング対応 | 通常は単発呼び出し |
| スコープ | オープンでクロスプラットフォーム | 特定LLMに紐づく場合が多い |
| セキュリティ | アクセス制御・制限に対応 | 実装依存 |
3. MCPを用いたサブエージェントの実装
3.1 MCPサブエージェントのアーキテクチャと通信プロセス
MCPサブエージェントは、処理ロジックの分離とAPI操作の簡素化を同時に実現する標準化されたアーキテクチャで構築されています。以下は、リクエスト処理中の静的構造と動的通信フローの両方を示す2つの図です。

システム内の各コンポーネントには明確な役割があります:
- Agent Coordinator: リクエストを適切な専門サブエージェントに振り分け
- Prompt Processor: 自然言語を意図とエンティティに変換
- MCP Client: MCP標準に従ってMCPサーバーに接続・リクエスト送信
- MCP Server: MCPリクエストを対応するAPI呼び出しに変換
リクエストの処理フローは次のシーケンス図で詳細に示されています:

MCPサブエージェントアーキテクチャの主な特徴:
- 言語変換: 自然言語リクエストを自動的にMCPコマンドに分析
- 関心の分離: サブエージェントロジックをAPI詳細から切り離し
- インターフェース標準化: システム間の通信プロトコル統一
- 読み書き対応: データクエリとアクション実行の両方を同時にサポート
- セキュリティ: 個々のリソース/ツールレベルまでの精密なアクセス制御
3.2 MCPベースサブエージェントの利点
- 関心の分離:MCPによりサブエージェントのロジックとAPI接続の詳細が分離
- 一貫したインターフェース:外部システムに関わらず統一されたインターフェース
- 拡張性:Central Agentに影響なく新しいリソース/ツールを追加可能
- 高いセキュリティ:AIが実行できるデータ・アクションを厳密に制御
- 再利用性:MCPサーバーは複数AIアプリで利用可能