An MCP server for managing and orchestrating a bounded IoT vehicle fleet with real-time telemetry monitoring, anomaly detection, OTA command deployment, and maintenance manual search capabilities.
Server has 5 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (10-100 chars, mostly adequate) and input schemas with typed parameters. However, descriptions lack actionable context for LLM selection, parameter descriptions are minimal, output schemas are undocumented, and error handling is absent. No tool annotations (readOnlyHint/destructiveHint). The send_ota_command tool has client-side validation logic visible in Python, but server-side enforcement is not evident. Tool naming is reasonable (verb_noun pattern), but composition issues exist: get_fleet_snapshot and analyze_anomalies_ml both operate on fleet/vehicle data without clear differentiation of when to use each.
Calculates rolling window Z-Score statistical metrics over target vehicle data streams to classify anomalies.
Queries active vehicle fleet state metrics filtered by minimum speed and battery temperature thresholds.
Retrieves a trailing rolling sequence of telemetry history logs for a single vehicle.
Queries enterprise technical documentation documentation to isolate operational fault configurations.
Deploys targeted configuration updates directly to a specific vehicle hardware parameter register.
Output schemas undocumented. No tool returns a documented response structure. LLMs cannot plan downstream calls or extract required fields (e.g., does get_fleet_snapshot return device_id, speed, battery_temp, timestamp?). This forces agents to guess field names and risks context loss between turns.
Parameter descriptions are minimal (5-20 chars). 'Target unique vehicle identifier' and 'Minimum vehicle speed filter boundary' lack actionable context. No format constraints, ranges, or examples. LLMs cannot validate inputs before calling.
No error handling guidance. Tools do not document what errors are possible, whether they are retryable, or what the LLM should do next. send_ota_command has client-side validation (device_id format, parameter whitelist, speed range 20-60) but no server-side error responses documented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
No tool annotations. send_ota_command is destructive (writes to vehicle hardware) but lacks destructiveHint. get_fleet_snapshot and get_historical_logs are read-only but lack readOnlyHint. Agents cannot distinguish safe from unsafe tools without explicit hints.
Ambiguous tool selection. get_fleet_snapshot (queries active metrics) and analyze_anomalies_ml (calculates Z-scores) both operate on vehicle data. Descriptions do not clarify when to use each. LLMs may call both redundantly or pick the wrong one.