MCP: Wie wir Bexio an einen AI-Assistenten angeschlossen haben

TECHTALKREFERENZEN
Wir alle kennen ChatGPT, Claude und Co. Sie können Texte schreiben, Fragen beantworten, Code generieren. Aber fragt mal einen Chatbot: "Zeig mir alle offenen Rechnungen in Bexio." Oder: "Erstelle ein Angebot für den Kunden Müller AG." Stille. 
mcp-e-bexio (1)

Das Problem: AI kann reden, aber nicht handeln

Das LLM hat keinen Zugriff auf eure Systeme. Es lebt in seiner eigenen Welt, kann brillant formulieren, aber nicht auf eure Daten zugreifen, geschweige denn Aktionen in euren Tools auslösen.

Genau dieses Problem löst MCP, das Model Context Protocol.

Was ist MCP?

MCP ist ein offener Standard (entwickelt von Anthropic, den Machern von Claude), der definiert, wie ein LLM mit externen Systemen kommuniziert. Es ist quasi das USB-Kabel der AI-Welt:

  • Vor USB: Jedes Gerät hatte seinen eigenen Stecker. Drucker, Scanner, Maus: alles inkompatibel.
  • Nach USB: Ein Standard, jedes Gerät funktioniert mit jedem Computer.
  • Vor MCP: Jede AI-Integration braucht eigenen Code. Bexio-Anbindung? Eigene API-Integration. CRM-Anbindung? Nochmal. Kalender? Nochmal.
  • Nach MCP: Ein Standard. Jedes System, das einen MCP-Server bereitstellt, kann von jedem MCP-fähigen AI-Client genutzt werden.

Wie funktioniert das konkret?

MCP definiert drei Konzepte:

Tools: Aktionen, die das LLM ausführen kann

"Suche Kontakte in Bexio", "Erstelle eine Rechnung", "Zeige offene Angebote"

Resources: Daten, die das LLM lesen kann

Kundenlisten, Produktkataloge, Rechnungsdetails

Prompts: Vorgefertigte Anweisungen für wiederkehrende Aufgaben

"Erstelle ein Angebot" → löst einen definierten Workflow aus

Das LLM entscheidet selbst, welche Tools es braucht, ruft sie in der richtigen Reihenfolge auf und formuliert aus den Ergebnissen eine Antwort. Im Prinzip wird das LLM zum intelligenten Vermittler zwischen Mensch und System.

Unser Projekt: Bexio als MCP-Server

Bexio ist die Buchhaltungs- und Business-Software, die wir intern bei ongoing nutzen. Kontakte, Rechnungen, Angebote: alles läuft darüber. Das Ziel: einen MCP-Server bauen, der es uns erlaubt, per natürlicher Sprache mit Bexio zu arbeiten.

Was wir angebunden haben

Bereich

 

Beispiel-Aktionen

 

KontakteKunden suchen, Kontaktdetails abrufen, nach Firma filtern
RechnungenAlle offenen Rechnungen anzeigen, Rechnungsdetails abrufen, nach Fälligkeit filtern
AngeboteAngebote für einen Kunden erstellen, Positionen hinzufügen, Status abfragen

 

Was jetzt möglich ist

Ein paar Beispiele aus dem Alltag:

  • "Zeig mir alle offenen Rechnungen über CHF 5'000"
    → Das LLM ruft das Rechnungs-Tool auf, filtert nach Status "offen" und Betrag, und liefert eine formatierte Übersicht.
     
  • "Erstelle ein Angebot für die Müller AG für ein Kundenportal mit Bexio-Anbindung"
    → Das LLM sucht zuerst den Kontakt, erstellt dann das Angebot mit den richtigen Positionen, Steuersätzen und Formatierung.
     
  • "Welche Angebote haben wir diesen Monat an Neukunden verschickt?"
    → Kombination aus Kontakt-Suche (Erstelldatum) und Angebots-Abfrage.

Klingt magisch. War es aber nicht, zumindest nicht am Anfang.

Die Architektur

Der Stack

Wir haben den MCP-Server mit dem Symfony AI Bundle gebaut.

Warum wir das Bundle gewählt haben:

Das Bundle abstrahiert die MCP-Spezifikation in Symfony-Services. Statt JSON-RPC-Nachrichten manuell zu bauen und Tool-Definitionen als JSON-Schema zu schreiben, definiert ihr Tools als PHP-Klassen mit Attributen:

Bildschirmfoto 2026-07-06 um 10.23.57

Das Bundle übernimmt:

Tool-Discovery und -Registration beim MCP-Client

Serialisierung/Deserialisierung der MCP-Nachrichten

Input-Validierung basierend auf den Typ-Definitionen

Transport-Layer (stdio, HTTP, SSE)

Für Symfony-Entwickler fühlt sich das an wie jeder andere Service: keine neue Sprache, kein neues Framework, keine neue Denkweise.

Architektur-Überblick

Bildschirmfoto 2026-07-06 um 10.30.04

Was wir gelernt haben: Tools reichen nicht, es braucht Workflows

Und hier wird es spannend. Denn der MCP-Server war in zwei Tagen gebaut. Die Tools funktionierten, die API-Anbindung lief. Technisch alles sauber.

Aber das Ergebnis war unbrauchbar.

Nicht weil die Technik nicht funktionierte, sondern weil das LLM nicht wusste, wie Bexio richtig zu bedienen ist. Ein LLM mit Tools ist wie ein intelligenter Praktikant mit Systemzugang: Er kann die Knöpfe drücken, aber er kennt die Geschäftsprozesse nicht.

Das Problem in einem Satz

Einzelne Tools geben dem LLM Fähigkeiten. Aber ohne Workflows und Instruktionen fehlt das Wissen, diese Fähigkeiten sinnvoll zu kombinieren.

Konkrete Probleme, die wir hatten:

Steuersätze: Das LLM hat Positionen mit dem falschen Steuersatz erstellt, weil es nicht wusste, dass in der Schweiz 8.1% Standard ist und Lebensmittel 2.6% haben. Es hat einfach irgendetwas genommen oder den Default belassen.

Mengeneinheiten: Immer "Stück", auch wenn "Stunden" oder "Pauschal" richtig gewesen wäre. Das LLM kannte die verfügbaren Einheiten nicht.

Formatierung: Keine Subpositionen, keine optionalen Positionen, keine Gruppierung. Das LLM wusste nicht, dass Bexio diese Features überhaupt hat. Es hat einfach eine flache Liste von Positionen erstellt, wie jemand, der Bexio zum ersten Mal öffnet.

Reihenfolge: Das LLM hat versucht, direkt ein Angebot zu erstellen, ohne zuerst den Kunden zu suchen. Oder es hat den falschen Kunden genommen, weil es nicht nachgefragt hat.

Das Offerten-Problem im Detail

Das Erstellen einer Offerte war unser härtester Testfall, und das beste Beispiel dafür, warum MCP mehr braucht als Tools.

Version 1: Nur Tools

1) User: "Erstelle ein Angebot für Müller AG für ein Kundenportal mit Bexio-Anbindung"

User: "Erstelle ein Angebot für Müller AG für ein Kundenportal mit Bexio-Anbindung"

Was passierte:

  • LLM erstellt Angebot ohne Kunden-Lookup → Fehler
  • Steuersatz: 0% (Default) → falsch
  • Mengeneinheit: "Stück" für Dienstleistungsstunden → falsch
  • Positionen: Flache Liste → keine Struktur
  • Optionale Positionen: Nicht verwendet → Bexio-Feature unbekannt

Version 2: Tools + Workflow-Instruktionen

Wir haben dem MCP-Server Prompts hinzugefügt, vorgefertigte Instruktionen, die dem LLM den Geschäftsprozess erklären:

Bildschirmfoto 2026-07-06 um 10.32.23

Das Ergebnis

Aus unbrauchbar wurde verlässlich. Dasselbe LLM, dieselben Tools, aber mit Workflow-Instruktionen erstellt es Angebote, die fast 1:1 so aussehen, wie wir sie manuell erstellen würden. Mit dem richtigen Steuersatz, sinnvollen Mengeneinheiten, strukturierten Subpositionen und optionalen Extras.

Die Lektion

MCP-Tools sind die Hände. Workflow-Instruktionen sind das Gehirn.

Wer einen MCP-Server baut und nur Tools definiert, wird enttäuscht sein. Das LLM braucht Geschäftskontext, und zwar nicht als vage Beschreibung, sondern als klare, schrittweise Anleitung. Je spezifischer die Instruktionen, desto besser das Ergebnis.

Das klingt aufwändig, aber es ist genau die Arbeit, die sich lohnt: Einmal sauber definieren, wie ein Prozess ablaufen soll, und das LLM befolgt ihn jedes Mal.

Was MCP für Unternehmen bedeutet

MCP ist noch jung (die Spezifikation wurde Ende 2024 veröffentlicht), aber die Implikationen sind weitreichend:

Jetzt schon real

Interne Tools per Sprache bedienen. Nicht als Spielerei, sondern für echte Produktivität. Unsere Bexio-Anbindung spart uns konkret Zeit bei Angebotserstellung und Rechnungsübersicht.

Bestehende Systeme AI-fähig machen, ohne sie umzubauen. Bexio selbst hat keine AI-Features. Über MCP haben wir sie trotzdem.

Prototypen in Tagen statt Monaten. Ein MCP-Server für eine REST-API ist in 1–3 Tagen gebaut. Die Workflow-Instruktionen brauchen länger, aber das ist Prozess-Arbeit, nicht Programmierung.

Worauf ihr achten müsst

Security ist nicht optional. Ein MCP-Server gibt einem LLM Zugriff auf echte Systeme. Rechte-Management, Validierung und Audit-Logs sind Pflicht, nicht Kür.

Das LLM ist nicht deterministisch. Dieselbe Frage kann zu leicht unterschiedlichen Tool-Aufrufen führen. Für kritische Prozesse (Rechnungen erstellen, Zahlungen auslösen) braucht es Bestätigungsschritte.

Workflow-Design ist die eigentliche Arbeit. Der technische MCP-Server ist einfach. Die Frage "wie soll der Prozess ablaufen und welche Regeln gelten?" ist die harte Arbeit, und sie braucht jemanden, der sowohl das System als auch das Geschäft versteht.

Für wen ist MCP interessant?

Unternehmen, die bestehende Business-Software nutzen (ERP, CRM, Buchhaltung) und diese per AI zugänglich machen wollen

Teams, die interne Tools haben und einen natürlichsprachlichen Zugang dazu bauen wollen

CTOs, die AI-Integration evaluieren, ohne ihre bestehende Architektur umzubauen

Fazit

MCP löst ein echtes Problem: Es bringt LLMs von "kann reden" zu "kann handeln." Und es tut das mit einem offenen Standard statt proprietären Integrationen.

Aber der technische Standard ist der einfache Teil. Was wir bei unserem Bexio-Projekt gelernt haben:

  1. Tools bauen ist schnell. API-Wrapper als MCP-Tools zu exponieren ist straightforward, besonders mit dem Symfony AI Bundle.
  2. Workflows definieren ist die eigentliche Arbeit. Ohne Prozess-Instruktionen macht das LLM technisch korrekte, aber fachlich falsche Dinge.
  3. Testen ist anders. Weil das LLM nicht deterministisch ist, testen wir anders: nicht "Input X ergibt Output Y", sondern "bei 20 Versuchen mit ähnlichem Input ist das Ergebnis in 19 Fällen korrekt."
  4. Der Wert kommt schnell. Sobald die Workflows sitzen, spart es real Zeit. Nicht hypothetisch, wir nutzen es täglich.

MCP ist kein Zukunftsthema. Es ist ein Jetzt-Thema, für jeden, der bestehende Systeme intelligenter machen will.

Roger Wicki
Der Autor /

Roger Wicki

"Wenn ihr eure Business-Software AI-fähig machen wollt, oder einfach wissen wollt, ob MCP für euren Fall Sinn ergibt, meldet euch."

✉️ E-Mail schreiben: roger.wicki@ongoing.ch
🤙 Ruf mich an: +41 41 552 13 51
📝 Schreib mir eine Nachricht:

Im nächsten Schritt fragen wir dich noch nach deiner E-Mail Adresse.

Senden
👋 Hast du Fragen?DSC00568-1843x1842
ongoing Logo
swiss made software
Adresse
ongoing GmbH

Wir schaffen technisch hochstehende digitale Lösungen auf Basis von tiefem User-Verständnis – damit du in der digitalen Welt erfolgreich bist.

Hinterbergstrasse 28
6312 Steinhausen
🤙 +41 41 783 12 70
✉️ info@ongoing.ch
Zertifiziert
ISO 27001ISO 9001ISO 14001