MCP server for querying the Marktstammdatenregister (German Master Data Register for renewable energy installations)
This server has significant definition quality issues. Both tools have descriptions, but one tool (get-time) has no input schema at all, and parameter descriptions are inconsistent. The get-sums tool has a well-structured Zod schema with proper enums and descriptions, but the get-time tool violates schema requirements entirely. Error handling is minimal, both tools lack actionable error messages and recovery guidance. No output schemas are documented. The naming is acceptable (verb_noun pattern) but descriptions, while present, lack depth on WHEN to use these tools vs. alternatives, and what their outputs contain.
Liefert die installierte Leistung von erneuerbaren Energieträgern (Windkraft, Wasserkraft, Biomasse und Photovoltaik) in Deutschland. Bei Photovoltaik gilt: Die Bruttoleistung ist die Leistung der PV-Module, die Nettoleistung ist die Leistung aller Wechselrichter zusammen.
Frage Datum und Zeit bei der Physikalisch-Technischen Bundesanstalt ab.
get-time tool has NO input schema (empty {} registration in src/minimal.ts line 24). This violates MCP tool definition requirements and makes it impossible for clients to validate inputs.
get-time description is 85 characters and lacks actionable context. Does not explain WHAT it returns (the actual date/time string format), WHEN to use it vs. alternatives, or how downstream tools consume it.
No output schemas documented for either tool. get-sums returns { content: [{ type: 'text', text: '...' }] } with power values embedded in plain text. This forces LLMs to parse unstructured text rather than work with typed fields. get-time similarly returns text-only content. Per pattern:response-shaper, structured objects with typed fields are required.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 7 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 35 | - | v1 |
Error handling is absent. Both tools call external APIs (MaStR, NTP server) with fetch calls but minimal error recovery guidance. mastrRequest catches errors and logs to console but returns null, the handler does not document what null means to the LLM or suggest recovery steps like retry or fallback. No error classification (retryable vs. fatal). Per pattern:recovery-guide, errors must guide the LLM's next action.
get-sums description (German language, 275 chars) does not distinguish when to call it vs. related tools or explain dependencies. It mentions Photovoltaik brutto/netto difference but does not state: 'All results in kW', 'Call with energy_type (required), optionally filter by state/county/zip', or what the response structure is. LLMs cannot infer these details.
Parameter descriptions for get-sums are minimal. 'Bundesland, in dem sich die Anlagen befinden' (State where installations are located) lacks context like 'Optional filter. Defaults to all states if omitted.' No description hints about postal code format (5-digit German postal code?) or whether county name is free-form or from a known list.