Lokaler MCP Server für DATEV EXTF Exporte mit natürlicher Sprache für Salden, offene Posten und Buchungssuche
Server has 5 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-80 chars, mostly adequate) and input schemas with Zod validation. However, parameter descriptions are sparse or missing entirely, most params lack context for LLM selection. Output schemas are not documented. Error handling is minimal (no recovery guidance, no categorization). No tool annotations (readOnlyHint/destructiveHint). load_datev_file is a WRITE operation but lacks confirmation/dry-run pattern. Naming is clear and verb-based. Composition is reasonable (single responsibility per tool), but chaining support is weak, no IDs returned to enable downstream calls.
Calculates the balance for a DATEV account.
Lists open debtor or creditor items from the loaded DATEV file.
Lists filtered bookings from the loaded DATEV file.
Loads a DATEV EXTF CSV file into in-memory storage.
Searches bookings by text, Belegfeld1 and Belegfeld2.
Parameter descriptions missing or minimal. 'account', 'overdueOnly', 'type', 'referenceDate', 'from', 'to', 'minAmount', 'text', 'query' lack context explaining format, constraints, or when to use them. LLMs cannot infer whether 'account' is a number or string, or what 'referenceDate' format is expected.
Output schemas not documented. Tools return JSON via toContent() but no schema is visible for what fields clients should expect (e.g., does get_account_balance return {balance, currency, asOf}?). LLMs cannot plan downstream calls without knowing response structure.
load_datev_file is a destructive WRITE operation (loads file into in-memory state) but lacks confirmation/dry-run pattern and has no destructiveHint annotation. No error guidance if file is invalid or already loaded. Agents cannot safely retry.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
No pagination support. list_bookings and get_open_items may return unbounded results. No limit, offset, or cursor parameters visible. Large datasets will blow context window.
Error handling is silent. No recovery guidance in code (e.g., 'file not found' or 'invalid account'). Errors likely return raw exceptions. LLMs cannot self-correct or know whether to retry.