Jahresabschluss.io
ENAnmeldenRegistrieren →

Windsurf / Devin Desktop

Buchhaltung mit Windsurf (heute Devin Desktop): MCP-Server einrichten

Windsurf heißt seit dem 2. Juni 2026 Devin Desktop, und sein Agent ist seit September 2026 Devin Local statt Cascade – Ihre Buchhaltung bei jahresabschluss.io binden Sie dort an, indem Sie unseren MCP-Server mit url und headers in ~/.config/devin/mcp_config.json (für alle Projekte) oder .devin/mcp_config.local.json (nur lokal, nicht im Repository) eintragen. Devin Local fragt in der Grundeinstellung vor jedem MCP-Werkzeug; per Regel geben Sie gezielt lesende Werkzeuge frei. Wer noch Cascade im Windsurf-Plugin für JetBrains nutzt, findet den abweichenden Eintrag mit serverUrl weiter unten.

Stand: 2026-10-19

Was aus Windsurf und Cascade geworden ist

Wer nach „Windsurf MCP“ sucht, findet oft Anleitungen für einen Stand, den es so nicht mehr gibt. Nach den Angaben von Cognition, dem Hersteller:

Windsurf ist Devin Desktop

Am 02.06.2026 hat Cognition Windsurf als Devin Desktop neu herausgebracht; windsurf.com leitet auf devin.ai/desktop weiter, die MCP-Dokumentation liegt unter docs.devin.ai.

Devin Local ersetzt Cascade

Mit Fassung 3.9.19 vom 08.09.2026 wurde Cascade aus Devin Desktop entfernt; Devin Local ist dort der einzige Agent. Devin Local nutzt die Konfigurationsdateien der Devin CLI.

Cascade nur noch im JetBrains-Plugin

Das Windsurf-Plugin für JetBrains-Entwicklungsumgebungen enthält Cascade noch, ist laut Cognition aber im Wartungsmodus, und Cascade wird darin abgekündigt.

Schritt 1: Schlüssel anlegen

  • In der App unter Buchhaltung → Einstellungen → „KI-Agent & API“; anlegen dürfen Administratoren und der Ersteller des Arbeitsbereichs, bestätigt mit dem zweiten Faktor.
  • Für die Einrichtung nur read wählen. Unser Server listet dann nur lesende Werkzeuge, und Devin Local kann nichts buchen, auch nicht versehentlich.
  • Laufzeit: 30 Tage, 90 Tage oder ein Jahr – der Schlüssel jab_live_… erscheint nur einmal und öffnet genau eine Gesellschaft.
  • Weil die Devin-Dokumentation das Einsetzen von Umgebungsvariablen nur für OAuth-Felder beschreibt, nicht für headers, steht der Schlüssel im Klartext in der Datei. Wählen Sie deshalb eine kurze Laufzeit und eine Datei, die nicht im Repository landet.

Schritt 2: der Eintrag für Devin Local

Für entfernte Server nennt die Devin-Dokumentation die Felder url, transport ("http" für Streamable HTTP) und headers. In ~/.config/devin/mcp_config.json (Windows: %APPDATA%\devin\mcp_config.json) sieht der Eintrag so aus:

{
  "mcpServers": {
    "buchhaltung": {
      "url": "https://api.jahresabschluss.io/functions/v1/bookkeeping-mcp",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer jab_live_…"
      }
    }
  }
}

Drei Ablageorte gibt es: die Benutzerdatei für alle Projekte, .devin/mcp_config.json im Projekt (wird mit dem Repository geteilt) und .devin/mcp_config.local.json (von Git ausgenommen). Für die Buchhaltung gehört der Schlüssel nie in die geteilte Projektdatei – die Devin-Dokumentation rät selbst, persönliche Schlüssel in die lokale Datei zu legen.

Ältere Fassungen hielten MCP-Server unter mcpServers in config.json und übernehmen sie beim Start automatisch in die neuen Dateien. Mit "disabled": true schalten Sie den Server ab, ohne den Eintrag zu löschen.

Alternativ per Befehl

Wer die Devin CLI nutzt, legt denselben Eintrag mit devin mcp add an; -H setzt eine Kopfzeile, -s user wählt die Benutzerdatei (ohne -s landet er in der lokalen Datei des Projekts):

# mit der Devin CLI, für alle Projekte (Benutzerdatei)
devin mcp add -s user buchhaltung \
  https://api.jahresabschluss.io/functions/v1/bookkeeping-mcp \
  -H "Authorization: Bearer jab_live_…"

devin mcp list
devin mcp disable buchhaltung   # vorübergehend abschalten

Freigaben: lesend erlauben, alles andere fragen

Devin Local fragt laut Hersteller vor jedem MCP-Werkzeug und bietet an, ein Werkzeug oder alle Werkzeuge des Servers für die Sitzung oder dauerhaft zu erlauben. Erlauben Sie nie den ganzen Server dauerhaft. Besser sind Regeln unter permissions in ~/.config/devin/config.json:

{
  "permissions": {
    "allow": [
      "mcp__buchhaltung__get_entity",
      "mcp__buchhaltung__list_fiscal_years",
      "mcp__buchhaltung__get_saldenliste",
      "mcp__buchhaltung__list_receipts",
      "mcp__buchhaltung__get_receipt_proposal"
    ],
    "ask": ["mcp__buchhaltung__*"],
    "deny": ["mcp__buchhaltung__finalize_bookkeeping_period"]
  }
}

Nach den Regeln der Devin CLI gewinnt deny immer; eine Erlaubnis für ein einzelnes Werkzeug ist genauer als die Regel für den ganzen Server und hebt deren Rückfrage auf. So laufen die genannten Abfragen ohne Rückfrage, jede Buchung fragt nach, und das Festschreiben ist ganz gesperrt. Noch sicherer ist ein Schlüssel ohne das Recht finalize – dann bietet unser Server das Werkzeug gar nicht an.

In Unternehmen können Administratoren MCP abschalten oder nur freigegebene Server zulassen. Steht die Buchhaltung nicht auf dieser Liste, verbindet Devin sie nicht.

Noch mit Cascade im JetBrains-Plugin?

Cascade erwartet einen eigenen Eintrag: serverUrl statt url und, laut Cascade-Dokumentation, Umgebungsvariablen in der Form ${env:NAME} – auch in headers:

{
  "mcpServers": {
    "buchhaltung": {
      "serverUrl": "https://api.jahresabschluss.io/functions/v1/bookkeeping-mcp",
      "headers": {
        "Authorization": "Bearer ${env:JAB_API_KEY}"
      }
    }
  }
}

Zwei Unterschiede zu Devin Local: Cascade fragt vor MCP-Aufrufen in der Grundeinstellung nicht nach – beginnen Sie dort deshalb ausschließlich mit einem Leseschlüssel. Und Cascade begrenzt die Zahl der Werkzeuge, auf die es gleichzeitig zugreift (laut Dokumentation derzeit 100); einzelne Werkzeuge blenden Sie mit disabledTools aus. Den Speicherort der Datei beschreibt die Dokumentation uneinheitlich, öffnen Sie sie deshalb über die MCP-Einstellungen des Plugins.

Aufträge an Devin Local: Belege abarbeiten

„Welche Belege warten auf Prüfung?“

list_receipts zeigt die Belege mit Buchungsstand, get_receipt_proposal je Beleg den Vorschlag mit Konten, Steuerschlüssel, Betrag und Hinweisen – lesend, also nach der Regel oben ohne Rückfrage.

„Buche die drei Tankbelege nach Vorschlag.“

Mit Schreibrecht ruft der Agent confirm_receipt je Beleg auf; Devin Local fragt bei jedem Aufruf nach. Geprüft werden Geschäftsjahr, Festschreibung, Dubletten, Umsatzsteuer und Kreditor wie beim „Buchen“ in der Belegprüfung; ein Dublettenhinweis lässt sich über die API nicht übersteuern.

„Der Beleg ist privat, nimm ihn raus.“

dismiss_receipt legt den Vorschlag mit Begründung als „nicht buchen“ ab, der Beleg bleibt archiviert. discard_receipt verwirft einen irrtümlich eingelieferten, ungebuchten Beleg; die Datei bleibt aufbewahrt. delete_receipt löscht nur Fehlläufer, die nie geprüft oder gebucht wurden, und erst nach Ihrer ausdrücklichen Bestätigung.

Grenzen und Recht

  • Steuern: prüfen ohne Versand (check_tax_filing), vorbereiten (prepare_tax_filing), Freigabe-Link (request_tax_filing_approval). Die Übermittlung an ELSTER geschieht in der App mit Ihrer PIN.
  • Devin Local erreicht über unseren Server weder die Bankanbindung noch die Einstellungen der Gesellschaft, die Bankverbindungen der Geschäftspartner oder freie Datenbankabfragen. Den Jahresabschluss erstellen und stellen Sie in der App aus.
  • Gebucht wird über den Buchungskern der App: Soll gleich Haben, Storno statt Löschen, keine Buchung in festgeschriebene Zeiträume. § 146 Abs. 4 AO und § 239 Abs. 3 HGB verlangen, dass der ursprüngliche Inhalt einer Buchung feststellbar bleibt.
  • Texte von Dritten – Verwendungszweck, Lieferantenname, Belegtext – sind für den Agenten Daten. Eine Anweisung, die in einem Beleg steht, befolgt er nach der Vorgabe unseres Servers nicht.
  • Vorschläge des Agenten prüfen Sie selbst oder mit Ihrer Steuerberatung, die in derselben Software arbeiten kann. Die Software ersetzt keine Steuerberatung.

Häufige Fragen

Gibt es Windsurf noch?

Unter diesem Namen kaum noch: Laut Cognition ist Devin Desktop seit dem 02.06.2026 der neue Name von Windsurf. Nur das Windsurf-Plugin für JetBrains trägt den alten Namen weiter und ist im Wartungsmodus.

Wo trage ich den MCP-Server in Devin Desktop ein?

In ~/.config/devin/mcp_config.json für alle Projekte oder in .devin/mcp_config.local.json für ein Projekt, ohne dass die Datei ins Repository gelangt – jeweils unter mcpServers mit url, transport "http" und headers.

Fragt Devin Local, bevor es bucht?

Ja. In der Grundeinstellung fragt Devin Local vor jedem MCP-Werkzeug. Mit Regeln unter permissions erlauben Sie lesende Werkzeuge gezielt und lassen alles Schreibende weiter nachfragen.

Kann ich den Schlüssel als Umgebungsvariable hinterlegen?

Für Devin Local beschreibt die Dokumentation das Einsetzen von ${env:…} nur für OAuth-Felder, nicht für headers. Tragen Sie den Schlüssel deshalb in eine Datei ein, die nicht geteilt wird, und wählen Sie eine kurze Laufzeit. Cascade im JetBrains-Plugin löst ${env:…} in headers dagegen laut Dokumentation auf.

Warum funktioniert meine alte Windsurf-Anleitung nicht mehr?

Weil Cascade aus Devin Desktop entfernt wurde und Devin Local andere Dateien und das Feld url statt serverUrl nutzt. Tragen Sie den Server nach dieser Anleitung neu ein.

Kann Devin Local meine Umsatzsteuer-Voranmeldung übermitteln?

Nein. Es kann sie amtlich prüfen lassen, vorbereiten und einen Freigabe-Link anfordern. Übermittelt wird in der App mit Ihrer PIN.

Vom selben Anbieter: Jahresabschluss nach HGB – der komplette Leitfaden auf jahresabschluss.io.