Erste Schritte: Erstellen Sie Ihren eigenen MCP-Client#
In diesem Tutorial erfahren Sie, wie Sie einen LLM-gestützten Chatbot-Client erstellen, der sich mit MCP-Servern verbindet. Es ist hilfreich, wenn Sie bereits den Server-Schnellstart durchgearbeitet haben, der Sie durch die Grundlagen des Erstellens Ihres ersten Servers führt.Python#
Systemanforderungen#
Bevor Sie beginnen, stellen Sie sicher, dass Ihr System diese Anforderungen erfüllt:Mac- oder Windows-Computer
Neueste Python-Version installiert
Neueste Version von uv installiert
Einrichten Ihrer Umgebung#
Erstellen Sie zunächst ein neues Python-Projekt mit uv:Einrichten Ihres API-Schlüssels#
Erstellen Sie eine .env-Datei, um ihn zu speichern:Fügen Sie Ihren Schlüssel zur .env-Datei hinzu:Fügen Sie .env zu Ihrer .gitignore-Datei hinzu:Stellen Sie sicher, dass Sie Ihren ANTHROPIC_API_KEY sicher aufbewahren!Erstellen des Clients#
Grundlegende Client-Struktur#
Richten wir zunächst unsere Importe ein und erstellen die grundlegende Client-Klasse:Server-Verbindungsmanagement#
Als Nächstes implementieren wir die Methode zum Verbinden mit einem MCP-Server:Abfrageverarbeitungslogik#
Fügen wir nun die Kernfunktionalität für die Verarbeitung von Abfragen und die Behandlung von Tool-Aufrufen hinzu:Interaktive Chat-Oberfläche#
Fügen wir nun die Chat-Schleife und die Bereinigungsfunktionalität hinzu:Haupteinstiegspunkt#
Fügen wir schließlich die Hauptausführungslogik hinzu:Sie finden die vollständige client.py-Datei hier.Erläuterung der Schlüsselkomponenten#
1. Client-Initialisierung#
Die MCPClient-Klasse initialisiert mit Sitzungsverwaltung und API-Clients
Verwendet AsyncExitStack für ordnungsgemäße Ressourcenverwaltung
Konfiguriert den Anthropic-Client für Claude-Interaktionen
2. Serververbindung#
Unterstützt sowohl Python- als auch Node.js-Server
Validiert den Server-Skripttyp
Richtet ordnungsgemäße Kommunikationskanäle ein
Initialisiert die Sitzung und listet verfügbare Tools auf
3. Abfrageverarbeitung#
Verwaltet den Konversationskontext
Behandelt Claudes Antworten und Tool-Aufrufe
Verwaltet den Nachrichtenfluss zwischen Claude und Tools
Kombiniert Ergebnisse zu einer kohärenten Antwort
4. Interaktive Oberfläche#
Bietet eine einfache Befehlszeilenschnittstelle
Behandelt Benutzereingaben und zeigt Antworten an
Beinhaltet grundlegende Fehlerbehandlung
Ermöglicht einen ordnungsgemäßen Ausstieg
5. Ressourcenmanagement#
Ordnungsgemäße Bereinigung von Ressourcen
Fehlerbehandlung für Verbindungsprobleme
Geordnete Herunterfahrprozeduren
Häufige Anpassungspunkte#
1.
Ändern Sie process_query(), um bestimmte Tool-Typen zu behandeln
Fügen Sie benutzerdefinierte Fehlerbehandlung für Tool-Aufrufe hinzu
Implementieren Sie toolspezifische Antwortformatierung
2.
Passen Sie an, wie Tool-Ergebnisse formatiert werden
Fügen Sie Antwortfilterung oder -transformation hinzu
Implementieren Sie benutzerdefinierte Protokollierung
3.
Fügen Sie eine GUI- oder Weboberfläche hinzu
Implementieren Sie eine umfangreiche Konsolenausgabe
Fügen Sie Befehlshistorie oder automatische Vervollständigung hinzu
Ausführen des Clients#
So führen Sie Ihren Client mit einem beliebigen MCP-Server aus:Wenn Sie das Wetter-Tutorial aus dem Server-Schnellstart fortsetzen, könnte Ihr Befehl in etwa so aussehen: python client.py .../weather/src/weather/server.py1.
Stellen Sie eine Verbindung zum angegebenen Server her
2.
Verfügbare Tools auflisten
3.
Starten Sie eine interaktive Chat-Sitzung, in der Sie:Erhalten Sie Antworten von Claude
Hier ist ein Beispiel dafür, wie es aussehen sollte, wenn es mit dem Wetterserver aus dem Server-Schnellstart verbunden ist:Funktionsweise#
Wenn Sie eine Abfrage senden:1.
Der Client ruft die Liste der verfügbaren Tools vom Server ab
2.
Ihre Abfrage wird zusammen mit Tool-Beschreibungen an Claude gesendet
3.
Claude entscheidet, welche Tools (falls vorhanden) verwendet werden sollen
4.
Der Client führt alle angeforderten Tool-Aufrufe über den Server aus
5.
Die Ergebnisse werden an Claude zurückgesendet
6.
Claude liefert eine natürlichsprachliche Antwort
7.
Die Antwort wird Ihnen angezeigt
Bewährte Verfahren#
1.
Schließen Sie Tool-Aufrufe immer in Try-Catch-Blöcke ein
Geben Sie aussagekräftige Fehlermeldungen aus
Behandeln Sie Verbindungsprobleme ordnungsgemäß
2.
Verwenden Sie AsyncExitStack für ordnungsgemäße Bereinigung
Schließen Sie Verbindungen, wenn Sie fertig sind
Behandeln Sie Serververbindungsabbrüche
3.
Speichern Sie API-Schlüssel sicher in .env
Validieren Sie Serverantworten
Seien Sie vorsichtig mit Tool-Berechtigungen
Fehlerbehebung#
Probleme mit dem Serverpfad#
Überprüfen Sie, ob der Pfad zu Ihrem Server-Skript korrekt ist
Verwenden Sie den absoluten Pfad, wenn der relative Pfad nicht funktioniert
Stellen Sie für Windows-Benutzer sicher, dass Sie Schrägstriche (/) oder Escape-Backslashes () im Pfad verwenden
Stellen Sie sicher, dass die Serverdatei die korrekte Erweiterung hat (.py für Python oder .js für Node.js)
Beispiel für die korrekte Pfadverwendung:Antwortzeit#
Die erste Antwort kann bis zu 30 Sekunden dauern
Dies ist normal und geschieht während:Der Server initialisiert wird
Claude die Abfrage verarbeitet
Nachfolgende Antworten sind in der Regel schneller
Unterbrechen Sie den Vorgang während dieser anfänglichen Wartezeit nicht
Häufige Fehlermeldungen#
Wenn Sie Folgendes sehen:FileNotFoundError: Überprüfen Sie Ihren Serverpfad
Connection refused: Stellen Sie sicher, dass der Server ausgeführt wird und der Pfad korrekt ist
Tool execution failed: Stellen Sie sicher, dass die erforderlichen Umgebungsvariablen des Tools gesetzt sind
Timeout error: Erwägen Sie, das Timeout in Ihrer Clientkonfiguration zu erhöhen
Modified at 2025-03-13 03:51:12