Wer schon einmal versucht hat eine Datenbank in natürlicher Sprache abzufragen, stößt schnell auf Fehlermeldungen wie diese:
" ERROR: syntax error at or near 'Um wieviel Prozent ist die Anzahl unserer Bestellungen im letzten Quartal gestiegen' ".
Übersetzt bedeutet das: Die Datenbank versteht keine natürliche Sprache, sondern nur Code. Technisch versierte Mitarbeitende können diese Frage schnell beantworten, indem sie SQL verwenden. Führungskräfte oder Mitarbeitende aus anderen Abteilungen haben jedoch oft Schwierigkeiten diese Fragen in SELECT-, FROM-, WHERE- Formeln zu übersetzen.
Selbst wenn Mitarbeitende über gute SQL-Kenntnisse verfügen, ist ein komplexes System wie eine Datenbank nicht leicht verständlich: Welche Tabellen gibt es? Wie hängen diese zusammen? Diese Fragen stellen selbst für SQL-Expert*innen große Hürden in einem neuen Umfeld dar.
Mit der Anwendung von Künstlicher Intelligenz wie Chatbots werden diese Hürden deutlich kleiner. Bis vor kurzem sah ein erster Ansatz so aus: Ein Chatbot übersetzt eine Frage von natürlicher Sprache in SQL-Code. Der Code muss in ein separates Tool kopiert und ausgeführt werden. Die Resultate müssen danach von dem/der Anwender*in interpretiert werden.
Dieser Ansatz ist zwar eine deutliche Verbesserung im Vergleich zu Zeiten vor Chatbots, er hat aber immer noch einige Schwächen. So müssen Anwender*innen unterschiedliche Tools benutzen und Text hin und her kopieren. Gleichzeitig kennt der Chatbot die abzufragende Datenbank nicht. Das führt entweder zu sehr langen Prompts (Meine Datenbank besitzt Tabelle "ord_intl", die Bestellungen enthält...) oder zu falsch generierten Abfragen ( Table "bestellungen" was not found ).
Genau diese Herausforderungen lösen MCP (Model Context Protocol) Server. Diese Anwendungen verbinden Chatbots mit externen Systemen wie Datenbanken oder Geschäftsanwendungen. Anwender*innen können wie gewohnt ihre Fragen an einen Chatbot stellen und erhalten die passende Antwort aus dem jeweiligen System.
Durch MCP-Server können Unternehmen verschiedenste Systeme integrieren und Arbeitsabläufe sowohl vereinfachen als auch deutlich beschleunigen. In diesem Blogbeitrag stellen wir MCP-Server im Detail vor und skizzieren, wie sie im Unternehmenskontext eingesetzt werden können.
Das Model Context Protocol (MCP) ist ein offener Standard, der von Anthropic, der Firma hinter Claude AI, entwickelt wurde. MCP ermöglicht die Integration von Chatbots (Large Language Models, LLMs) mit externen Tools wie Datenbanken oder Geschäftsanwendungen. Es verfolgt dabei einen standardisierten Ansatz, der die Kommunikation zwischen LLMs und externen System vereinfachen soll. Es wird oft als "USB für KI-Integrationen" bezeichnet, da es speziell zugeschnittene Integrationen zwischen Chatbots und externen Systemen durch eine universelle Schnittstelle ersetzt.
Die Architektur von MCP basiert auf einem Client-Server Modell. Den "Host" bildet der Chatbot, der Daten aus einem externen System benötigt, um eine Anfrage zu beantworten. Der "Client" existiert innerhalb des Hosts und leitet Anfragen an den MCP-Server weiter bzw. nimmt Ergebnisse vom MCP-Server entgegen. Der "Server" ist das externe System, das Daten an den Chatbot senden soll.
Es gibt verschiedene Möglichkeiten, einen MCP-Server zu verwenden. Der einfachste Weg ist die Nutzung eines bestehenden Servers. Zu vielen populären Tools wie PostgreSQL, GitHub oder Google Maps gibt es bereits vorgefertigte Server. Diese können auf Webseiten wie mcpservers.org eingesehen werden. Gleichzeitig gibt es dort genaue Erklärungen, wie man die Server einbindet und welche Funktionen sie bieten.
Wenn die vorhandenen Server nicht ausreichen oder spezielle Funktionen benötigt werden, kann auch ein eigener MCP-Server implementiert werden. Es gibt Referenzimplementierungen u. a. in Python, TypeScript, Java und C#. Die Implementierung unseres einfachen MCP-Servers für PostgreSQL hat beispielsweise nur einige Stunden gedauert und besteht aus weniger als 100 Zeilen Python-Code.
Neben den technischen Neuerungen bieten MCP-Server ganz konkrete Vorteile für Anwendende aus den unterschiedlichsten Abteilungen eines Unternehmens:
Für unser Fallbeispiel haben wir zunächst einen bereits existierenden MCP-Server für eine PostgreSQL-Datenbank eingesetzt. Den betreffenden Server haben wir auf mcp.so ausfindig gemacht. Als Chatbot haben wir Claude verwendet, da die Integrationsmöglichkeiten für MCP-Server zum aktuellen Zeitpunkt hier am besten zu sein scheinen.
Zunächst haben wir Claude Desktop als lokales Interface für das Claude-Modell installiert. Claude Desktop stellt eine Konfigurationsdatei unter %APPDATA%\Claude\claude_desktop_config.json (Windows) bereit. In diese Konfigurationsdatei haben wir die zugehörige Konfiguration des Servers eingetragen, die auf mcp.so zur Verfügung gestellt wird.
Um den MCP-Server auszuführen, benötigen wir entweder Node.js oder Docker. Welches Backend verwendet wird, kann über den entsprechenden Befehl in der Server-Konfiguration angegeben werden. Wir haben uns in unseren Experimenten für Docker entschieden. Docker haben wir ebenfalls für unsere PostgreSQL-Datenbank verwendet. Damit simulieren wir eine firmeninterne Datenbank, die nicht öffentlich zugänglich ist. Da unser Team vor Kurzem an der PyCon-Konferenz teilgenommen hat, nutzen wir den Zeitplan der PyCon als Beispieldatensatz. In diesem Zeitplan sind alle Vorträge inkl. Vortragenden, Räume und kurzen Zusammenfassungen enthalten.
Wir schließen die Einrichtung des MCP-Servers ab, indem wir eine Authentifizierung des Servers gegenüber unserer lokalen Datenbank zulassen. Zu diesem Zweck geben wir die benötigten Informationen (URL, Nutzername, Passwort) über die Konfigurationsdatei an den MCP-Server.
Nachdem der Server eingerichtet ist, können wir Claude Desktop neu starten und den MCP-Server benutzen, um Datenbankanfragen in natürlicher Sprache zu stellen.
Prompt: Can you tell me which Pycon Talks are located in the room 'Titanium3'?
Answer: Great! I found the PyCon talks in the Titanium3 room. Here are the talks scheduled for that room:
PyCon Talks in Titanium3:
Wie anfangs beschrieben, wäre diese Abfrage nur ein simpler SQL-Befehl gewesen. Mit Chatbots können wir jedoch auch Datenbankabfragen ausführen, die in reinem SQL nur sehr schwer umzusetzen wären:
Prompt: Can you cluster the talks by topic?
Answer: Based on the talk descriptions, I can cluster the PyCon talks into several key topic areas:
In diesem Beispiel ist leicht zu erkennen, dass die Kombination aus Chatbots und MCP-Servern deutlich mehr sind als reine Code-Generatoren. Chatbots können mit den von MCP-Servern erhaltenen Ergebnissen arbeiten und komplexe logische Zusammenhänge darstellen. Das wäre mit reiner Code-Generation nur sehr schwer möglich.
Für ein weiteres Fallbeispiel haben wir einen lokalen Chatbot auf einem Laptop bereitgestellt, um die Performance von MCP-Servern in diesem Umfeld zu testen. Für diesen Fall haben wir Docker benutzt, um das Phi-4 Mini Large Language Modell von Microsoft über OpenWebUI zur Verfügung zu stellen. Wir haben ebenfalls den MCP-Server selbst implementiert. Er ist eine simplere Version des PostgreSQL MCP-Servers, den wir im vorherigen Fallbeispiel benutzt haben.
Prompt: Can you describe the schema of the table ‘pycon_talks’ in the schema ‘public‘?
Antwort: The schema of the table pycon_talks in the public schema contains five columns with their respective data types as follows:
[...]
Wir können offensichtlich mit unserer Datenbank kommunizieren, ansonsten könnte der Chatbot keine Fragen über das Datenschema beantworten. Wenn wir allerdings Fragen über unsere Tabelle beantworten wollen, stoßen wir auf Probleme:
Prompt: What Pycon talks are located in the room ‘Titanium3’?
Answer: To find the Pycon talks located in room 'Titanium3', you can run a SQL query on your PostgreSQL database. Assuming that there is an existing table called pycon_talks with columns for start_datetime, end_datetime, description, room and speaker_name as described above; here is how to use these details: [...]
Prompt: Please execute this SQL query you just described
Answer: Sure! I don't actually possess direct physical interaction with databases, but if you're looking for how an expert might approach executing a given command within their own PostgreSQL setup on the server they have access to (after ensuring all prerequisites like proper permissions are met), here's what you'd do. [...]
Prompt: Perform the following sql query: ‘SELECT * FROM pycon_talks WHERE room='Titanium3';’
Answer: Based on the output you provided, here are two Pycon talks that took place in room 'Titanium3':
Wir haben festgestellt, dass es nicht einfach ist, den Chatbot darauf hinzuweisen, dass er sehr wohl mit der Datenbank kommunizieren kann. Zwar erhalten wir bei den meisten unserer Fragen SQL-Abfragen zurück, diese werden jedoch nicht automatisch auf der Datenbank ausgeführt. Gleichzeitig ist die Performance dieser Prompts um einiges schlechter als bei einem Online-Modell. Das liegt an der Hardware, also dem herkömmlichen Business-Laptop.
Es gibt bereits Möglichkeiten, die Bewertung der Antworten von Chatbots zu automatisieren. Mithilfe dieser Methoden könnten wir das "Hinweisen" des Chatbots über seine Datenbankverbindung automatisieren und in diesem Szenario bessere Ergebnisse erzielen. Die genaue Beschreibung dieser Methoden würde den Rahmen dieses Beitrags sprengen, jedoch leisten Projekte wie CrewAI in diesem Bereich bereits enorme Fortschritte.
Unsere Tests mit lokalen Chatbots zeigen, dass es beim Einsatz von MCP-Servern noch einige Herausforderungen gibt. Dies war allerdings zu erwarten, weshalb wir die Nutzung von Chatbots empfehlen, die auf dezidierten Servern und nicht lokal auf den Rechnern von Mitarbeitenden gehostet werden. Da letztere die datenschutzfreundlichste Alternative zu kommerziellen LLMs wie ChatGPT und Claude sind, erwarten wir allerdings auch hier Fortschritte in nächster Zeit.
Neben den Vorteilen, die MCP-Server für Chatbots bieten, gibt es einige Fallstricke bei deren Einsatz in Unternehmen. Die folgenden Aspekte sprechen nicht zwangsläufig gegen den Einsatz von MCP-Servern, sollten bei der Erwägung, sie einzuführen, jedoch berücksichtigt werden:
Wir haben gezeigt, was MCP-Server sind und wie mögliche Einsatzbereiche aussehen könnten. MCP-Server bieten vielversprechende Möglichkeiten, um Chatbots flexibel mit unterschiedlichen Tools und externen Systemen zu verbinden. Dennoch zeigen sich in der Praxis verschiedene Herausforderungen, die den Einsatz erschweren könnten. Wer MCP-Server nutzen möchte, sollte diese Nachteile im Blick behalten und frühzeitig Lösungen für die wichtigsten Stolpersteine entwickeln. Nichtsdestotrotz sind MCP-Server nach wie vor ein besonders spannender Ansatz, der eng mit Chatbots verzahnt ist.