diff --git a/CHANGELOG.md b/CHANGELOG.md index 7dceddf..4240f57 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 2026-07-04 (MCP) +- **Neu:** Workflow-MCP-Server unter /mcp (JSON-RPC). Gescopte API-Keys (read/author/interact) via Admin-Konsole im Dashboard. 10 Tools zum Erstellen/Bearbeiten/Starten von Workflows und Interagieren mit Instanzen. Siehe mcp/README.md. + ## 2026-07-04 (Editor) - **Neu (Visueller Editor):** Persistente Baustein-Palette links neben dem Baum. Tasks werden per **Drag-and-Drop** aus der Palette in die Container (Sequenz/Parallel/then-else/Wurzel) gezogen. Ersetzt das bisherige, schwer auffindbare "+"-Einfügen (nur am Container-Ende). Touch-tauglich (SortableJS forceFallback) für Tablet-Nutzung. Umsortieren bestehender Karten unverändert. diff --git a/mcp/README.md b/mcp/README.md new file mode 100644 index 0000000..73b6d5d --- /dev/null +++ b/mcp/README.md @@ -0,0 +1,46 @@ +# Workflow-MCP-Server + +MCP-Server (Model Context Protocol) des Workflow-Systems. Erlaubt KI-Clients, Workflows zu erstellen, zu bearbeiten, zu starten und mit laufenden Instanzen zu interagieren. + +## Endpoint & Auth + +- **URL:** `https://workflow.flurneuordnung-sachsen.de/mcp` (JSON-RPC 2.0 ueber HTTP POST, „Streamable HTTP") +- **Auth:** HTTP-Header `Authorization: Bearer ` +- **Keys:** werden im Workflow-Dashboard (`dashboard.php` → Card „MCP-API-Keys") erstellt. Der Klartext-Token ist **nur einmal** bei der Erstellung sichtbar (Server speichert nur den SHA-256-Hash). + +## Scopes + +Jeder Key traegt eine Auswahl aus drei Scopes; `tools/list` zeigt nur erlaubte Tools, `tools/call` prueft den Scope. + +| Scope | Tools | +|---|---| +| `read` | workflow_list, workflow_get, workflow_validate, workflow_instances, workflow_status, workflow_log | +| `author` | workflow_create, workflow_update | +| `interact` | workflow_start, workflow_interact | + +## Tools + +| Tool | Zweck | +|---|---| +| `workflow_list` | Alle Definitionen (workflows/*.xml) mit ID/Task-Anzahl. | +| `workflow_get` | XML-Definition eines Workflows. | +| `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). | +| `workflow_log` | Fachliches Audit-Log einer Instanz. | +| `workflow_create` | Neue Definition anlegen (Fehler, wenn Name existiert). | +| `workflow_update` | Definition ueberschreiben (mit automatischem Backup). | +| `workflow_start` | Neue Instanz starten und ersten Schritt ausfuehren. | +| `workflow_interact` | Laufende Instanz weiterfuehren; optional Kontextvariablen einspielen. | + +## Beispiel + +```bash +curl -s -X POST https://workflow.flurneuordnung-sachsen.de/mcp \ + -H "Authorization: Bearer wfmcp_..." \ + -d "{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"workflow_list\",\"arguments\":{}}}" +``` + +## Technik + +Code unter `0_workflow/mcp/`: `index.php` (Bootstrap + Auth + JSON-RPC-Transport), `McpServer.php` (Protokoll + Registry + Scope-Enforcement), `WorkflowTools.php` (Fachlogik), `McpKeys.php` (Key-Verwaltung, Tabelle `WORKFLOW_MCP_KEY`). nginx: exakte `location = /mcp` noetig (sonst faengt der Scan-Blocker den slash-losen Pfad ab).