A read-only MCP server over the bundled VehiclesDB dataset — agents and LLM apps can ground themselves in real vehicle data instead of hallucinating nameplates. Runs on stdio, speaks JSON-RPC 2.0, needs no network, no API key, no database.
Four well-named, read-only tools with clear descriptions (avg 180 chars, within baseline 194). All tools have complete input schemas with proper types and required field declarations. Descriptions are LLM-optimized and include context (e.g., 'Call with empty query to list every make', 'Use after search_models'). However, output schemas are not documented, LLMs cannot see what fields to expect from responses. Parameter descriptions are present but sparse (e.g., 'Max results' lacks range/default clarity). No error handling guidance or recovery paths documented. Missing tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only and safe to retry.
Look up ONE exact vehicle model by make + model name and get its full record: canonical names, slugs, kind, body type, popularity decile, and availability countries. Use after search_models, or directly when you already know the pair (e.g. make: 'Toyota', model: 'Hilux').
Search vehicle manufacturers (makes) by name. Returns matching makes with their slug and which vehicle kinds they produce (car, motorcycle, moped, van, truck, bus). Call with an empty query to list every make. Forgiving: 'vw', 'merc' and 'škoda' resolve.
Search vehicle models by name across all makes (e.g. 'golf', 'corolla', 'transit'). Returns ranked matches with make, kind, body type, global popularity decile (1 = top 10%) and the countries where the model is evidenced by official sources.
The most popular vehicle models by registration data, optionally filtered by kind and/or country (ISO alpha-2, e.g. 'nl', 'gb', 'th'). Popularity is measured from official registration/fleet counts across 12+ countries, expressed as deciles (1 = most popular).
Output schemas not documented. LLMs cannot see what fields (name, slug, kinds, popularity, countries) are returned by each tool, forcing them to guess at response structure and breaking downstream tool chaining.
Parameter 'limit' lacks range constraints and defaults. Description says 'Max results (default 20)' but schema does not enforce min/max bounds, allowing LLMs to pass absurd values (e.g., limit=999999).
No error handling guidance. Tool implementations catch StandardError and return isError=true with a message, but descriptions do not explain what errors are possible, when to retry, or how to recover (e.g., 'Make not found, try search_makes() first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Tool annotations missing. All four tools are read-only and idempotent (safe to retry), but inputSchema lacks readOnlyHint and idempotentHint annotations. LLMs cannot infer safety properties without explicit hints.
Parameter 'kind' in search_makes and top_models has enum constraint but no description explaining what 'kind' means or when to use it. LLMs may not understand the distinction between car/motorcycle/moped/van/truck/bus.