by Mari Ikeda

Edge-Cloud Continuumの実現に向けて:異なる能力を持つAIエージェントの連携

edge cloud

1. イントロダクション:エッジからクラウドへのAI連携

前回記事の振り返り

前回の記事「MCPによるエージェントの能力拡張 – センサーAIとの統合事例」では、Raspberry Pi AI CameraをMCPサーバー化し、
AIエージェントに「知覚」を与える方法を紹介しました。

エッジAIセンサーは、リアルタイムで物体検出や分類を行い、メタデータとして結果を返します。
しかし、実際のユースケースでは、「何が映っているか」だけでなく、「それがどのような状態か」「何が起きているか」といった、
より深い意味理解が求められる場面があります。

今回は、この課題に対応するため、GPU上で動作するVision Language Model(VLM)をMCPサーバー化した事例を紹介します。
エッジAIと、GPUリソースが潤沢なクラウド側で動作するVLM、それぞれが異なるAIエージェントからツールとして利用され、これらのAIエージェントが協調動作するEdge-Cloud Continuumの実現をめざします。

本記事で実現すること

[エッジ側]                                   [クラウド側]
Edge AI Camera                             GPU Server
(Raspberry Pi AI Camera等)
    │                                            │
    ├─ 高速な物体検出                              ├─ Vision Language Model (VLM)
    ├─ リアルタイムの物体数カウント     ├─ 詳細な画像解析
    └─ 閾値ベースのトリガー                   └─ 意味理解・状態評価
         │                                                                                    │
         └────── 必要な画像のみ転送 ─────────────┘

2. 構築したVLM MCPサーバーについて

2.1 Vision Language Modelの役割

<img src=”./Gemini_Generated_Image_60iy3g60iy3g60iy.png” alt=”VLMシステムの概要図” width=”640″ />

Vision Language Model(VLM)は、画像と言語を統合的に理解するAIモデルです。
物体検出が「何が・どこに」を答えるのに対し、VLMは、たとえば「この画像に映っているものの状態を
説明してください」といった、画像全体の状況や意味を問う質問に答えることができます。
質問例としては、下記のようなものです。

  • 「この画像に映っているものの状態を説明してください」
  • 「画像に映っている交通状況は渋滞しているか?事故は発生していないか?」
  • 「画像に映っている製品に欠陥はあるか?」

2.2 なぜVLMをMCPサーバー化するのか

VLMをMCPサーバーとして提供することで、標準化されたインターフェースを通じてAIエージェントから容易に
利用することができます。
これにより、エッジとクラウドのAIエージェントが連携して動作しながら、AIエージェントは必要なタイミングで
VLM解析ツールを呼び出すことができます。
たとえば、エッジで検出したイベントが発生したときの画像フレームのみに注目して、クラウド側のAIエージェントが
VLM MCPサーバーを使って詳細な説明や状態評価を補完するといった連携が実現します。

2.3 実装したVLM MCPサーバーの機能

今回実装したMCPサーバーが提供するツールは下記の通りです:

ツール名機能
analyze_image画像をバウンディングボックス付きで詳細分析
simple_image_analysisシンプルな画像分析
get_latest_analysis最新の解析結果を取得
get_analysis_history過去の解析履歴を取得
get_system_statusシステム状態を確認

下記は、AI agentが、このMCPサーバーで扱えるツールを表示したものです。

<img src=”./image-1.png” alt=”MCPツール一覧” width=”640″ />

3. システムアーキテクチャ

3.1 全体構成

[MCPクライアント]
    │
    │ MCP Protocol (SSE/Streamable HTTP)
    ↓
[VLM MCP Server] --- FastMCP Framework
    │
    │ REST API
    ↓
[VLM Inference Engine]
    [AI Models]
        ├─ SmolVLM-256M / 500M / 2B
        ├─ LLaVA v1.6 Mistral-7B
        └─ BLIP2-OPT-2.7B

<img src=”./Gemini_Generated_Image_qt6hrsqt6hrsqt6h.png” alt=”Edge-Cloud Continuumアーキテクチャ” width=”640″ />

4. Edge-Cloud Continuumの実現

4.1 アーキテクチャの思想

Edge-Cloud Continuumとは、エッジとクラウドを連続的に捉え、それぞれの強みを活かした処理分担を行う
考え方です。エッジとクラウド、それぞれに期待される効果や、扱えるリソースをまとめると、下記のように
なります。

┌─────────────────────────────────────────────────────────────────┐
│                    Edge-Cloud Continuum                     │
├─────────────────────────┬───────────────────────────────────────┤
│       エッジ層          │            クラウド層                │
├─────────────────────────┼───────────────────────────────────────┤
│ ・低レイテンシ           │ ・高い計算能力                       │
│ ・省電力                │ ・大規模モデル                       │
│ ・帯域節約              │ ・詳細解析                           │
│ ・リアルタイム処理       │ ・意味理解                            │
├─────────────────────────┼───────────────────────────────────────┤
│ Edge AI Camera        │ VLM MCP Server (GPU)                │
│ (Raspberry Pi AI Camera等)│                                 │
│ ・物体検出              │ ・画像の意味解析                      │
│ ・カウント              │ ・状態評価                           │
│ ・トリガー判定           │ ・詳細レポート                        │
└─────────────────────────┴───────────────────────────────────────┘

4.2 なぜ両方必要か

エッジAIだけでは不十分な例

  • 「車が5台検出された」→ しかし事故が起きているかは分からない
  • 「人物を検出」→ しかし不審な行動かは判断できない
  • 「製品を検出」→ しかし欠陥があるかは分からない

VLMだけでは非効率な例

  • 全フレームをGPUで処理 → コスト爆発
  • 常時クラウド通信 → 帯域・レイテンシ問題
  • 大量データ転送 → プライバシー懸念

両者の組み合わせで解決(例)

エッジ: 車5台検出 → 閾値(3台)超過 → 選択的に画像を転送し、クラウドでの処理をトリガー
    ↓
クラウド: VLM解析 → 「下り車線で渋滞発生、事故の可能性あり」

5. MCP統合の詳細

5.1 MCP動作例

VLM MCPサーバーは、以下の設定でClaude Codeなどから利用できます:

// .mcp.json
{
  "mcpServers": {
    "vlm-analysis": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:8011/mcp"],
      "description": "VLM Analysis Tools - Image understanding with Vision Language Models"
    }
  }
}

5.2 利用例:Claude Codeからの呼び出し

ユーザー: 「画像 ~/cars.jpg を分析して」
Claude: [VLM MCPサーバーへのリクエスト]
        ↓
        analyze_image ツールを呼び出し
        ↓
        VLMが画像を分析
        ↓
---
● VLM MCPサーバー 分析結果
**画像:** cars.jpg  
**処理時間:** 10.50秒
---
1. 確認された車両
+----------+--------------------+---------------------------+
|    色    |       タイプ       |        ブランド/車種         |
+----------+--------------------+---------------------------+
| シルバー | セダン               | フォルクスワーゲン パサート     |
| 青       | クロスオーバー/SUV   | ルノー カジャー               |
| 赤       | ハッチバック        | フォード フォーカス           |
| 黒/白    | バン               | メルセデス・ベンツ ヴィト     |
+----------+--------------------+--------------------------+
識別されたブランド:** フォルクスワーゲン、ルノー、フォード、メルセデス・ベンツ
---
2. 背景の建物
- **建築様式:** 平らな屋根を持つ長方形の形状
- **素材:** 赤レンガの壁、ドア/窓には金属フレーム
- **窓:** ファサードの一部を占める大きなガラスパネル
---
3. 周辺環境
- **樹木:** 葉のついた小さな落葉樹が数本(春頃を示唆)
- **駐車場路面:** 白線で区画されたアスファルト舗装
- **天候:** 晴天、澄んだ空
- **照明:** 影が見える明るい日光
---
4. 人物/その他のオブジェクト
人物や特筆すべき要素は確認されず
---
5. シーンの文脈
自動車ディーラーまたは企業のオフィス複合施設の駐車場と思われる。車両販売のデモンストレーション、会社業務、または従業員駐車場として使用されている可能性がある。

5.3 複数エージェントの連携

Edge-Cloud Continuumでは、異なる能力を持つエージェントが連携します。下記は想定される動作例を表しています。:

[Edge Agent]
    │   └─ 「現在のカウント: 車両8台、バイク2台」
    │   └─ 「閾値(5台)を超過、詳細解析推奨」
    │
    └─→ [Cloud Agent] (VLM MCP Server)
            └─ 「南向き車線で渋滞発生」
            └─ 「原因: 工事による車線減少の可能性」
            └─ 「状態: CAUTION」

<img src=”./image-3.png” alt=”エージェント連携の様子” width=”640″ />

6. 概念検証例:交通解析システム

6.1 システム概要

簡易的な概念検証のために、交通状況のライブ配信ストリームを用いた
交通解析システムを題材に、Edge-Cloud Continuumの適用例となる動作を
説明します。

注記: 本来はRaspberry Pi AI CameraなどのEdge AI Cameraをフィールドに設置して、エッジでの
処理を想定していますが、本概念検証では交通状況を撮影できる現場にカメラを実際に置くことが困難であったため、
YouTubeの交通ライブ映像をYOLO11で解析する構成で代用しています。
アーキテクチャの概念は同一ですが、エッジデバイス上での推論ではなく、PC上でのYOLO推論で代替しています。

[YouTube Live / 監視カメラ]
         │
         ↓
[Traffic Analysis (エッジ)]
    ├─ YOLO11による車両検出
    ├─ ByteTrackによる追跡
    ├─ ライン通過カウント
    └─ 閾値判定
         │
         │ 閾値超過時の画像フレームのみを解析依頼
         ↓
[VLM MCP Server (クラウド)]
    ├─ 小型のVLMモデル(SmolVLM-256M)による解析
    ├─ 状態評価 (GOOD/CAUTION/ABNORMAL)
    └─ 詳細レポート生成

6.2 エッジ側の処理

<img src=”./image-4.png” alt=”traffic_analysis.py実行画面” width=”640″ />

交通解析システム(traffic_analysis.py)は、以下の処理を行います:

# 車両カウントのコア処理
class VehicleAnalytics:
    def __init__(self, line: Tuple[int, int, int, int]):
        self.line = line      # カウントライン
        self.count = 0        # 車両カウンター
        self.tracks = {}      # 追跡履歴
    def update(self, boxes, ids, fps):
        for box, track_id in zip(boxes, ids):
            center = get_center(box)
            side = self._line_side(center)
            # ライン通過を検出
            if track_id in self.tracks:
                prev = self.tracks[track_id]
                if prev.side != side:
                    self.count += 1  # カウント増加

エッジ処理の特徴
  • YOLO11による高速推論(10+ FPS)
  • ライン通過による正確なカウント
  • 速度推定(ピクセル/秒)

6.3 クラウドへの転送トリガー

上記のコードに対して、単位時間でのライン通過カウント数が閾値を超えた場合に、自動でVLMによる詳細解析機能をトリガーします。

# 想定する自動トリガーロジック
if vehicle_count > THRESHOLD:
    save_frame_to_vlm_input(current_frame, metadata)

6.4 クラウド側のVLM処理

VLM MCPサーバーは、受け取った画像に対して以下の処理を行います:

# VLM解析の流れ
async def analyze_image(image_path: str) -> AnalysisResult:
    # 1. 画像読み込み
    image = load_image(image_path)
    # 2. VLM推論(構造化されたプロンプト)
    prompt = """Analyze this traffic scene:
- Vehicle count and types (cars, trucks, buses)
- Traffic density (light/moderate/heavy/congested)
- Any accidents or incidents visible?
- Overall state: GOOD / CAUTION / ABNORMAL
"""
    response = vlm_model.generate(image, prompt)
    # 3. 状態評価
    state = evaluate_state(response)
    return AnalysisResult(
        description=response,
        state=state,
        confidence=calculate_confidence(response)
    )

6.5 解析結果の例

<img src=”./image-9.png” alt=”VLM解析結果の例” width=”640″ />

 VLM MCP サーバー解析結果
  画像: frame_20250917_150228.jpg
  処理時間: 9.25s
  ---
  交通状況分析
  ┌───────────────────┬─────────────────────────────┐
  │       項目        │            回答             │
  ├───────────────────┼─────────────────────────────┤
  │ 1. 渋滞比較       │ 左側 - より多くの車両が密集 │
  ├───────────────────┼─────────────────────────────┤
  │ 2. 左側の交通状況 │ 普通〜混雑                  │
  ├───────────────────┼─────────────────────────────┤
  │ 3. 右側の交通状況 │ 軽い                        │
  ├───────────────────┼─────────────────────────────┤
  │ 4. 事故の有無     │ なし                        │
  ├───────────────────┼─────────────────────────────┤
  │ 5. 火災や煙       │ なし                        │
  ├───────────────────┼─────────────────────────────┤
  │ 6. 状況判定       │ 正常                        │
  └───────────────────┴─────────────────────────────┘
  ---
  7. 詳細説明
  検出システム情報:
  - 緑色のバウンディングボックスで各車両を検出
  - 各ボックスにID番号と速度情報(例:5.4m/s)を表示
  - フレームレート:16.7 FPS
  - 解像度:640x360ピクセル
  - 画面左上の「Count: 0」はカウンターの初期状態
  道路構造:
  - 複数車線の高速道路
  - 高架ランプ(オーバーパス)が確認可能
  - 上部に電光掲示板(路線番号・方向表示)
  周辺環境:
  - 都市インフラ(ビル、樹木、街灯、歩道)
  - 天候:晴れ、日中の良好な視認性
  危険要素:
  - 特になし - 通常の交通監視状況
  ---
  総合評価: リアルタイム車両検出・追跡システムによる高速道路交通監視映像。左側車線がやや混雑しているが、全体的に正常な交通状況。

7. 想定される応用シナリオ例

7.1 製造現場での品質管理

[生産ライン]
    │
    ↓
[Edge AI Camera]
    ├─ 1分間に100個の製品をスキャン
    ├─ 形状異常を検出(1%の疑わしい製品)
    └─ 疑わしい製品のみVLMへ転送
         │
         ↓
[VLM MCP Server]
    └─ 詳細解析
        ├─ 「表面に0.3mmの微細な傷を検出」
        ├─ 「色むらが基準値の15%超過」
        └─ 状態: ABNORMAL → 不良品として分類

効果

  • エッジで99%をフィルタリング → GPUコスト削減
  • VLMで精密検査 → 検出精度向上
  • 統合判断 → トレーサビリティ確保

7.2 セキュリティ監視

[複数の監視カメラ]
    │
    ↓
[Edge AI Cameras (複数)]
    ├─ エリアA: 通常の人の動き
    ├─ エリアB: 異常な動作パターン検出 ⚠️
    └─ エリアC: 無人
         │ エリアBのみ転送
         ↓
[VLM MCP Server]
    └─ 「立ち入り禁止区域に接近する人物を確認」
    └─ 「不審な荷物を持っている可能性」
    └─ 状態: ABNORMAL → 即時アラート

8. まとめ:AIエージェントの新しい連携形態

8.1 本記事で実現したこと

  1. VLM MCPサーバーの実装
    1. Vision Language ModelをMCPサーバー化
    1. GPU最適化による効率的推論
  2. Edge-Cloud Continuumの実現
    1. エッジAIによる高速フィルタリング
    1. 必要な画像のみクラウドへ転送
    1. VLMによる詳細な意味解析
  3. 異なる能力を持つAIエージェントの連携
    1. エッジエージェント:知覚・カウント・トリガー
    1. クラウドエージェント:理解・解析・評価

8.2 今後の展望

Edge-Cloud Continuumにより、異なる能力を持つAIエージェントが自由に配備され、協調動作する世界が実現しつつあります。エッジの「知覚」とクラウドの「理解」を組み合わせることで、単一のAIでは達成できない高度なタスクを、効率的に実行できるようになります。