Slides Service – MCP-Betriebsanleitung
Zweck und Vertrauensmodell
Dieser interne Dienst veröffentlicht HTML-Präsentationen, speichert zugehörige Bilder und stellt gemeinsame SQLite-Datenbanken bereit. Es gibt genau ein Passwort und genau eine Berechtigungsstufe. Jeder authentifizierte Client darf alles lesen, verändern und löschen. Der Dienst ist kein sicherer Speicher für vertrauliche Daten.
Verbindung und Authentifizierung
- MCP-Adresse: https://slides.marktkauf-wiele.de/
- Expliziter MCP-Endpunkt, falls ein Harness einen Pfad verlangt: https://slides.marktkauf-wiele.de/mcp
- Transport: Streamable HTTP
- Authentifizierung: Browserbasierter OAuth-2.1-Code-Flow mit PKCE.
- Wenn die Verbindung mit HTTP 401 antwortet, folgt der MCP-Client der OAuth-Erkennung und der Agent öffnet selbstständig die Autorisierungsseite im Browser.
- Der Nutzer gibt das gemeinsame Slides-Passwort ausschließlich in der normalen Slides-Browseranmeldung ein. Nach erfolgreicher Prüfung erscheint eine sichtbare Erfolgsmeldung, bevor der Browser zum Agenten zurückkehrt. Das Passwort nicht im Chat erfragen, nicht als Tool-Argument senden und nicht in Inhalte schreiben.
- Nach erfolgreicher MCP-Initialisierung ist diese Betriebsanleitung automatisch im Feld
instructionsverfügbar. Sie kann zusätzlich mitservice_guide_getoder als Resourceslides://guidegelesen werden. - Öffentliche Anleitung: https://slides.marktkauf-wiele.de/mcp-guide
- Maschinenlesbare API-Hilfe: https://slides.marktkauf-wiele.de/api/help
Empfohlener Arbeitsablauf
- Kläre kurz, was der Nutzer erstellen oder ändern möchte.
- Nutze zuerst die passenden List- und Get-Tools, um den bestehenden Zustand zu prüfen.
- Führe die gewünschte Änderung mit dem kleinsten passenden Tool aus.
- Lies das Ergebnis zurück oder führe eine kleine Kontrollabfrage aus.
- Gib dem Nutzer bei Präsentationen die veröffentlichte URL zurück.
- Frage vor endgültigem Löschen von Bildern oder Datenbanken nach einer Bestätigung. Präsentationen werden zunächst in den Papierkorb verschoben.
Präsentationen
presentation_list: Präsentationen suchen und auflisten.presentation_get: Metadaten lesen; mitinclude_htmlauch das vollständige HTML.presentation_create: vollständiges HTML veröffentlichen. Ohne festen Slug sollte der zufällige Suffix aktiviert bleiben.presentation_update: Titel und/oder HTML ändern.presentation_delete: Präsentation inklusive Bilder in den Papierkorb verschieben.trash_list,trash_restore,trash_delete: Papierkorb verwalten.
Präsentationen sind vollständige HTML-Dokumente. Bilder derselben Präsentation werden relativ eingebunden, zum Beispiel:
<img src="./images/chart.png" alt="Umsatzdiagramm">
Bilder
- Unterstützt: JPEG, PNG, WebP und GIF.
image_list: Bilder einer Präsentation auflisten.image_get: Metadaten lesen;include_contentnur verwenden, wenn der Binärinhalt wirklich benötigt wird.image_create: neues Bild mit Dateiname und Base64-Inhalt anlegen.image_update: vorhandenes Bild vollständig ersetzen.image_delete: Bild endgültig löschen.- Standardlimit: 10 MB pro Bild.
- Dateiendung und tatsächlicher Bildtyp müssen zusammenpassen.
SQLite-Datenbanken
- Es wird ausschließlich SQLite unterstützt.
- Datenbanken sind gemeinsam und nicht fest einer Präsentation zugeordnet.
- Namen bestehen aus Kleinbuchstaben, Zahlen und Bindestrichen.
database_list,database_get,database_schema_get: Bestand und Schema prüfen.database_create: leere SQLite-Datenbank anlegen.database_update: Datenbank umbenennen.database_delete: Datenbank endgültig löschen.database_query: lesendeSELECT-,WITH- oderEXPLAIN-Abfrage mit optionalen?-Parametern und begrenztem Ergebnis.database_execute: genau ein schreibendes oder strukturelles Statement wieCREATE TABLE,INSERT,UPDATE,DELETEoderDROP TABLE.database_import_csv: UTF-8-CSV in eine Tabelle importieren; Spalten werden zunächst als TEXT angelegt.database_export_csv: Ergebnis einer lesenden Abfrage als CSV exportieren.- SQLite-Operationen haben feste Zeit-, Ergebnis- und Speichergrenzen. Bei HTTP 408 wurde das Zeitlimit erreicht, bei HTTP 413 eine Größenbegrenzung. Die Abfrage dann vereinfachen, stärker filtern oder den Export aufteilen.
- CSV-Exporte neutralisieren Werte, die Tabellenkalkulationen als Formeln interpretieren könnten, durch ein führendes Apostroph.
SQL-Werte möglichst über params und ?-Platzhalter übergeben. Vor Änderungen zuerst das Schema lesen. Nach Schreiboperationen mit einer kleinen database_query kontrollieren.
Fehler und Grenzen
- HTTP 401: OAuth-Erkennung starten, Autorisierungsseite im Browser öffnen und den Nutzer dort das Passwort eingeben lassen.
- Konflikt beim Anlegen: Zuerst mit List/Get prüfen, ob Name, Slug oder Datei bereits existiert.
- Zu große Antwort: Query mit
WHERE,LIMIToder kleinerem Tool-Limit eingrenzen. - Schreibendes SQL wird von
database_queryabgelehnt und gehört indatabase_execute. - Der Dienst besitzt bewusst keine Rollen, kein Auditing, keine automatischen Backups und keine Garantie gegen Datenverlust.