C#/.NET MCP Server Demo
Das Model Context Protocol (MCP) von Anthropic revolutioniert gerade die Integration von AI-Modellen mit externen Tools und Datenquellen.
MCP Support für verschiedene Hosts und AI Provider
Model Context Protocol (MCP) von Anthropic revolutioniert gerade die Integration von AI-Modellen mit externen Tools und Datenquellen. Während die meisten verfügbaren Demo-Implementierungen auf Python oder TypeScript basieren, zeigt dieses C#/.NET-Projekt, wie sich MCP elegant in das Microsoft-Ökosystem integrieren lässt.
Dieses Demo-Projekt beinhaltet eine vollständige MCP-Host-Implementierung in .NET 9.0, die sowohl kommerzielle AI-Provider wie OpenAI, Azure OpenAI und Ionos als auch lokale LLM-Lösungen über Ollama und LMStudio nahtlos einbindet. Die Architektur ermöglicht es Entwicklern, sowohl STDIO- als auch SSE-basierte MCP-Server zu erstellen und diese in verschiedene MCP Hosts einzubinden und dabei verschiedene AI-Providern zu nutzen.
Besonderheiten der C#/.NET-Implementierung:
-
Microsoft.Extensions.AI für einheitliche AI-Provider-Abstraktion
-
Dependency Injection nach bewährten .NET-Patterns
-
Entity Framework Core für datenbankgestützte Tools
-
OpenTelemetry für umfassende Observability
-
Docker Compose
Projektüberblick
Das evanto MCP Host System ist eine Demo-.NET-Anwendung, die das Model Context Protocol (MCP) implementiert, um eine einheitliche Schnittstelle zwischen AI-Chat-Providern und spezialisierten Geschäftstools zu schaffen. Es ermöglicht die nahtlose Integration zwischen mehreren AI-Providern (OpenAI, Azure, Ollama, etc.) und benutzerdefinierten Geschäftstools hier am Beispiel eines Support-Ticket-Managements und Support-Dokumentenverarbeitung.
Kernfähigkeiten
-
Multi-Provider AI-Integration: Unterstützung für OpenAI, Azure OpenAI, Ollama, LMStudio und Ionos
-
Support-Ticket-Management: Vollständige CRUD-Operationen für Support-Anfragen mit SQLite-Speicherung
-
Dokumentenvektorisierung: PDF-Verarbeitung und semantische Suche mit Qdrant-Vektordatenbank für Support-Dokumentations-PDFs
-
Interaktiver Chat-Client: Kommandozeilen-Interface für AI-Unterhaltungen mit Tool-Integration
-
Containerisierte Bereitstellung: Docker Compose Setup für einfache Bereitstellung und Skalierung
-
Umfassende Tests: Eingebautes MCP-Server-Test-Framework mit automatisierten Parametern
Zielgruppe
Dieses System ist für C#-Entwickler konzipiert, die:
-
AI-Fähigkeiten in ihre Anwendungen über Microsoft.Extensions.AI integrieren möchten
-
MCP-konforme Tools und Server erstellen möchten
-
Semantische Suche und Dokumentenverarbeitung implementieren möchten
-
Multi-Provider-AI-Chat-Systeme erstellen möchten
-
Containerisierte AI-Infrastruktur bereitstellen möchten
AI Entwicklersupport
Systemarchitektur
┌─────────────────────────────────────────────────────────────────┐
│ Evanto MCP Host System │
├─────────────────────────────────────────────────────────────────┤
│ Applications Layer │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ cmd-mcp-host │ │ cmd-vectorize │ │ MCP Servers │ │
│ │ (Interactive │ │ (PDF │ │ (SSE/STDIO) │ │
│ │ Client) │ │ Processing) │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ Core Libraries Layer │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Evanto.Mcp.Host │ │ Evanto.Mcp.Apps │ │ Evanto.Mcp. │ │
│ │ (Factories & │ │ (App Helpers) │ │ Common │ │
│ │ Testing) │ │ │ │ (Settings) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ External Integration Layer │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Evanto.Mcp. │ │ Evanto.Mcp. │ │ Evanto.Mcp. │ │
│ │ Embeddings │ │ Pdfs │ │ QdrantDB │ │
│ │ (Multi-Provider)│ │ (iText7 Wrapper)│ │ (Vector DB) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ MCP Tools Layer │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ SupportWizard │ │ SupportDocs │ │
│ │ (Ticket System) │ │ (Doc Search) │ │
│ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
-
Applications: Eigenständige ausführbare Programme
-
Core Libraries: Geschäftslogik und Infrastruktur
-
External Integration: Wrapper für externe Abhängigkeiten
-
MCP Tools: Domänenspezifische Tool-Implementierungen
Technologie-Stack
-
.NET 9.0: Aktuelle C#-Features
-
Microsoft.Extensions.AI: Einheitliche AI-Provider-Abstraktionen
-
Model Context Protocol: Offizielle MCP-Client/Server-Implementierung
-
Entity Framework Core: Datenbankabstraktion mit SQLite
-
OpenTelemetry: Observability und Telemetrie
-
Docker & Docker Compose: Containerisierung und Orchestrierung
-
iText7: PDF-Verarbeitung und Textextraktion
-
Qdrant: Vektordatenbank für semantische Suche
Design-Patterns
-
Factory Pattern: AI-Client und MCP-Client-Erstellung
-
Repository Pattern: Datenzugriff-Abstraktion
-
Dependency Injection: Microsoft.Extensions.DependencyInjection
-
Clean Architecture: Trennung der Zuständigkeiten über Schichten
-
Konfigurationsgesteuert
Projektstruktur
Übersicht über das Github-Projekt:
public-ai/
├── app/ # Eigenständige Anwendungen
│ ├── cmd-mcp-host/ # Interaktiver MCP-Client
│ │ ├── Program.cs # Haupt-Einstiegspunkt
│ │ ├── appsettings.json # Client-Konfiguration
│ │ └── system-prompt.txt # AI-System-Prompt
│ └── cmd-vectorize/ # PDF-Vektorisierungs-Utility
│ ├── Program.cs # Haupt-Einstiegspunkt
│ ├── appsettings.json # Vektorisierungs-Einstellungen
│ └── Services/ # Verarbeitungs-Services
├── lib/ # Kernbibliotheken
│ ├── Evanto.Mcp.Common/ # Geteilte Utilities
│ │ ├── Settings/ # Konfigurationsmodelle
│ │ ├── Mcp/ # MCP-Basisklassen
│ │ └── Extensions/ # Erweiterungsmethoden
│ ├── Evanto.Mcp.Host/ # MCP-Hosting-Infrastruktur
│ │ ├── Factories/ # Factory-Implementierungen
│ │ ├── Tests/ # Test-Framework
│ │ └── Models/ # Kernmodelle
│ ├── Evanto.Mcp.Apps/ # Anwendungshelfer
│ │ ├── EvBaseAppHelper.cs # Basis-Anwendungslogik
│ │ ├── EvCmdAppHelper.cs # Kommando-App-Helfer
│ │ └── EvSrvAppHelper.cs # Server-App-Helfer
│ ├── Evanto.Mcp.Embeddings/ # Text-Embedding-Services
│ │ ├── Factories/ # Multi-Provider-Factory
│ │ ├── Services/ # Embedding-Implementierungen
│ │ └── Extensions/ # DI-Erweiterungen
│ ├── Evanto.Mcp.Pdfs/ # PDF-Verarbeitung
│ │ ├── Services/ # iText7-Wrapper
│ │ └── Extensions/ # DI-Erweiterungen
│ ├── Evanto.Mcp.QdrantDB/ # Vektordatenbank
│ │ ├── Repository/ # Qdrant-Repository
│ │ ├── Models/ # Dokumentmodelle
│ │ └── Extensions/ # DI-Erweiterungen
│ ├── Evanto.Mcp.Tools.SupportWizard/ # Support-Ticket-System
│ │ ├── Tools/ # MCP-Tool-Implementierungen
│ │ ├── Repository/ # Datenbank-Repository
│ │ ├── Models/ # Entity-Modelle
│ │ └── Context/ # EF Core-Kontext
│ └── Evanto.Mcp.Tools.SupportDocs/ # Dokumentsuch-Tools
│ ├── Tools/ # MCP-Tool-Implementierungen
│ └── Extensions/ # DI-Erweiterungen
├── srv/ # MCP-Server
│ ├── sse-mcp-server/ # SSE-basierter MCP-Server
│ │ ├── Program.cs # ASP.NET Core-App
│ │ ├── appsettings.json # Server-Konfiguration
│ │ └── Dockerfile # Container-Definition
│ └── stdio-mcp-server/ # STDIO-basierter MCP-Server
│ ├── Program.cs # Konsolen-Host-App
│ ├── appsettings.json # Server-Konfiguration
│ └── Dockerfile # Container-Definition
├── db/ # Datenbankdateien
│ └── ev-supportwizard.db # SQLite-Datenbank (automatisch erstellt)
├── pdfs/ # PDF-Dokumente
│ └── processed_files.json # Datei-Tracking
├── run/ # Laufzeit-Konfigurationen
│ ├── sse/appsettings.json # SSE-Server-Konfig
│ └── stdio/appsettings.json # STDIO-Server-Konfig
├── Directory.Packages.props # Zentrale Paket-Verwaltung
├── docker-compose.yaml # Container-Orchestrierung
├── .env.example # Umgebungsvariablen-Vorlage
└── CLAUDE.md # AI-Assistenten-Anweisungen
Kernbibliotheken
Zweck: Kern-MCP-Hosting-Infrastruktur mit Factories und Test-Framework
Schlüsselkomponenten:
-
EvMcpClientFactory
: Erstellt MCP-Clients für verschiedene Transport-Typen (STDIO, SSE, HTTP) -
EvChatClientFactory
: Erstellt AI-Chat-Clients für mehrere Provider -
EvMcpServerTester
: Umfassendes Test-Framework für MCP-Server und Tools
Verwendungsbeispiel
// MCP-Client erstellen
var mcpClient = await mcpClientFactory.CreateAsync(serverSettings);
// Chat-Client erstellen
var chatClient = chatClientFactory.Create("OpenAI");
// MCP-Server testen
var testResult = await mcpTester.TestServerAsync(serverSettings);
Zweck: Geteilte Konfigurationsmodelle, Einstellungen und Utilities
Schlüsselkomponenten:
-
EvHostAppSettings
: Haupt-Anwendungskonfiguration -
EvChatClientSettings
: AI-Provider-Konfigurationen -
EvMcpServerSettings
: MCP-Server-Konfigurationen -
EvMcpToolBase
: Basisklasse für MCP-Tool-Implementierungen
Evanto.Mcp.Apps
Zweck: Anwendungshelfer-Services und geteilte Funktionalität
Schlüsselkomponenten:
-
EvBaseAppHelper
: Gemeinsame Anwendungsinitialisierung -
EvCmdAppHelper
: Kommandozeilen-Anwendungshelfer -
EvSrvAppHelper
: Server-Anwendungshelfer
Evanto.Mcp.Embeddings
Zweck: Multi-Provider-Text-Embedding-Services mit Microsoft.Extensions.AI
Schlüsselfeatures:
-
Multi-Provider-Unterstützung: OpenAI, Azure, Ollama, LMStudio, Ionos
-
Einheitliche Schnittstelle: Einzige API unabhängig vom Provider
-
Performance-Optimierung: Eingebautes Caching und Rate-Limiting
-
Konfigurationsgesteuert: Provider-Auswahl über Einstellungen
Verwendungsbeispiel
// Embedding-Service registrieren
services.AddEmbeddingService(settings);
// Embedding-Service verwenden
var embeddings = await embeddingService.GenerateEmbeddingsAsync(texts);
Zweck: PDF-Textextraktions-Services mit iText7
Schlüsselfeatures:
-
Enterprise-PDF-Verarbeitung: Behandelt komplexe PDF-Strukturen
-
Service-Abstraktion: Saubere Schnittstelle, die iText7-Komplexität verbirgt
-
Fehlerbehandlung: Robuste Behandlung korrupter PDFs
-
Performance-optimiert: Effiziente Textextraktion
Verwendungsbeispiel
// PDF-Service registrieren
services.AddPdfTextExtractor();
// Text aus PDF extrahieren
var text = await pdfExtractor.ExtractTextAsync(pdfPath);
Zweck: Einheitliches Repository für Qdrant-Vektordatenbank-Operationen
Schlüsselfeatures:
-
Einheitliches Dokumentmodell: Einzelnes
EvDocument
für alle Operationen -
Erweiterte Suche: Vektor-, Text- und kombinierte Suchabfragen
-
Metadaten-Unterstützung: Umfangreiche Dokumentmetadaten und Filterung
-
Repository-Pattern: Saubere Datenzugriff-Abstraktion
Verwendungsbeispiel
// Qdrant-Repository registrieren
services.AddQdrantDocumentRepository(settings);
// Dokument speichern
await repository.StoreDocumentAsync(document);
// Dokumente suchen
var results = await repository.SearchDocumentsAsync(query);
Zweck: Support-Ticket-Management-System mit SQLite-Datenbank
Schlüsselfeatures:
-
Vollständige CRUD-Operationen: Erstellen, lesen, aktualisieren, löschen von Support-Anfragen
-
Benutzerverwaltung: Support-Mitarbeiter mit Themen-Zuweisungen
-
Status-Tracking: Ticket-Lebenszyklus-Management
-
Entity Framework Core
-- Support-Anfragen
CREATE TABLE SupportRequests (
Id UNIQUEIDENTIFIER PRIMARY KEY,
CustomerEmail TEXT NOT NULL,
CustomerName TEXT NOT NULL,
Subject TEXT NOT NULL,
Description TEXT NOT NULL,
Status INTEGER NOT NULL,
Priority INTEGER NOT NULL,
CreatedAt DATETIME NOT NULL,
UpdatedAt DATETIME NOT NULL
);
-- Benutzer
CREATE TABLE Users (
Id UNIQUEIDENTIFIER PRIMARY KEY,
Name TEXT NOT NULL,
Email TEXT NOT NULL,
Topic TEXT NOT NULL,
IsActive BOOLEAN NOT NULL
);
Zweck: Dokumentsuche und -verwaltung mit semantischer Ähnlichkeit
Schlüsselfeatures:
-
Semantische Suche: Dokumente nach Bedeutung finden, nicht nur nach Schlüsselwörtern
-
Dokumentenverwaltung: Dokumentation speichern und organisieren
-
Vektor-Integration: Nutzt Qdrant für hochperformante Suche
-
Multi-Provider-Embeddings: Flexible Embedding-Provider-Unterstützung
Anwendungen
Zweck: Interaktiver MCP-Client mit AI-Chat-Integration
Schlüsselfeatures:
-
Multi-Provider-Chat: Wechsel zwischen OpenAI, Azure, Ollama, etc.
-
MCP-Tool-Integration: Zugriff auf SupportWizard- und SupportDocs-Tools
-
Interaktive Oberfläche: Reiche Konsolen-Erfahrung mit Spectre.Console
-
Konfigurationsverwaltung: Unterstützt mehrere AI-Provider gleichzeitig
Verwendung
# Interaktiven Client ausführen
dotnet run --project app/cmd-mcp-host
# Hilfe anzeigen
dotnet run --project app/cmd-mcp-host -- --help
# Verfügbare Provider auflisten
dotnet run --project app/cmd-mcp-host -- --list
# Server-Tests ausführen
dotnet run --project app/cmd-mcp-host -- --test
Zweck: PDF-Verarbeitungs- und Vektorisierungs-Utility
Schlüsselfeatures:
-
Batch-PDF-Verarbeitung: Mehrere PDFs in einem Lauf verarbeiten
-
Text-Chunking: Konfigurierbare Chunk-Größen und Überlappung
-
Vektor-Speicherung: Embeddings in Qdrant-Datenbank speichern
-
Datei-Tracking: Wiederverarbeitung mit JSON-Tracking-Datei vermeiden
Verwendung
# PDFs im konfigurierten Verzeichnis verarbeiten
dotnet run --project app/cmd-vectorize
# Konfiguration in appsettings.json:
{
"PdfDirectory": "../../../../../pdfs",
"TrackingFilePath": "../../../../../pdfs/processed_files.json"
}
sse-mcp-server
Zweck: HTTP/SSE-basierter MCP-Server für Web-Integration
Schlüsselfeatures:
-
ASP.NET Core: Moderne Web-Server-Infrastruktur
-
Server-Sent Events: Echtzeit-Kommunikation
-
Health Checks: Eingebaute Endpoint-Überwachung
-
Docker-Unterstützung: Containerisierte Bereitstellung
stdio-mcp-server
Zweck: STDIO-basierter MCP-Server für Kommandozeilen-Integration
Schlüsselfeatures:
-
Standard I/O: Funktioniert mit jedem MCP-Client
-
Konsolen-Host: Leichtgewichtige Bereitstellung
-
Docker-Unterstützung: Container-basierte Ausführung
-
Interaktiver Modus
Voraussetzungen & Setup
-
.NET 9.0 SDK oder später
-
Docker 20.10 oder später
-
Docker Compose 2.0 oder später
-
Git für Versionskontrolle
Erforderliche externe Services
-
Qdrant-Vektordatenbank: Bereitgestellt über Docker Compose
-
AI-Provider-API-Schlüssel: Mindestens einer von:
-
OpenAI-API-Schlüssel
-
Azure OpenAI-Zugangsdaten
-
Ollama (lokale Installation)
-
LMStudio (lokale Installation)
-
Ionos AI-API-Schlüssel
-
Entwicklungstools (empfohlen)
-
Visual Studio 2022 (aktualisiert) oder VS Code mit C#-Erweiterung
-
Docker Desktop für Container-Management
-
Postman oder ähnlich für API-Tests
-
DB Browser for SQLite für Datenbankinspektion
Installationsschritte
-
Repository klonen
git clone https://github.com/svkaenel/public-ai
cd public-ai
dotnet --version
# Sollte 9.0.x oder später anzeigen
dotnet restore
dotnet build
Konfigurationsleitfaden
Das System verwendet Umgebungsvariablen für API-Schlüssel und sensible Konfiguration. Dieser Ansatz hält Geheimnisse aus dem Quellcode heraus und unterstützt verschiedene Umgebungen.
# Beispieldatei kopieren
cp .env.example .env
# Mit Ihren Werten bearbeiten
nano .env # oder Ihr bevorzugter Editor
.env
# OpenAI API-Schlüssel
OPENAI_API_KEY=your-openai-api-key-here
# Ionos AI API-Schlüssel (JWT-Token)
IONOS_API_KEY=your-ionos-jwt-token-here
# Azure AI API-Schlüssel
AZURE_API_KEY=your-azure-ai-api-key-here
# Azure OpenAI API-Schlüssel
AZUREOAI_API_KEY=your-azure-openai-api-key-here
# LMStudio API-Schlüssel (normalerweise leer für lokal)
LMSTUDIO_API_KEY=
# Ollama API-Schlüssel (normalerweise leer für lokal)
OLLAMA_API_KEY=
# Docker Compose-Konfiguration
SSE_PORT=5561
SSE_CONFIG_PATH=./run/sse/appsettings.json
STDIO_CONFIG_PATH=./run/stdio/appsettings.json
Das System lädt automatisch Umgebungsvariablen in dieser Prioritätsreihenfolge:
-
Kommandozeilen-Umgebungsvariablen (höchste Priorität)
-
System-Umgebungsvariablen
-
.env-Datei-Variablen
-
appsettings.json-Werte (niedrigste Priorität)
AI-Provider-Konfiguration
Der ChatClients
-Abschnitt in appsettings.json
{
"DefaultChatClient": "OpenAI",
"ChatClients": [
{
"ProviderName": "OpenAI",
"Endpoint": "https://api.openai.com/v1",
"DefaultModel": "o4-mini",
"AvailableModels": [
"o4-mini",
"gpt-4.1-mini",
"gpt-4.1",
"o1"
]
},
{
"ProviderName": "Azure",
"Endpoint": "https://your-resource.services.ai.azure.com/models",
"DefaultModel": "DeepSeek-R1",
"AvailableModels": [
"DeepSeek-R1"
]
},
{
"ProviderName": "Ollama",
"Endpoint": "http://localhost:11434",
"DefaultModel": "qwen3:14b",
"AvailableModels": [
"qwen3:4b",
"qwen3:14b",
"gemma3:12b"
]
}
]
}
{
"ConnectionStrings": {
"SupportWizardDB": "Filename=db/ev-supportwizard.db"
}
}
{
"Telemetry": {
"Enabled": true,
"ServiceName": "cmd-mcp-host",
"OtlpEndpoint": "http://localhost:4317",
"EnableConsoleExporter": false,
"EnableOtlpExporter": true,
"LogSensitiveData": false,
"ActivitySources": [
"Microsoft.Extensions.AI"
]
}
}
Docker-Setup & Bereitstellung
Das System verwendet Docker Compose zur Orchestrierung mehrerer Services:
-
qdrantdb: Vektordatenbank für Dokumenten-Embeddings
-
aspire-dashboard: .NET Aspire-Dashboard für Telemetrie
-
sse-mcp-server: HTTP/SSE MCP-Server
-
stdio-mcp-server: STDIO MCP-Server
Umgebungsvorbereitung
-
Umgebungsvariablen einrichten
cp .env.example .env
# .env mit Ihren API-Schlüsseln bearbeiten
mkdir -p run/sse run/stdio
# Beispiel-Konfigurationen kopieren
cp app/cmd-mcp-host/appsettings.json run/sse/
cp app/cmd-mcp-host/appsettings.json run/stdio/
# Alle Services erstellen und starten
docker-compose up -d
# Logs anzeigen
docker-compose logs -f
# Service-Status prüfen
docker-compose ps
MCP-Server separat erstellen (aus dem public-ai-Verzeichnis):
# SSE MCP-Server
docker build -f srv/sse-mcp-server/Dockerfile -t sse-mcp-server .
# STDIO MCP-Server
docker build -f srv/stdio-mcp-server/Dockerfile -t stdio-mcp-server .
# Prüfen, ob Qdrant läuft
curl http://localhost:6335/
# SSE MCP-Server prüfen
curl http://localhost:5561/
# Aspire-Dashboard prüfen
# Browser öffnen: http://localhost:4316
Erste Schritte-Workflow
# Repository klonen
git clone https://github.com/svkaenel/public-ai
cd public-ai
# Lösung erstellen
dotnet build
# Umgebungsdatei erstellen
cp .env.example .env
# Mit Ihren API-Schlüsseln bearbeiten
nano .env
# Mindestens einen AI-Provider einstellen:
# OPENAI_API_KEY=your-api-key
# oder
# OLLAMA_API_KEY= # für lokales Ollama
# Infrastruktur-Services starten
docker-compose up -d
# Überprüfen, ob Services laufen
docker-compose ps
# Logs prüfen, wenn nötig
docker-compose logs -f
# PDF-Dateien im pdfs/-Verzeichnis platzieren
cp /path/to/your/docs/*.pdf pdfs/
# Vektorisierung ausführen
dotnet run --project app/cmd-vectorize
# Verarbeitungsergebnisse prüfen
cat pdfs/processed_files.json
# Alle MCP-Server und Tools testen
dotnet run --project app/cmd-mcp-host -- --test
# Verfügbare Provider auflisten
dotnet run --project app/cmd-mcp-host -- --list
# Interaktiven Chat-Client starten
dotnet run --project app/cmd-mcp-host
# Beispiel-Unterhaltung:
# > Hallo, können Sie mir bei der Suche nach Dokumenten über Embeddings helfen?
# > Erstellen Sie ein neues Support-Ticket für Kunde john@example.com
# > Zeigen Sie mir alle Support-Tickets mit hoher Priorität
PDF-Vektorisierungs-Leitfaden
Das cmd-vectorize
-Utility verarbeitet PDF-Dokumente und konvertiert sie in Vektor-Embeddings für semantische Suche. Dies ermöglicht es dem SupportDocs-Tool, relevante Dokumente basierend auf Bedeutung zu finden, anstatt nur nach Schlüsselwörtern.
Konfiguration
app/cmd-vectorize/appsettings.json
{
"PdfDirectory": "../../../../../pdfs",
"TrackingFilePath": "../../../../../pdfs/processed_files.json",
"DefaultEmbeddingProvider": "OpenAI",
"DefaultEmbeddingProviderAlt": "OllamaSharp",
"EmbeddingProviders": [
{
"ProviderName": "OpenAI",
"Endpoint": "https://api.openai.com/v1",
"DefaultModel": "text-embedding-3-small",
"EmbeddingDimensions": 1536
},
{
"ProviderName": "Ollama",
"Endpoint": "http://localhost:11434",
"DefaultModel": "nomic-embed-text",
"EmbeddingDimensions": 768
}
],
"Qdrant": {
"QdrantEndpoint": "localhost",
"CollectionName": "ev_support_documents",
"QdrantPort": 6336,
"VectorDimension": 1536
}
}
# pdfs-Verzeichnis erstellen (falls nicht vorhanden)
mkdir -p pdfs
# Ihre PDF-Dokumente kopieren
cp /path/to/your/docs/*.pdf pdfs/
# Beispiel-Struktur:
# pdfs/
# ├── benutzerhandbuch.pdf
# ├── api-dokumentation.pdf
# ├── fehlerbehebung.pdf
# └── processed_files.json (automatisch generiert)
# Alle PDFs im Verzeichnis verarbeiten
dotnet run --project app/cmd-vectorize
# Erwartete Ausgabe:
# [2024-01-01 10:00:00] Starte PDF-Vektorisierung...
# [2024-01-01 10:00:01] Verarbeite: benutzerhandbuch.pdf
# [2024-01-01 10:00:05] 1.234 Wörter extrahiert, 5 Chunks erstellt
# [2024-01-01 10:00:10] Embeddings generiert und in Qdrant gespeichert
# [2024-01-01 10:00:10] Verarbeite: api-dokumentation.pdf
# [2024-01-01 10:00:15] Überspringe (bereits verarbeitet): fehlerbehebung.pdf
# [2024-01-01 10:00:15] Vektorisierung abgeschlossen!
# Tracking-Datei prüfen
cat pdfs/processed_files.json
# Beispiel-Inhalt:
{
"processed_files": [
{
"filename": "benutzerhandbuch.pdf",
"processed_at": "2024-01-01T10:00:10Z",
"chunk_count": 5,
"word_count": 1234
}
]
}
Verwenden des MCP-Host-Clients
Die cmd-mcp-host
-Anwendung bietet eine reichhaltige interaktive Erfahrung für AI-Unterhaltungen mit integrierten MCP-Tools.
# Mit Standardkonfiguration ausführen
dotnet run --project app/cmd-mcp-host
# Verfügbare Optionen anzeigen
dotnet run --project app/cmd-mcp-host -- --help
# Konfigurierte Provider auflisten
dotnet run --project app/cmd-mcp-host -- --list
# MCP-Server vor dem Start testen
dotnet run --project app/cmd-mcp-host -- --test
Willkommen beim Evanto MCP Host Client
Aktueller Provider: OpenAI (o4-mini)
Verfügbare Tools: SupportWizard, SupportDocs
Geben Sie 'help' für Befehle ein, 'exit' zum Beenden
> Hallo, können Sie mir bei Support-Tickets helfen?
# SupportWizard-Tool-Beispiele
> "Erstellen Sie ein neues Support-Ticket für Kunde john@example.com mit Betreff 'Anmeldeprobleme'"
> "Zeigen Sie mir alle Support-Tickets mit hoher Priorität"
> "Listen Sie alle Benutzer auf, die technische Probleme behandeln können"
> "Aktualisieren Sie Support-Ticket ID 123 auf gelöst"
# SupportDocs-Tool-Beispiele
> "Suchen Sie nach Dokumentation über Embeddings"
> "Finden Sie Informationen über API-Authentifizierung"
> "Schauen Sie nach Fehlerbehebungsleitfäden für Datenbankverbindungen"
in unserem GitHub-Repository.
Das Projekt ist unter der MIT-Lizenz auf GitHub verfügbar: https://github.com/svkaenel/public-ai
Über uns
Ein erfahrenes Entwicklerteam, das mit Leib und Seele Software erstellt.
Letzte Blogeinträge
C#/.NET MCP Server Demo
Vom Prompt Engineering zum Context Engineering
Nützliche Verweise
Kontaktdaten
Brunnstr. 25,
Regensburg
+49 (941) 94592-0
+49 (941) 94592-22