Zum Inhalt

Anbindung

REST- und MCP-API

Eigene Anwendungen, Agenten und Pipelines sprechen knowmind über zwei Schnittstellen an: REST für Abfragen und Ablagen im eigenen Programm, MCP für Werkzeugaufrufe eines Sprachmodells. Beide nutzen denselben Zugangsschlüssel.

Zielgruppe
Entwicklerinnen und Entwickler mit Kenntnissen in HTTP und JSON. Die Schnittstelle ist in jedem Tarif enthalten, auch im kostenlosen Privat-Tarif.

Voraussetzungen

  • Eine E-Mail-Adresse für das knowmind-Konto
  • Ein Zugangsschlüssel im Format kmt_… mit read, zum Ablegen zusätzlich write
  • Ein HTTP-Client mit TLS in Ihrer Sprache
Ihre Anwendung spricht über HTTPS gegen REST oder MCP. Dahinter liegen die Volltext- und Vektorsuche in PostgreSQL und der Wissensgraph in Neo4j, betrieben in Deutschland.

Schritte

  1. 1

    knowmind-Konto anlegen

    Auf knowmind.de die E-Mail-Adresse eintragen. Sie erhalten einen Anmelde-Link per Mail und melden sich damit an. Ein Passwort gibt es nicht.

    Danach legen Sie Ihren Arbeitsbereich an: Name, Kurzname und Tarif. Der Tarif Privat kostet 0 € und genügt für diese Anleitung; welche Tarife es gibt, steht auf der Preisseite.

    Ergebnis: Der Willkommensschirm steht offen, mit den Wegen „Erst einmal schreiben“ und „Mit meinem KI-Werkzeug verbinden“. Drei Startkarten liegen im Arbeitsbereich bereit.

  2. 2

    Zugangsschlüssel erzeugen

    Im Cockpit unter Schlüssel einen Schlüssel anlegen: read genügt zum Suchen, write braucht es zum Ablegen und Verknüpfen. Der Schlüssel wird nur einmal angezeigt.

    Hinweis

    Ein Schlüssel je Anwendung

    Legen Sie für jede Anwendung einen eigenen Schlüssel an. Dann lässt sich einer zurückziehen, ohne dass die anderen stehen bleiben. Im Programm gehört er in eine Umgebungsvariable, nicht in den Quelltext.

    Ergebnis: Ein Schlüssel im Format kmt_… liegt vor.

  3. 3

    Endpunkt und Anmeldung

    Alle Anfragen gehen gegen https://knowmind.de, die Anmeldung läuft über die Kopfzeile Authorization: Bearer kmt_…. MCP hat eine einzige Adresse, REST je Aufgabe eine; die vollständige Liste führt die REST-Referenz.

    text
    MCP:    https://knowmind.de/api/mcp/v1
    REST:   https://knowmind.de/api/memory/recall
            https://knowmind.de/api/documents
            https://knowmind.de/api/karten
            https://knowmind.de/api/stats
    Kopf:   Authorization: Bearer kmt_…

    Die MCP-Adresse antwortet als einmalige JSON-Antwort oder als Ereignisstrom, je nachdem, was Ihr Client in der Kopfzeile Accept verlangt. Ohne besondere Angabe kommt reines JSON; mit Accept: text/event-stream der Strom, den manche Connectoren erwarten.

    Ergebnis: Ein Aufruf mit Ihrem Schlüssel liefert die Werkzeugliste; ohne gültigen Schlüssel antwortet knowmind mit HTTP 401.

    bash
    curl -s -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"}'

  4. 4

    Erster Aufruf: Werkzeuge, Ablegen, Suchen

    Die Werkzeugliste zeigt, was zur Verfügung steht. Danach legen Sie etwas ab und suchen danach — im frischen Arbeitsbereich kommen sonst die drei Startkarten zurück, gekennzeichnet als Startpunkt ohne belastbaren Treffer.

    bash
    # Werkzeuge 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"}'
    
    # Ablegen
    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_store_memory",
          "arguments": {
            "memory_type": "semantic",
            "title": "Rechnungsweg",
            "content": "Rechnungen gehen an die Zentrale, nie an die Filiale.",
            "source": "handbuch"
          }
        }
      }'
    
    # Suchen
    curl -X POST https://knowmind.de/api/mcp/v1 \
      -H "Authorization: Bearer kmt_…" \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0", "id": 3, "method": "tools/call",
        "params": {
          "name": "knowmind_recall_memories",
          "arguments": { "query": "Wohin gehen Rechnungen?", "k": 5 }
        }
      }'

    Ergebnis: Jede Antwort ist ein JSON-RPC-Objekt mit result oder error. Der abgelegte Inhalt ist im nächsten Aufruf sofort zu finden.

  5. 5

    Dasselbe im Programm

    TypeScript (Node 20 oder neuer):

    ts
    const TOKEN = process.env.KNOWMIND_TOKEN!;
    const MCP = "https://knowmind.de/api/mcp/v1";
    
    async function werkzeug(name: string, args: Record<string, unknown>) {
      const antwort = await fetch(MCP, {
        method: "POST",
        headers: {
          Authorization: `Bearer ${TOKEN}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          jsonrpc: "2.0",
          id: 1,
          method: "tools/call",
          params: { name, arguments: args },
        }),
      });
      if (!antwort.ok) throw new Error(`knowmind: HTTP ${antwort.status}`);
      return antwort.json();
    }
    
    const treffer = await werkzeug("knowmind_recall_memories", {
      query: "Wer hat den Müller-Vertrag verfasst?",
      k: 5,
    });
    console.log(treffer);

    Python:

    python
    import os, requests
    
    TOKEN = os.environ["KNOWMIND_TOKEN"]
    MCP = "https://knowmind.de/api/mcp/v1"
    KOPF = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
    
    def werkzeug(name: str, args: dict) -> dict:
        antwort = requests.post(
            MCP,
            headers=KOPF,
            json={
                "jsonrpc": "2.0",
                "id": 1,
                "method": "tools/call",
                "params": {"name": name, "arguments": args},
            },
            timeout=10,
        )
        antwort.raise_for_status()
        return antwort.json()
    
    print(werkzeug("knowmind_recall_memories", {"query": "DSGVO-Schulung?", "k": 5}))

    Ergebnis: Dieselben Treffer wie über curl, mit dem Schlüssel aus der Umgebungsvariablen.

  6. 6

    Fragegrenze einplanen

    Die Fragegrenze gilt für die Werkzeuge, die das Gedächtnis befragen; Ablegen, Verknüpfen und die Auskunft über den Bestand zählen nicht mit. Die beiden Wege melden sie unterschiedlich:

    • REST antwortet mit HTTP 429 und nennt in der Kopfzeile Retry-After die Wartezeit in Sekunden.
    • MCP antwortet mit HTTP 200 und im Inhalt einem error-Feld mit der Kennung -32004 und einem Satz, den das KI-Werkzeug weitergeben kann. Eine Wartelogik am Statuscode greift hier nicht; prüfen Sie das error-Feld.

    Warten Sie die genannte Zeit ab, mit etwas Streuung, und wiederholen Sie höchstens dreimal. Welche Grenzen Ihr Tarif hat, steht unter Grenzwerte.

Hinweis

Gleicher Titel: neue Fassung oder zweiter Eintrag

knowmind_store_memory legt immer einen neuen Eintrag an; ein vorhandener mit demselben Titel bleibt daneben gültig. knowmind_upload_document löst dagegen das gültige Dokument mit demselben Titel im selben Bereich ab und nennt die abgelösten Kennungen in der Antwort. Gelöscht wird dabei nichts: die alte Fassung bleibt zu früheren Stichtagen abrufbar, über knowmind_recall_at_time oder POST /api/memory/recall-temporal. Mit replace: false legen Sie ausdrücklich ein zweites Dokument daneben.

Welches Werkzeug sich wie anmeldet

  • Claude Desktop, Claude.ai, Claude Code und ChatGPT melden sich über Ihr knowmind-Konto an, mit der Freigabe im Browser. Einen Schlüssel legen Sie dafür nicht an.
  • Cursor, Gemini CLI, die Kommandozeile und n8n arbeiten mit einem Zugangsschlüssel. Beim Einrichten über den Willkommensschirm erzeugt knowmind ihn mit.
  • Eigene Anwendungen senden den Schlüssel bei jedem Aufruf in der Kopfzeile, wie in den Beispielen oben.

Weitere Werkzeuge mit MCP

Wer einen MCP-Server über HTTP mit eigener Kopfzeile aufnehmen kann, kann knowmind anbinden, auch ohne eigene Anleitung — etwa LM Studio oder Continue. Viele dieser Werkzeuge lesen dafür eine JSON-Datei nach diesem Muster:

json
{
  "mcpServers": {
    "knowmind": {
      "url": "https://knowmind.de/api/mcp/v1",
      "headers": {
        "Authorization": "Bearer kmt_…"
      }
    }
  }
}

Wo die Datei liegt und wie die Felder heißen, steht in der Dokumentation des Werkzeugs. knowmind erhält die Suchanfrage und liefert die Treffer; die übrige Unterhaltung mit dem Modell erhält knowmind nicht. Unterstützt ein Werkzeug nur lokal gestartete Server, dient die Kommandozeile mit knowmind mcp als Vermittlung.

Prüfung des Ergebnisses

Die Anbindung trägt, wenn alle drei Punkte zutreffen:

  • tools/list mit Ihrem Schlüssel liefert die Werkzeugliste; mit einem falschen Schlüssel kommt HTTP 401.
  • tools/call mit knowmind_recall_memories und einer bekannten Frage liefert einen Treffer.
  • Im Cockpit stehen der Aufruf in der Zeitleiste und unter Schlüssel der Zeitpunkt der letzten Nutzung.

Fehlerbehebung

FehlermeldungUrsacheAuflösung
401 UnauthorizedDer Schlüssel fehlt, ist zurückgezogen, oder die Kopfzeile ist falsch geschrieben.Format prüfen: Authorization: Bearer kmt_… mit Leerzeichen hinter Bearer. Im Cockpit prüfen, ob der Schlüssel noch gilt.
403 Forbidden (REST)Der Schlüssel hat nur read, der Aufruf will schreiben.Einen Schlüssel mit read und write anlegen und den alten zurückziehen.
-32002 Missing scope (MCP)Dasselbe über den MCP-Weg: der Schlüssel hat das nötige Recht nicht. Der Statuscode bleibt dabei 200.Einen Schlüssel mit read und write anlegen; die Meldung nennt das fehlende Recht.
429 Too Many Requests (REST)Die Fragegrenze des Arbeitsbereichs ist erreicht.Retry-After lesen und so lange warten. Bei dauerhaft hohem Aufkommen lässt ein größerer Tarif mehr Fragen je Minute zu.
-32004 (MCP)Dieselbe Grenze über den MCP-Weg, als Fehler im Inhalt bei HTTP 200.Das error-Feld der Antwort prüfen und den nächsten Aufruf später stellen.
Der Connector erwartet einen EreignisstromDie Anfrage verlangt kein text/event-stream.Kopfzeile Accept: text/event-stream senden; ohne diese Angabe antwortet knowmind mit reinem JSON.
Was wir geprüft haben
Geprüft am 19. Oktober 2026: Werkzeugliste, Ablegen und Suchen über /api/mcp/v1 mit Schlüssel in der Kopfzeile laufen, als JSON und als Ereignisstrom. Konto, Arbeitsbereich und Löschung des Arbeitsbereichs wurden über dieselbe Strecke gegangen.

Weiterführend