Skip to content

feat(robot-mcp): add robot inspection MCP server and CouchDB asset profiles#370

Open
AnandMayank wants to merge 2 commits into
IBM:mainfrom
AnandMayank:robot-mcp
Open

feat(robot-mcp): add robot inspection MCP server and CouchDB asset profiles#370
AnandMayank wants to merge 2 commits into
IBM:mainfrom
AnandMayank:robot-mcp

Conversation

@AnandMayank

@AnandMayank AnandMayank commented Jun 14, 2026

Copy link
Copy Markdown

This PR adds a robot inspection extension to AssetOpsBench, enabling agents to
physically inspect industrial assets through a deterministic Layer 1 Robot MCP
server backed by CouchDB robot profiles.

CouchDB profile layer (src/couchdb/):

  • profile:{asset_id} documents in the iot DB for each known asset with
    robot-specific inspection metadata
  • Robot profile schema documented in schema_robot_fields.json
  • seed_robot_profiles.py provides idempotent profile seeding
    (--dry-run / --verify)
  • Profile documents omit asset_id — existing IoT Mango queries remain
    unaffected

Robot MCP server (src/servers/robot/):

  • 12 Layer 1 tools:
    navigate_to, list_waypoints, get_pose, capture_image,
    open_panel, get_battery, power_on, power_off,
    stand, sit, dock, undock
  • Robot state is maintained through deterministic CouchDB-backed profiles
  • Adds power_state and stance_state robot state tracking
  • Removes the earlier simulator.py and verifier.py prototype
  • Integrated with the AssetOpsBench agent runner through the Robot MCP server

Integration:

  • Registers the Robot MCP server in src/agent/runner.py
  • Adds Robot MCP entry point in pyproject.toml
  • Existing IoT benchmark APIs and Mango queries remain unchanged

Tests:

  • 49 Robot MCP tests passed, 0 failed.
  • Covers robot tool behavior, motion guards, idempotent operations,
    CouchDB profile integration, and robot state transitions.

@DhavalRepo18

Copy link
Copy Markdown
Collaborator

@AnandMayank We will review in two days and give you feedback.

@AnandMayank AnandMayank force-pushed the robot-mcp branch 2 times, most recently from 7e4c063 to fb739f3 Compare June 19, 2026 10:08
@AnandMayank

Copy link
Copy Markdown
Author

@DhavalRepo18 I have made some of the changes now it should be good for review !

…ofiles

CouchDB profile layer (src/couchdb/):
- New profile:{asset_id} documents in the iot DB for 4 assets
  (Chiller 6, Metro Pump 1, Hydraulic Pump 1, Motor 01)
- 9 robot-specific fields per profile; docs omit asset_id so existing
  IoT Mango queries are completely unaffected
- seed_robot_profiles.py with --dry-run / --verify flags
- schema_robot_fields.json field reference and gauge_value constraint doc

Robot MCP server (src/servers/robot/):
- 8 tools: navigate_to, safety_gate_check, open_panel, read_gauge,
  check_human_presence, commit_reading, check_wo_similarity, detect_anomaly
- PhysicalStateSimulator: seeded (seed=42), deterministic, state in memory
- MultiReadingVerifier: score = 0.35*C + 0.35*A + 0.30*H, N>=3 hard gate,
  sensor-freeze gate, sensor-physical and historical outlier annotations
- historical_outlier uses 3-level severity spectrum (60% mild / 25% medium /
  15% severe) with gap-based formulas guaranteeing H range by construction
- gauge_value never returned to agent; enforced by double-guard confirmed
  by test_gauge_value_protection.py (10 checks)
- robot-mcp-server entry point added to pyproject.toml
- "robot" key added to DEFAULT_SERVER_PATHS in src/agent/runner.py

Tests: 66 robot tests pass; pre-existing IoT tests unaffected.
Signed-off-by: AnandMayank <anandmayank698@gmail.com>
Signed-off-by: AnandMayank <anandmayank698@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants