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.
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
Schritte
- 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
Zugangsschlüssel erzeugen
Im Cockpit unter Schlüssel einen Schlüssel anlegen:
readgenügt zum Suchen,writebraucht es zum Ablegen und Verknüpfen. Der Schlüssel wird nur einmal angezeigt.HinweisEin 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
Endpunkt und Anmeldung
Alle Anfragen gehen gegen
https://knowmind.de, die Anmeldung läuft über die KopfzeileAuthorization: Bearer kmt_…. MCP hat eine einzige Adresse, REST je Aufgabe eine; die vollständige Liste führt die REST-Referenz.textMCP: 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
Acceptverlangt. Ohne besondere Angabe kommt reines JSON; mitAccept: text/event-streamder 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.
bashcurl -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
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
resultodererror. Der abgelegte Inhalt ist im nächsten Aufruf sofort zu finden. - 5
Dasselbe im Programm
TypeScript (Node 20 oder neuer):
tsconst 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:
pythonimport 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
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-Afterdie Wartezeit in Sekunden. - MCP antwortet mit HTTP 200 und im Inhalt einem
error-Feld mit der Kennung-32004und einem Satz, den das KI-Werkzeug weitergeben kann. Eine Wartelogik am Statuscode greift hier nicht; prüfen Sie daserror-Feld.
Warten Sie die genannte Zeit ab, mit etwas Streuung, und wiederholen Sie höchstens dreimal. Welche Grenzen Ihr Tarif hat, steht unter Grenzwerte.
- REST antwortet mit HTTP 429 und nennt in der Kopfzeile
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:
{
"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/listmit Ihrem Schlüssel liefert die Werkzeugliste; mit einem falschen Schlüssel kommt HTTP 401.tools/callmitknowmind_recall_memoriesund einer bekannten Frage liefert einen Treffer.- Im Cockpit stehen der Aufruf in der Zeitleiste und unter Schlüssel der Zeitpunkt der letzten Nutzung.
Fehlerbehebung
| Fehlermeldung | Ursache | Auflösung |
|---|---|---|
| 401 Unauthorized | Der 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 Ereignisstrom | Die Anfrage verlangt kein text/event-stream. | Kopfzeile Accept: text/event-stream senden; ohne diese Angabe antwortet knowmind mit reinem JSON. |
/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.
