UK fuel prices MCP server — official Fuel Finder open data (every UK forecourt, 30-minute freshness): cheapest petrol/diesel near a postcode, area price stats, station details
Four well-defined tools with complete schemas, clear descriptions, and proper parameter constraints. All tools are read-only with correct annotations. Naming follows verb_noun pattern (fuel_find_cheapest, fuel_nearby_stations, fuel_area_summary, fuel_data_status). Descriptions are substantive (100-200 chars) and explain WHEN to use each tool. Parameters have types, descriptions, and numeric bounds (ge/le constraints). Output schemas are fully documented via Pydantic models. Main gaps: no error recovery guidance in descriptions, no examples of what 'stale_price' means operationally, and fuel parameter lacks enum constraint (free-form string invites hallucination).
Per-fuel price statistics for an area: min/median/max and the cheapest station for each fuel. Use it to judge whether a price you've seen is actually good locally.
Check the server's data: credentials configured, stations loaded, and cache age. Use this to diagnose empty results.
Find the cheapest fuel near a location, ranked by price, with each station's price compared to the local median. Prices are pence per litre from the official Fuel Finder data (updated within 30 minutes).
List forecourts near a location (nearest first) with all their fuel prices, brand, amenities and motorway/supermarket flags.
fuel parameter accepts free-form string instead of enum. Description lists valid values ('unleaded/E10, super/E5, diesel/B7, premium diesel, B10 or HVO') but no constraint enforces them. LLMs will hallucinate invalid fuel types.
Error handling lacks recovery guidance. If location resolution fails (invalid postcode), no description tells LLM what to try next (e.g., 'Try a valid UK postcode or lat,lon format'). Descriptions do not explain failure modes.
fuel_data_status has empty input schema (no parameters). Description does not explain when to call it or what each response field means (e.g., what does 'configured' indicate? What should LLM do if false?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Result limits not documented in tool descriptions. fuel_nearby_stations caps at 40 results, fuel_find_cheapest at 25, but descriptions do not state these limits or explain pagination strategy. LLMs may expect more results.
stale_price boolean field lacks operational context. Description says 'True if price is over 7 days old' but does not guide LLM on whether to trust stale prices or warn the user. No guidance on how to handle stale data in responses.