Zum Inhalt springen

Verbinde einen KI-Assistenten (MCP)

MoneyLights hat einen integrierten MCP Server, sodass ein KI-Assistent — Claude Desktop, Claude Code, ein IDE-Agent, alles, was das Protokoll spricht — auf Anfrage mit den Daten deiner Organisation arbeiten kann.

Es ist der gleiche Schlüssel wie bei der REST API: Eine MCP-Verbindung ist ein API-Schlüssel, mit den gleichen Berechtigungen, den gleichen Limits und dem gleichen Widerruf-Button. Es gibt nichts Separates zu verwalten.

Der Endpunkt ist https://api.moneylights.app/mcp (Streamable HTTP). Eine typische Client-Konfiguration:

{
"mcpServers": {
"moneylights": {
"url": "https://api.moneylights.app/mcp",
"headers": { "X-API-Key": "ml_sk_..." }
}
}
}

Mit Claude Code ist es ein Befehl:

Terminal-Fenster
claude mcp add --transport http moneylights https://api.moneylights.app/mcp \
--header "X-API-Key: ml_sk_..."

Erstelle den Schlüssel in Einstellungen → API-Schlüssel und gewähre ihm nur die Berechtigungen, die der Assistent benötigt. Alles erfordert den Schlüssel, einschließlich der Auflistung der Werkzeuge.

Die Werkzeugliste wird aus den Berechtigungen deines Schlüssels bei jeder Anfrage berechnet. Ein Schlüssel ohne Berechtigung erfährt nicht einmal, dass das entsprechende Werkzeug existiert.

WerkzeugBerechtigungWas es tut
get_cashflow_overviewcashflow:readMonatliches Einkommen/Ausgaben/Netto, Eröffnungsbilanz, Top-Kategorien
get_analytics_overviewanalytics:readAggregationen nach Kategorie, Kunde, Projekt und Person
list_transactionstransactions:readTransaktionen, gefiltert und paginiert, jede mit den zugehörigen Dokumenten
list_documentsdocuments:readDokumente und deren extrahierte Felder, jedes mit den zugehörigen Bewegungen
get_document_filedocuments:readDie Originaldatei eines Dokuments — das PDF oder Bild, das die App anzeigt
get_pending_distributionprofitpulse:readAusstehende Safe-to-Spend-Verteilungen
list_vendorsvendors:readAnbieter, mit Gesamtausgaben
list_clientsclients:readKunden, mit Gesamteinnahmen
list_projectsprojects:readProjekte, mit Summen und Zielen
upload_documentdocuments:writeDateien, eine Rechnung oder Quittung in deine Dokumente hochladen

Beide Übersichten berechnen sich auf der gleichen Basis und geben dies an: Jede Antwort trägt eine basis — Zeitraum, Währungen, die abgedeckten Konten (jedes sichtbare, es sei denn, es wird nach ID gefragt) und wie Überweisungen zwischen den eigenen Konten der Organisation behandelt wurden. Standardmäßig sind sie ausgeschlossen von Einnahmen und Ausgaben, Bein für Bein, genau wie die Cashflow-Ansicht der App sie zeigt; übergebe includeInternalTransfers: true an ein Werkzeug für die rohen Bankbewegungen, die dann von der basis als solche gekennzeichnet werden und die nicht mit dem Standard vergleichbar sind. Vergleiche Zahlen über die beiden Werkzeuge nur, wenn ihre basis übereinstimmt. netCashResult ist Einkommen minus Ausgaben von Bankbewegungen — ein Cash-Ergebnis, kein Buchhaltungsgewinn.

Beide Listen sagen es, von beiden Seiten, so wie die App es zeigt. Jede Transaktion trägt linkedDocuments und jedes Dokument trägt linkedTransactions; jeder Eintrag nennt die andere Seite und einen link:

  • confirmed — das Dokument ist mit der Bewegung verknüpft, was als dokumentiert zählt.
  • suggested — der Matcher schlägt die Zuordnung vor; niemand hat sie bestätigt und die Bewegung fehlt noch ihr Dokument. Der Eintrag trägt den score des Matchers.

Ein Assistent kann daher keine Rechnung von einer Rechnung, die auf Bestätigung wartet von bereits abgelegt unterscheiden — und kann nichts davon ändern, da diese Verbindung kein Werkzeug dafür hat.

Eine Bewegung kann mehrere bestätigte Dokumente tragen. Ein Dokument verknüpft sich mit höchstens einer Bewegung, sodass eine in mehreren Teilen bezahlte Rechnung nur die Bewegung zeigt, mit der sie verknüpft wurde. Ein Dokument, das noch Processing ist, hat noch keine Links; None bedeutet keine.

Die Berechtigungen gelten weiterhin: Die gegenüberliegende Seite eines Links wird (Lieferant und Nummer oder Beschreibung und Betrag) nur einem Schlüssel beschrieben, der auch diese Ressource lesen kann. Mit einer Berechtigung erhältst du die ID der anderen Seite, die Art des Links und den Score — genug, um zu wissen, dass eine Bewegung dokumentiert ist, nicht was die Rechnung sagt.

get_document_file nimmt eine documentId von list_documents und gibt die gespeicherte Datei selbst zurück — dasselbe PDF oder Bild, das die App öffnet — als eingebettete Ressource mit ihrem MIME-Typ (application/pdf, image/jpeg, …), neben der ID des Dokuments, dem Dateinamen und der Größe — Dateien bis zu 10 MB, die gleiche Obergrenze wie bei einem Upload. So prüft ein Assistent, ob eine Differenz von der Rechnung, von dem, was extrahiert wurde, oder von der Bewegung, mit der sie verknüpft wurde, kommt, ohne etwas zu exportieren. Es ist ein Lesevorgang: Nichts an dem Dokument, seinen extrahierten Feldern oder seinen Links ändert sich. Ein Dokument, das nicht dir gehört, wird einfach nicht gefunden.

upload_document ist das einzige Werkzeug, das schreibt, und es wurde absichtlich für diese Rolle gewählt: Es fügt nur hinzu. Der Assistent sendet die Datei (PDF oder Bild, bis zu 10 MB) und MoneyLights führt sie durch dasselbe Pipeline wie einen Upload in der App — gespeichert, seine Felder extrahiert (Lieferant, Datum, Nummer, Beträge) und automatisch mit deinen Banktransaktionen abgeglichen.

Das zweimalige Senden derselben Datei dupliziert deine Daten niemals: Der erneute Upload wird als gekennzeichnetes Duplikat aufgezeichnet, das auf das Original verweist. Alles, was der Assistent ablegt, ist sichtbar — und löschbar — in der App.

Jede andere Schreiboperation (Kunden erstellen, Transaktionen umklassifizieren, Umschläge konfigurieren…) bleibt absichtlich in der App: Diese Aktionen setzen einen Menschen voraus, der sie bestätigt.

Der Server bietet auch vorgefertigte Ausgangspunkte — eine monatliche Cashflow-Überprüfung, eine Analyse der Ausgaben bei Anbietern, eine Bereinigung fehlender Dokumente — die nur aufgelistet werden, wenn dein Schlüssel jedes Werkzeug ausführen kann, das sie benötigen. Nutze sie wie sie sind oder bearbeite sie frei.

  • Der Assistent ist durch den Schlüssel begrenzt, der bei jeder Anfrage erneut überprüft wird. Degradierst oder entfernst du den Ersteller des Schlüssels, wird der Assistent bei der nächsten Anfrage eingeschränkt oder stoppt.
  • Finanzdaten enthalten Texte von Fremden — Zahlungsreferenzen, per E-Mail gesendete Dokumente. Die Ergebnisse der Werkzeuge werden innerhalb einer gekennzeichneten Grenze geliefert, die dem Modell sagt, sie als Daten zu behandeln, niemals als Anweisungen. Betrachte das als Minderung, nicht als Garantie, und beschränke die Schlüssel eng.
  • Um einen Assistenten zu trennen, widerrufe seinen Schlüssel in Einstellungen → API-Schlüssel. Sofort, immer verfügbar.

Gib jedem Assistenten seinen eigenen Schlüssel — einer pro Kunde bedeutet, dass du einen trennen kannst, ohne den Rest zu stören.