A multi-server MCP system for EV fleet management, consisting of vehicle-sales-server and vehicle-telematics-server that expose MongoDB-backed tools for sales analytics, telematics queries, and fault diagnostics.
Six tools with clear verb-noun naming and reasonable descriptions (avg 150 chars). All tools have input schemas with types and descriptions. However, output schemas are not documented in the source code provided, and several parameter descriptions lack actionable constraints (e.g., 'limit' lacks min/max guidance). Error handling and recovery guidance are absent. Tool composition is sound, each tool has a single responsibility and clear use cases (e.g., get_telematics_data vs get_fleet_locations). No security issues detected (read-only operations, no secrets in params). Descriptions are adequate but could be more LLM-optimized with explicit 'when to use' guidance.
Fetch recent vehicle fault codes and maintenance records.
Aggregate fault counts and repair cost across the whole fleet, grouped by chassis, fault code, or component. Use this (not get_fault_codes) to answer questions like 'which vehicle has the most critical alerts' or 'most common fault codes' — it counts across all matching records instead of returning a capped raw list.
Fetch the single latest GPS position and status for every distinct vehicle in the fleet, for plotting on a live map. Unlike get_telematics_data (which returns raw readings and can repeat a vehicle), this returns exactly one current record per chassis. Use this for fleet-wide location or map questions such as 'show me the fleet map' or 'where are my vehicles right now'.
Aggregate sales count, revenue, and average price by a supported field.
Fetch vehicle telemetry such as battery, speed, and location. For a specific chassis, this returns only its latest reading unless limit is explicitly greater than 1. Use multiple readings only when the user asks for history or trends.
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing response structure.
Numeric parameter 'limit' lacks min/max constraints in descriptions. Should state '1-100' or '1-200' explicitly to prevent LLM from passing invalid values.
No error handling or recovery guidance. Tools lack descriptions of failure modes (e.g., 'If no records found, try broadening filters') or actionable error messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Fetch recent vehicle sales records with optional filters.
Pagination not explicitly documented. Tools accept 'limit' but no mention of offset, cursor, or total_count in response. Large result sets may exhaust context.
Parameter descriptions lack format/constraint details. E.g., 'chassis_number' should specify format (e.g., 'alphanumeric, 17 chars') to guide LLM input validation.