Skip to main content
Glama
pbpeter

Enterprise Support MCP Server

by pbpeter

Enterprise Support MCP Server

Ein leichtgewichtiger Enterprise-KI-Integrationsprototyp, der demonstriert, wie Geschäftsfunktionen über das Model Context Protocol (MCP) für Large Language Models verfügbar gemacht werden können.

Das Projekt stellt Kunden- und Bestellinformationen über einen Python-basierten MCP-Server bereit. Ein Mistral-betriebener KI-Assistent entdeckt dynamisch die verfügbaren MCP-Tools und entscheidet anhand von natürlichsprachlichen Supportanfragen, welche Tools aufgerufen werden sollen.

Bei komplexeren Anfragen kann der Assistent iterativ mehrere Tool-Aufrufe ausführen, bis genügend Informationen für eine abschließende Antwort vorliegen.

Alle in diesem Projekt verwendeten Kunden- und Bestelldatensätze sind synthetische Demodaten.


Hauptfunktionen

  • Model Context Protocol (MCP) Server und Client

  • Dynamische MCP-Tool-Erkennung

  • LLM-gesteuerte Tool-Auswahl mit Mistral AI

  • Mehrschrittiger Tool-Aufruf-Workflow

  • Natürlichsprachliche Interaktion mit Unternehmensdaten

  • Kunden- und Bestellabfrage

  • Pydantic-Datenmodelle

  • SQLite-Persistenz

  • Strukturierte Fehlerbehandlung

  • Trennung von MCP-, Persistenz- und KI-Integrationsschichten


Related MCP server: E-commerce MCP Server

Architektur

flowchart TD
    U[User] --> L[Mistral LLM]
    L --> C[MCP Client]
    C --> S[Enterprise Support MCP Server]
    S --> D[(SQLite Customer / Order Database)]
    D --> S
    S --> C
    C --> L
    L --> U

Das LLM greift nicht direkt auf die Datenbank zu.

Stattdessen werden Unternehmensfunktionen über standardisierte MCP-Tools bereitgestellt. Der MCP-Client entdeckt diese Tools dynamisch und stellt ihre Schemata dem LLM zur Verfügung.

Das LLM entscheidet dann, welches Tool für eine bestimmte Benutzeranfrage erforderlich ist.


Beispiel-Workflow

Ein Benutzer gibt ein:

Show me customer 1001.

Die Anwendung führt den folgenden Workflow aus:

User request
    ↓
Mistral LLM
    ↓
Selects get_customer
    ↓
MCP Client
    ↓
Enterprise Support MCP Server
    ↓
SQLite
    ↓
Customer data
    ↓
MCP Client
    ↓
Mistral LLM
    ↓
Natural-language response

Beispielergebnis:

Here is the information for customer 1001:

- Name: Anna Schmidt
- Email: anna@example.com
- Status: ACTIVE

Der Anwendungscode kodiert die Auswahl von get_customer nicht fest.
Das LLM wählt das passende MCP-Tool basierend auf der natürlichsprachlichen Anfrage des Benutzers aus.


Verfügbare MCP-Tools

get_customer

Ruft Kundeninformationen anhand der Kunden-ID ab.

Beispieleingabe:

{
  "customer_id": 1001
}

get_customer_orders

Ruft alle Bestellungen eines Kunden ab.

Beispieleingabe:

{
  "customer_id": 1001
}

get_order_status

Ruft den aktuellen Status und die Tracking-Informationen für eine Bestellung ab.

Beispieleingabe:

{
  "order_id": 5002
}

Technologie-Stack

  • Python

  • Model Context Protocol (MCP) Python SDK

  • Mistral AI

  • Pydantic

  • SQLite

  • asyncio

  • python-dotenv

  • uv


Erste Schritte

Voraussetzungen

Das Projekt erfordert:

  • Python 3.11+

  • pip

  • uv

  • einen Mistral-API-Schlüssel

Überprüfen Sie Ihre Python-Installation:

python --version

Überprüfen Sie uv:

uv --version

1. Repository klonen

git clone https://github.com/YOUR-USERNAME/enterprise-support-mcp-server.git
cd enterprise-support-mcp-server

Ersetzen Sie YOUR-USERNAME durch Ihren GitHub-Benutzernamen.


2. Virtuelle Umgebung erstellen

python -m venv .venv

Windows PowerShell

.venv\Scripts\Activate.ps1

Linux / macOS

source .venv/bin/activate

3. Abhängigkeiten installieren

pip install -r requirements.txt

Die Hauptabhängigkeiten umfassen:

mcp[cli]
mistralai
pydantic
python-dotenv

4. Mistral-API-Schlüssel konfigurieren

Erstellen Sie eine .env-Datei im Projektstammverzeichnis.

Sie können .env.example als Vorlage verwenden:

MISTRAL_API_KEY=your_mistral_api_key

Committen Sie niemals die eigentliche .env-Datei oder einen API-Schlüssel in Git.


5. Demodatenbank initialisieren

Führen Sie aus:

python init_db.py

Dies erstellt die lokale SQLite-Datenbank mit synthetischen Kunden- und Bestelldatensätzen, die von den MCP-Tools verwendet werden.


Testen

Das Projekt kann auf mehreren Ebenen getestet werden.

Test 1 – Datenbankzugriff

Die Datenbankfunktionen können unabhängig getestet werden, bevor MCP involviert ist.

Überprüfen Sie, ob die Demodatenbank initialisiert wurde:

python init_db.py

Die Datenbankschicht bietet Operationen für:

get_customer
get_customer_orders
get_order_status

Dies überprüft die Persistenzschicht unabhängig von MCP und dem LLM.


Test 2 – MCP-Server starten

Führen Sie aus:

python server.py

Bei einem stdio-basierten MCP-Server wird kein HTTP-Port oder Browser geöffnet.

Der Prozess wartet darauf, dass ein MCP-Client über die Standardeingabe/-ausgabe kommuniziert.

Stoppen Sie den Server mit:

Ctrl+C

Test 3 – MCP-Client ohne LLM

Führen Sie aus:

python client.py

Der Client verbindet sich mit dem MCP-Server und entdeckt die verfügbaren Tools.

Erwartete Tool-Erkennung:

Available tools:
- get_customer
- get_customer_orders
- get_order_status

Der Client kann dann die MCP-Tools direkt aufrufen.

Dieser Test überprüft:

MCP Client
    ↓
MCP protocol
    ↓
MCP Server
    ↓
SQLite
    ↓
MCP result

Für diesen Test ist kein Large Language Model erforderlich.


Test 4 – LLM-gesteuerte MCP-Tool-Auswahl

Führen Sie aus:

python llm_client.py

Die Anwendung sollte zuerst die vom Server entdeckten MCP-Tools anzeigen:

Available MCP tools:
- get_customer
- get_customer_orders
- get_order_status

Sie können dann eine natürlichsprachliche Anfrage eingeben.

Kundenabfrage

Show me customer 1001.

Erwartetes Verhalten:

Mistral
    ↓
get_customer
    ↓
customer_id = 1001

Die abschließende Antwort sollte die Informationen für Kunde 1001 enthalten.


Kundenbestellungen

Versuchen Sie:

Show me all orders for customer 1001.

Erwartetes Tool:

get_customer_orders

Bestellstatus

Versuchen Sie:

What is the status of order 5002?

Erwartetes Tool:

get_order_status

Anfrage ohne Unternehmensdaten

Versuchen Sie:

What can you help me with?

Das LLM sollte diese Anfrage beantworten können, ohne auf Kunden- oder Bestelldaten zuzugreifen.

Dies zeigt, dass die Tool-Ausführung dynamisch erfolgt und nicht für jede Anfrage ausgeführt wird.


Test 5 – Mehrschrittiger Tool-Aufruf

Der LLM-Client unterstützt iterative Tool-Ausführung.

Versuchen Sie eine komplexere Anfrage wie:

Customer 1001 says that one of her orders has not arrived.
Can you investigate?

Bei komplexen Anfragen kann der Assistent mehrere MCP-Tools verwenden, bevor die abschließende Antwort generiert wird.

Konzeptionell:

User
    ↓
Mistral
    ↓
MCP Tool
    ↓
Tool Result
    ↓
Mistral
    ↓
Another tool required?
    ├── Yes → MCP Tool → Result → Mistral
    └── No  → Final Response

Die Tool-Aufrufschleife hat eine maximale Anzahl von Iterationen, um eine versehentliche Endlosausführung zu verhindern.


Fehlerbehandlungstests

Der MCP-Server behandelt auch unbekannte Geschäftseinheiten.

Zum Beispiel:

Show me customer 9999.

Das entsprechende MCP-Tool gibt ein Fehlerergebnis zurück, anstatt Kundeninformationen zu erfinden.

Dies ist besonders wichtig für KI-basierte Unternehmensintegrationen: Tatsächliche Kunden- und Bestellinformationen müssen aus dem angeschlossenen Unternehmenssystem stammen und nicht vom LLM.


Projektstruktur

enterprise-support-mcp-server/
│
├── server.py
│   └── MCP server and tool definitions
│
├── client.py
│   └── MCP client for direct tool testing
│
├── llm_client.py
│   └── Mistral integration and agentic tool-calling workflow
│
├── database.py
│   └── Database access layer
│
├── models.py
│   └── Pydantic domain models
│
├── init_db.py
│   └── Creates synthetic demo data
│
├── requirements.txt
├── .env.example
├── .gitignore
└── README.md

Warum MCP?

Ein LLM kann auch anwendungsspezifische Funktionen direkt aufrufen.

MCP führt eine standardisierte Schnittstelle zwischen KI-Anwendungen und externen Fähigkeiten ein.

In diesem Projekt:

Mistral
   ↓
Tool Calling
   ↓
MCP Client
   ↓
Standardized MCP interface
   ↓
Enterprise Support MCP Server
   ↓
Enterprise capabilities

Das LLM ist dafür verantwortlich, zu entscheiden, welche Fähigkeit erforderlich ist.

MCP ist dafür verantwortlich, diese Fähigkeiten über ein standardisiertes Protokoll bereitzustellen.

Diese Trennung bedeutet, dass das Unternehmens-Backend nicht speziell für einen bestimmten LLM-Anbieter entwickelt werden muss.


Projektzweck

Das Projekt ist bewusst klein gehalten und konzentriert sich auf eine architektonische Frage:

Wie können bestehende Unternehmensfähigkeiten über eine standardisierte Integrationsschicht für KI-Assistenten verfügbar gemacht werden?

Es demonstriert die Kombination von:

  • Unternehmenssystemintegration

  • Model Context Protocol

  • LLM-Tool-Aufruf

  • Agentische Workflows

  • Strukturierte Geschäftsdaten

  • Trennung der Zuständigkeiten

Das Projekt dient als praktischer Prototyp für die Integration von KI-Assistenten in bestehende Unternehmensanwendungen.


Sicherheitshinweis

Dieses Repository enthält ausschließlich synthetische Demodaten.

Geben Sie keine API-Schlüssel, Anmeldeinformationen, Kundendaten oder andere sensible Informationen über Quellcode oder committete .env-Dateien preis.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • The grounded data layer for any LLM: governed SQL, metrics, lineage and catalog over your data.

  • A Model Context Protocol server for Wix AI tools

  • Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pbpeter/enterprise-support-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server