Slides Service

Öffentliche Dokumentation

MCP-Betriebsanleitung

Für Modelle, Harnesses und Nutzer. Die identische Anleitung wird nach der MCP-Initialisierung automatisch übertragen.

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 instructions verfügbar. Sie kann zusätzlich mit service_guide_get oder als Resource slides://guide gelesen werden.
  • Öffentliche Anleitung: https://slides.marktkauf-wiele.de/mcp-guide
  • Maschinenlesbare API-Hilfe: https://slides.marktkauf-wiele.de/api/help

Empfohlener Arbeitsablauf

  1. Kläre kurz, was der Nutzer erstellen oder ändern möchte.
  2. Nutze zuerst die passenden List- und Get-Tools, um den bestehenden Zustand zu prüfen.
  3. Führe die gewünschte Änderung mit dem kleinsten passenden Tool aus.
  4. Lies das Ergebnis zurück oder führe eine kleine Kontrollabfrage aus.
  5. Gib dem Nutzer bei Präsentationen die veröffentlichte URL zurück.
  6. 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; mit include_html auch 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_content nur 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: lesende SELECT-, WITH- oder EXPLAIN-Abfrage mit optionalen ?-Parametern und begrenztem Ergebnis.
  • database_execute: genau ein schreibendes oder strukturelles Statement wie CREATE TABLE, INSERT, UPDATE, DELETE oder DROP 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, LIMIT oder kleinerem Tool-Limit eingrenzen.
  • Schreibendes SQL wird von database_query abgelehnt und gehört in database_execute.
  • Der Dienst besitzt bewusst keine Rollen, kein Auditing, keine automatischen Backups und keine Garantie gegen Datenverlust.