diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cba2da..b820324 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,17 @@ ## 2026-07-08 (Listen-Tasks + MCP-Katalog) +- **MCP: drei weitere Werkzeuge.** + - `workflow_get` versteht jetzt `format=struktur` — nur der Task-Baum (Typ, id, assign_to, + Verzweigung, output_var) statt der ganzen XML. Bei `bauakte-vergabe-pruefen`: 1.772 statt + 6.251 Zeichen (−72 %). Standard bleibt `xml`. + - `workflow_vars` — Variablen-Landkarte: welche Kontextvariablen erzeugt werden (mit Task und + Herkunftsart: ``, ``, ``, Formularfeld, Task-id), welche gelesen + werden und welche gelesen werden, **ohne je gesetzt zu sein** (Tippfehler). + - `workflow_batch` — mehrere Werkzeuge in einem Aufruf (z. B. `create` + `lint` + `start`). + Jede Operation wird einzeln gegen die gewährten Scopes geprüft (ein `read`-Key kann darüber + kein `workflow_create` ausführen), Verschachtelung ist verboten, max. 20 Operationen; die + Kette bricht standardmäßig beim ersten Fehler ab und meldet die restlichen als übersprungen. - **`pdf_stempel_oben`: Schriftart wählbar.** Neue Parameter `schrift`, `schriftgroesse`, `schriftstil`, `abstand_oben_mm`, `auto_verkleinern`. Neben den FPDF-Kern-Fonts steht `NATIONFD` (*NationalFirstFontDotted*, gepunktet) zur Verfügung — dieselbe Schrift, die diff --git a/mcp/README.md b/mcp/README.md index 43b75ba..e326500 100644 --- a/mcp/README.md +++ b/mcp/README.md @@ -14,7 +14,7 @@ Jeder Key traegt eine Auswahl aus drei Scopes; `tools/list` zeigt nur erlaubte T | Scope | Tools | |---|---| -| `read` | workflow_list, workflow_get, workflow_validate, workflow_instances, workflow_status, workflow_log | +| `read` | workflow_list, workflow_get, workflow_validate, workflow_lint, workflow_vars, workflow_instances, workflow_status, workflow_log, task_list, task_doc, task_search, workflow_batch* | | `author` | workflow_create, workflow_update | | `interact` | workflow_start, workflow_interact | @@ -23,7 +23,13 @@ Jeder Key traegt eine Auswahl aus drei Scopes; `tools/list` zeigt nur erlaubte T | Tool | Zweck | |---|---| | `workflow_list` | Alle Definitionen (workflows/*.xml) mit ID/Task-Anzahl. | -| `workflow_get` | XML-Definition eines Workflows. | +| `workflow_get` | Workflow laden. `format=xml` (Standard) oder `format=struktur` — nur der Task-Baum (Typ, id, assign_to, Verzweigung, output_var), rund 70 % weniger Token. | +| `workflow_lint` | Statische Prüfung: unbekannte Task-Typen, doppelte ids, fehlende Pflichtparameter, interaktive Tasks ohne ``. | +| `workflow_vars` | Variablen-Landkarte: was der Workflow erzeugt, was er liest, und was gelesen wird, ohne je gesetzt zu sein (Tippfehler). | +| `workflow_batch` | Mehrere Werkzeuge in **einem** Aufruf (z. B. create + lint + start). Jede Operation wird einzeln gegen die Scopes geprüft; Verschachtelung verboten; max. 20 Operationen; bricht standardmäßig beim ersten Fehler ab. | +| `task_list` | Alle Task-Typen mit Einzeiler; `interaktiv=true` = braucht ``. Optional `suche`. | +| `task_doc` | Doku zu **mehreren** Task-Typen in einem Aufruf; `format=xml\|kurz\|md`. | +| `task_search` | Findet den passenden Task zu einer Aufgabenbeschreibung. | | `workflow_validate` | Workflow-XML auf Wohlgeformtheit + Grundstruktur pruefen. | | `workflow_instances` | Laufende/vergangene Instanzen (filterbar nach status/type/assignee). | | `workflow_status` | Detailstatus einer Instanz (Status, Bearbeiter, Kontext, Tokens). | @@ -57,3 +63,18 @@ Der claude.ai-Connector nutzt **OAuth 2.1** (statische Bearer-Keys funktionieren Discovery/Endpunkte (automatisch genutzt): `/.well-known/oauth-protected-resource`, `/.well-known/oauth-authorization-server`, `/register` (DCR), `/authorize`, `/token`. **Fehler „nur die Startseite erscheint" / „invalid_client":** Der Connector wurde mit dem Key als client_id angelegt (ohne Discovery). Connector entfernen und neu hinzufügen — dann registriert sich claude.ai selbst. + +## Token sparen + +Der Server ist darauf ausgelegt, mit wenigen und kleinen Antworten auszukommen: + +1. **Erst suchen, dann lesen.** `task_search` statt `task_list`, wenn nur ein Task gesucht wird. +2. **Kleinste ausreichende Stufe.** `task_doc format=xml` liefert nur das Beispiel, `kurz` zusätzlich + Zweck und Parametertabelle, `md` die volle Doku. +3. **Struktur statt XML.** `workflow_get format=struktur` reicht zum Verstehen; die XML erst zum Ändern. +4. **Bündeln.** `workflow_batch` ersetzt mehrere Roundtrips (`create` + `lint` + `start`). +5. **Vor dem Start prüfen.** `workflow_lint` und `workflow_vars` fangen Fehler ab, die sonst erst + eine gescheiterte Instanz und einen weiteren Roundtrip kosten. + +\* `workflow_batch` selbst hat den Scope `read`, prüft aber **jede** enthaltene Operation gegen die +gewährten Scopes — ein `read`-Key kann darüber kein `workflow_create` ausführen.