Anbindung

REST- und MCP-API

Diese Anleitung zeigt, wie Sie knowmind aus eigenen Anwendungen ansprechen. Zwei Schnittstellen stehen zur Verfügung: REST für klassische Backend-Integrationen und MCP (JSON-RPC 2.0 über HTTP) für KI-Werkzeuge.

Zielgruppe
Entwicklerinnen und Entwickler, die knowmind in eigene Anwendungen, Workflows oder Backend-Dienste integrieren. Erfordert grundlegende Kenntnisse in HTTP, JSON und der Wahl-Programmiersprache.

Voraussetzungen

  • knowmind-Konto im Tarif Business API oder Enterprise (für eigene API-Tokens und Rate-Limit ab 60 Anfragen pro Minute)
  • API-Token im Format kmt_… (Anleitung: API-Token erstellen)
  • TLS-fähiger HTTP-Client in Ihrer Wahl-Sprache
Hinweis

Zwei Schnittstellen, ein Token

REST und MCP verwenden denselben Bearer-Token, denselben Endpunkt-Host und dieselbe Tenant-Isolation. Wählen Sie REST für strukturierte CRUD-Operationen, MCP für die Anbindung an Sprachmodelle (Tool-Aufrufe).
Architektur der knowmind-API. Ihre Anwendung spricht über HTTPS gegen REST oder MCP. Der Memory-Service hält BM25 und pgvector in PostgreSQL sowie den Wissensgraph in Neo4j.

Schritte

  1. 1

    Endpunkt und Authentifizierung

    Alle Anfragen gehen gegen https://knowmind.de. Die Authentifizierung erfolgt über den Authorization: Bearer kmt_… Header.

    text
    REST:   https://knowmind.de/api/v1/...
    MCP:    https://knowmind.de/api/mcp/v1
    Auth:   Authorization: Bearer kmt_…

    Ergebnis: curl -H "Authorization: Bearer kmt_…" https://knowmind.de/api/health liefert eine Erfolgsmeldung.

  2. 2

    REST-Beispiel: Suche und Speichern

    curl:

    bash
    # Suchen
    curl -X POST https://knowmind.de/api/v1/memory/recall \
      -H "Authorization: Bearer kmt_…" \
      -H "Content-Type: application/json" \
      -d '{
        "query": "Wer ist Ansprechpartnerin für die Einarbeitung?",
        "k": 5,
        "hops": 2,
        "use_graph": true
      }'
    
    # Erinnerung anlegen
    curl -X POST https://knowmind.de/api/v1/memory/entries \
      -H "Authorization: Bearer kmt_…" \
      -H "Content-Type: application/json" \
      -d '{
        "memory_type": "semantic",
        "title": "QM-Schulung Pflicht",
        "content": "Alle Service-Mitarbeitenden absolvieren die QM-Schulung jährlich.",
        "tags": ["qm", "schulung"],
        "source": "internal-handbook"
      }'

    TypeScript (Node 20+):

    ts
    const TOKEN = process.env.KNOWMIND_TOKEN!;
    const BASE = "https://knowmind.de/api/v1";
    
    async function recall(query: string, k = 5) {
      const r = await fetch(`${BASE}/memory/recall`, {
        method: "POST",
        headers: {
          Authorization: `Bearer ${TOKEN}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ query, k, hops: 2, use_graph: true }),
      });
      if (!r.ok) throw new Error(`recall failed: ${r.status}`);
      return r.json();
    }
    
    const hits = await recall("Wer hat den Müller-Vertrag verfasst?");
    console.log(hits);

    Python:

    python
    import os, requests
    
    TOKEN = os.environ["KNOWMIND_TOKEN"]
    BASE = "https://knowmind.de/api/v1"
    HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
    
    def recall(query: str, k: int = 5) -> dict:
        r = requests.post(
            f"{BASE}/memory/recall",
            headers=HEADERS,
            json={"query": query, "k": k, "hops": 2, "use_graph": True},
            timeout=10,
        )
        r.raise_for_status()
        return r.json()
    
    print(recall("DSGVO-Schulung Pflicht?"))
  3. 3

    MCP-Beispiel: JSON-RPC 2.0

    MCP-Aufrufe sind JSON-RPC-2.0-Anfragen an /api/mcp/v1. Standardmäßig wird eine einmalige JSON-Antwort geliefert. Wer Streamable-HTTP braucht (für native Custom Connectoren), setzt Accept: text/event-stream.

    bash
    # Tools auflisten
    curl -X POST https://knowmind.de/api/mcp/v1 \
      -H "Authorization: Bearer kmt_…" \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
    
    # Recall aufrufen
    curl -X POST https://knowmind.de/api/mcp/v1 \
      -H "Authorization: Bearer kmt_…" \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": 2,
        "method": "tools/call",
        "params": {
          "name": "knowmind.recall",
          "arguments": { "query": "Wann ist der nächste Quartalsbericht fällig?", "k": 5 }
        }
      }'

    Ergebnis: Antwort ist ein JSON-RPC-Response-Objekt mit result (bei Erfolg) oder error (bei Fehler).

  4. 4

    Rate-Limits beachten

    Tarif Business API: 60 Anfragen pro Minute. Tarif Enterprise: 600. Überschreitungen liefern HTTP 429 mit Retry-After-Header in Sekunden.

    Setzen Sie in eigenen Clients einen Backoff-Mechanismus ein, der bei 429 wartet und erneut versucht. Im Pseudo-Code: lesen Sie Retry-After, warten Sie die angegebene Anzahl Sekunden (mit Jitter), wiederholen Sie die Anfrage maximal dreimal.

Prüfung des Ergebnisses

Die Anbindung läuft, wenn alle drei Bedingungen erfüllt sind:

  • GET /api/health mit gültigem Bearer-Token liefert HTTP 200 mit Service-Status.
  • Ein POST /api/v1/memory/recall mit einer bekannten Frage liefert mindestens einen Treffer.
  • Im knowmind-Dashboard unter API-Tokens sehen Sie den Zeitpunkt der letzten Nutzung Ihres Tokens.

Fehlerbehebung

FehlermeldungUrsacheAuflösung
401 UnauthorizedToken fehlt, ist widerrufen oder Tippfehler im Header.Token im Dashboard prüfen. Header-Format: Authorization: Bearer kmt_… mit Leerzeichen zwischen Bearer und Token.
403 ForbiddenToken hat nicht den nötigen Scope (write erforderlich für Anlage).Im Dashboard den Token-Scope bearbeiten oder einen neuen Token mit read und write erstellen.
429 Too Many RequestsRate-Limit überschritten (60/min im Business-API-Tarif).Retry-After auswerten, Backoff implementieren, gegebenenfalls Enterprise-Tarif für 600 req/min.
422 Unprocessable Entity bei /memory/entriesPflichtfeld fehlt oder memory_type außerhalb der Enum-Liste.Pflichtfelder: memory_type, title, content. Zulässige Typen: semantic, episodic, procedural, reference, working, entity.
504 Gateway Timeout bei langen DokumentenUpload-Dokument > 10.000 Zeichen wird intern als Background-Job verarbeitet.Antwort enthält job_id. Über GET /api/v1/jobs/{id} Status abfragen, bis status: ready.

Weiterführend