MCP Server für OpenDTU – Wechselrichter-Limits abfragen und setzen
Server has 3 tools with generally good structure. Tool names follow verb_noun pattern (opendtu_get_*, opendtu_set_*). Descriptions are present and moderately detailed (100-200 chars each), written in German. All tools have input schemas with type definitions and parameter descriptions. However, there are critical gaps: (1) Output schemas are NOT documented, tools return strings only, making it unclear what the LLM receives and how to chain calls; (2) German-language descriptions limit accessibility for non-German speakers; (3) Error handling is basic, no recovery guidance or categorization; (4) Tool #1 (opendtu_get_inverters) has empty input schema but no documentation of output structure; (5) Tool #3 (opendtu_set_limit) has a destructive WRITE risk but no confirmation/dry-run pattern. Tool annotations are present (readOnlyHint, destructiveHint, idempotentHint) which is a positive signal.
Listet alle konfigurierten Wechselrichter mit Livedaten auf. Gibt eine Übersicht aller in OpenDTU konfigurierten Wechselrichter zurück, inklusive Seriennummer, Name, Erreichbarkeit, aktueller Leistung und dem konfigurierten Limit.
Fragt den aktuellen Limit-Status aller oder eines bestimmten Wechselrichters ab. Gibt das aktuelle Leistungslimit jedes Wechselrichters zurück: relatives Limit (%) und maximale Nennleistung sowie den Status der letzten Limit-Änderung.
Setzt das Leistungslimit eines Wechselrichters. Setzt das Leistungslimit eines Wechselrichters auf einen bestimmten Wert. Die Funktion unterstützt sowohl absolut (Watt) als auch relativ (Prozent) definierte Limits, sowie temporäre und persistente (EEPROM) Speicherung.
Output schemas are completely undocumented for all three tools. Tools return strings but the structure (fields, types, nesting) is invisible to the LLM. This breaks tool composition, prevents downstream tools from extracting IDs/references, and forces agents to parse unstructured text.
All tool descriptions are in German only, reducing accessibility and breaking multi-language agent environments. English descriptions are standard in production tool catalogs.
opendtu_set_limit performs destructive writes (EEPROM persistence, limit_type 256-257) with no confirmation, dry-run, or protected mode. An agent could permanently limit an inverter without warning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Error handling is generic. The _handle_error function returns user-friendly messages but does NOT categorize errors as retryable, user-fixable, or fatal. Agents cannot reason about recovery strategy.
opendtu_get_inverters and opendtu_get_limit_status do not document pagination or result limits. If OpenDTU returns many inverters, the response could blow the context window without truncation guidance.