HumansXドキュメントセンター 公式サイトへ ↗

MCPサーバーの説明

概要

MCP (Model Context Protocol) は、AIアシスタントと外部システムを統合するためのプロトコルです。本システムは完全なMCPサーバーを実装しており、18個のツール関数を提供して、自然言語によるロボットアームの制御とビジョン検出に対応しています。

MCPサービスのアドレス: http://localhost:8002/mcp/

MCPプロトコルの特長

  • 🔌 プラグアンドプレイ: ClaudeなどのAIアシスタントとシームレスに統合
  • 🛠️ ツール関数: 検出と制御をカバーする18個の専用関数
  • 🔄 非同期処理: 同時リクエストや長時間の操作に対応
  • 📊 状態管理: システム状態をリアルタイムに同期
  • 🚨 エラー処理: 充実した例外処理とエラーフィードバック

ツール関数一覧

📊 検出関連ツール(4個)

1. get_measurements()

機能: 現在の検出モードにおけるすべての物体の測定データを取得します。

{
  "name": "get_measurements",
  "description": "获取所有检测物体的测量数据",
  "inputSchema": {},
  "response": {
    "measurements": [
      {
        "id": 1,
        "class": "red_shape",
        "confidence": 0.92,
        "position": {"x": 320, "y": 240},
        "distance_from_center": 150.2,
        "dimensions": {"width": 120, "height": 80},
        "quadrant": "第一象限"
      }
    ],
    "count": 1
  }
}

2. get_measurement_by_id(object_id)

機能: 特定の物体の測定データを取得します。 パラメーター:

  • object_id (int): 物体ID

3. trigger_yolo_detection()

機能: YOLOモードで物体検出を行い、検出モードを切り替えます。

4. trigger_vlm_detection(prompt)

機能: VLMモードで物体検出を行います。 パラメーター:

  • prompt (str): VLM検出用のプロンプト

注意: VLM検出機能を使用するにはSiliconFlowのAPIキーの設定が必要です。詳しい設定方法は SiliconFlow API_KEYの取得 を参照してください。

🤖 ロボットアーム制御ツール(12個)

基本制御

1. catch_object(image_x, image_y, height_z)

機能: ロボットアームを制御して物体を把持します。 パラメーター:

  • image_x (float): 画像のX座標(中心基準)
  • image_y (float): 画像のY座標(中心基準)
  • height_z (float): 把持の高さ(推奨値 -50.0)
2. init_action()

機能: ロボットアームが初期化動作を実行し、初期位置に戻ります。

3. normal_put_object(image_x, image_y, height_z)

機能: 物体を通常の方法で配置します(積み重ねなし)。 パラメーター: 物体の把持と同じです。

4. stack_put_object(image_x, image_y, height_z)

機能: 物体を積み重ねて配置します。 パラメーター: 物体の把持と同じです(推奨 height_z=30.0)。

方向移動(6個の関数)

5-10. 方向移動関数
move_forward(distance)   # 向前移动
move_back(distance)      # 向后移动
move_left(distance)      # 向左移动
move_right(distance)     # 向右移动
move_up(distance)        # 向上移动
move_down(distance)      # 向下移动

パラメーター:

  • distance (float): 移動距離(センチメートル、正の数)

位置制御

11. move_to_position(target_x, target_y, target_z)

機能: 絶対座標の位置に移動します。 パラメーター:

  • target_x (float): 目標X座標(50-180mm)
  • target_y (float): 目標Y座標(-80-80mm)
  • target_z (float): 目標Z座標(-50-140mm)
12. get_arm_position()

機能: ロボットアームの現在位置の座標を取得します。

🔧 システム管理ツール(2個)

1. get_system_status()

機能: システムの稼働状態と設定情報を取得します。

2. get_available_tools()

機能: 利用可能なすべてのMCPツールの一覧と説明を取得します。

使用例

自然言語によるインタラクション

AIアシスタントを通じて、ユーザーは自然言語でシステムを制御できます。

検出関連:

  • 「今、画面にどんな物体がある?」
  • 「物体は全部でいくつ検出された?」
  • 「赤い物体はいくつある?」
  • 「物体はそれぞれどこにある?」
  • 「1つ目の物体の詳細情報は?」

ロボットアーム制御:

  • 「位置(100, 50)にある物体をつかんで」
  • 「物体を位置(200, 100)に置いて」
  • 「ロボットアームを前に5cm動かして」
  • 「初期位置に戻って」
  • 「今、ロボットアームはどこにある?」

プログラムからの呼び出し例

Python MCPクライアント

import asyncio
from mcp import ClientSession

async def control_arm():
    async with ClientSession("http://localhost:8002/mcp/") as session:
        # 获取检测数据
        result = await session.call_tool("get_measurements")

        if result["measurements"]:
            obj = result["measurements"][0]
            x, y = obj["position"]["x"], obj["position"]["y"]

            # 抓取物体
            await session.call_tool("catch_object", {
                "image_x": x,
                "image_y": y,
                "height_z": -50.0
            })

asyncio.run(control_arm())

安全上の制限

ロボットアームの作業空間の制限

  • X軸: 50-180mm
  • Y軸: -80-80mm
  • Z軸: -50-140mm

エラー処理

制限を超える操作はすべてエラー情報を返します。

{
  "error": "机械臂X坐标超出限位范围 200mm (有效范围: 50-180mm)",
  "success": false
}

同時実行制御

  • ロボットアーム制御関数:競合を避けるため逐次実行
  • 検出関数:同時アクセスに対応
  • システム状態:リアルタイムに同期

MCPクライアントの設定

Claude Desktopとの統合

Claude Desktopの設定ファイルに以下を追加します。

{
  "mcpServers": {
    "vision-arm-control": {
      "command": "node",
      "args": ["path/to/mcp-client.js"],
      "env": {
        "MCP_SERVER_URL": "http://localhost:8002/mcp/"
      }
    }
  }
}

カスタムMCPクライアント

// mcp-client.js
const { MCPClient } = require('@modelcontextprotocol/sdk');

const client = new MCPClient({
  serverUrl: 'http://localhost:8002/mcp/'
});

client.connect().then(() => {
  console.log('Connected to Vision Arm MCP Server');
});

監視とデバッグ

MCPログの確認

# 实时查看MCP服务日志
tail -f logs/app.log | grep "MCP"

ツールの接続性テスト

# 测试MCP服务是否运行
curl http://localhost:8002/mcp/

# 测试工具列表
curl -X POST http://localhost:8002/mcp/ \
  -H "Content-Type: application/json" \
  -d '{"method": "tools/list", "params": {}}'

デバッグモード

環境変数を設定して詳細ログを有効にします。

export VISION_ARM_LOGGING_CONSOLE_LEVEL=DEBUG
python -m vision_arm_mcp.main

拡張開発

新しいツール関数の追加

  1. mcp_service.py に新しいツールを登録します。
@self.mcp.tool()
async def new_function(param1: str, param2: int) -> dict:
    """新工具函数描述"""
    # 实现功能
    return {"result": "success"}
  1. MCPサーバーを再起動して変更を反映します。

カスタムエラー処理

try:
    result = await some_operation()
    return {"success": True, "data": result}
except Exception as e:
    return {"success": False, "error": str(e)}

性能の最適化

  • 同時実行の制限: ロボットアーム操作の同時実行数は1に制限
  • キャッシュ機構: 検出結果を30秒間キャッシュ
  • コネクションプール: HTTPクライアントの接続を再利用
  • 非同期処理: すべてのI/O操作を非同期化

お問い合わせ

資料のダウンロード・技術サポートについては、HumansX株式会社までお問い合わせください。