@@ -13,8 +13,17 @@ Six FastMCP servers expose the AssetOpsBench domain logic. Each is a standalone
1313
1414## iot — IoT Sensor Data
1515
16+ The IoT server reads from ** two** databases: telemetry readings (` IOT_DBNAME ` , default ` iot ` ) and an
17+ asset ** registry** (` ASSET_DBNAME ` , default ` asset ` , loaded from ` asset_profile_sample.json ` ). The
18+ two answer different questions: ` assets() ` /` sensors() ` reflect TELEMETRY — what actually streams (the
19+ ** measured** set); ` get_asset() ` /` asset_sensors() ` /` registry_assets() ` reflect the REGISTRY — the
20+ asset nameplate and the ** installed** sensor inventory (by name). Comparing ` asset_sensors() ` against
21+ ` sensors() ` surfaces sensors that are installed but not streaming. The registry also reconciles ids
22+ across systems (Maximo ` assetnum ` , telemetry ` iot_asset_id ` , work-order ` wo_assetnum ` ), so an asset
23+ can be looked up by any of its ids.
24+
1625** Path:** ` src/servers/iot/main.py `
17- ** Requires:** CouchDB (` COUCHDB_URL ` , ` COUCHDB_USERNAME ` , ` COUCHDB_PASSWORD ` , ` IOT_DBNAME ` )
26+ ** Requires:** CouchDB (` COUCHDB_URL ` , ` COUCHDB_USERNAME ` , ` COUCHDB_PASSWORD ` , ` IOT_DBNAME ` , ` ASSET_DBNAME ` )
1827
1928** Sample assets shipped in the ` iot ` database** (loaded by ` src/couchdb/couchdb_setup.sh ` ):
2029
@@ -26,12 +35,15 @@ Six FastMCP servers expose the AssetOpsBench domain logic. Each is a standalone
2635
2736Synthetic motor vibration data (` asset_id: Motor_01 ` , from ` motor_01.json ` ) ships in a separate ` vibration ` database for the vibration MCP server.
2837
29- | Tool | Category | Arguments | Description |
30- | --------- | -------- | ------------------------------------------ | ----------------------------------------------------------------------- |
31- | ` sites ` | read | — | List all available sites |
32- | ` assets ` | read | ` site_name ` | List all asset IDs for a site |
33- | ` sensors ` | read | ` site_name ` , ` asset_id ` | List sensor names for an asset |
34- | ` history ` | read | ` site_name ` , ` asset_id ` , ` start ` , ` final? ` | Fetch historical sensor readings for a time range (ISO 8601 timestamps) |
38+ | Tool | Arguments | Description |
39+ | ----------------- | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------ |
40+ | ` sites ` | — | List all sites, discovered dynamically from the asset registry (` siteid ` ) |
41+ | ` assets ` | ` site_name ` | List asset ids registered at a site (telemetry id where present, else ` assetnum ` ) |
42+ | ` sensors ` | ` site_name ` , ` asset_id ` | List ** measured** sensor names for an asset (union of keys across its telemetry docs) |
43+ | ` history ` | ` site_name ` , ` asset_id ` , ` start ` , ` final? ` | Fetch historical sensor readings for a time range (ISO 8601 timestamps) |
44+ | ` get_asset ` | ` site_name ` , ` asset_id ` | Registry/nameplate detail for one asset (description, assettype, status, location, vintage, installed count) |
45+ | ` asset_sensors ` | ` site_name ` , ` asset_id ` | List the ** installed** sensors for an asset, by name (registry inventory) |
46+ | ` registry_assets ` | ` site_name ` , ` assettype? ` | List registry assets with metadata (assettype, vintage, sensor count), optionally filtered by assettype |
3547
3648## utilities — Utilities
3749
0 commit comments