MCP-Server für MySQL basierend auf NodeJS
Ein Model Context Protocol-Server, der Zugriff auf MySQL-Datenbanken bietet. Dieser Server ermöglicht LLMs die Überprüfung von Datenbankschemata und die Ausführung von SQL-Abfragen.
Inhaltsverzeichnis
- Anforderungen
- Installation
- Komponenten
- Konfiguration
- Umgebungsvariablen
- Multi-DB-Modus
- Schemaspezifische Berechtigungen
- Testen
- Fehlerbehebung
- Beitragen
- Lizenz
Anforderungen
- Node.js v18 oder höher
- MySQL 5.7 oder höher (MySQL 8.0+ empfohlen)
- MySQL-Benutzer mit entsprechenden Berechtigungen für die von Ihnen benötigten Vorgänge
- Für Schreibvorgänge: MySQL-Benutzer mit INSERT-, UPDATE- und/oder DELETE-Berechtigungen
Installation
Es gibt mehrere Möglichkeiten, den MCP-Server zu installieren und zu konfigurieren. Am häufigsten wird jedoch die folgende Website aufgerufen : https://smithery.ai/server/@benborla29/mcp-server-mysql
Cursor
Für Cursor IDE können Sie diesen MCP-Server mit dem folgenden Befehl in Ihrem Projekt installieren:
- Besuchen Sie https://smithery.ai/server/@benborla29/mcp-server-mysql
- Folgen Sie den Anweisungen für den Cursor
MCP Get bietet ein zentrales Register von MCP-Servern und vereinfacht den Installationsprozess.
Verwenden von NPM/PNPM
Für die manuelle Installation:
Nach der manuellen Installation müssen Sie Ihre LLM-Anwendung für die Verwendung des MCP-Servers konfigurieren (siehe Abschnitt „Konfiguration“ weiter unten).
Ausführen vom lokalen Repository
Wenn Sie diesen MCP-Server direkt aus dem Quellcode klonen und ausführen möchten, führen Sie die folgenden Schritte aus:
- Klonen Sie das Repository
- Installieren von Abhängigkeiten
- Erstellen des Projekts
- Claude Desktop konfigurierenFügen Sie Ihrer Claude Desktop-Konfigurationsdatei (
claude_desktop_config.json
) Folgendes hinzu:Ersetzen:/path/to/node
mit dem vollständigen Pfad zu Ihrer Node.js-Binärdatei (finden Sie sie mitwhich node
)/full/path/to/mcp-server-mysql
mit dem vollständigen Pfad zum geklonten Repository- Legen Sie die MySQL-Anmeldeinformationen so fest, dass sie zu Ihrer Umgebung passen
- Testen des ServersWenn die Verbindung zu MySQL erfolgreich hergestellt wird, können Sie es mit Claude Desktop verwenden.
Komponenten
Werkzeuge
- mysql_query
- Ausführen von SQL-Abfragen für die verbundene Datenbank
- Eingabe:
sql
(Zeichenfolge): Die auszuführende SQL-Abfrage - Standardmäßig auf NUR-LESE-Operationen beschränkt
- Optionale Schreibvorgänge (sofern über die Konfiguration aktiviert):
- INSERT: Neue Daten zu Tabellen hinzufügen (erfordert
ALLOW_INSERT_OPERATION=true
) - UPDATE: Vorhandene Daten ändern (erfordert
ALLOW_UPDATE_OPERATION=true
) - DELETE: Daten entfernen (erfordert
ALLOW_DELETE_OPERATION=true
)
- INSERT: Neue Daten zu Tabellen hinzufügen (erfordert
- Alle Vorgänge werden innerhalb einer Transaktion mit ordnungsgemäßer Commit-/Rollback-Behandlung ausgeführt
- Unterstützt vorbereitete Anweisungen für die sichere Parameterverarbeitung
- Konfigurierbare Abfrage-Timeouts und Ergebnis-Paginierung
- Integrierte Abfrageausführungsstatistiken
Ressourcen
Der Server stellt umfassende Datenbankinformationen bereit:
- Tabellenschemata
- JSON-Schemainformationen für jede Tabelle
- Spaltennamen und Datentypen
- Indexinformationen und Einschränkungen
- Fremdschlüsselbeziehungen
- Tabellenstatistiken und Metriken
- Automatisch aus Datenbankmetadaten ermittelt
Sicherheitsfunktionen
- SQL-Injection-Prävention durch vorbereitete Anweisungen
- Abfrage-Whitelisting-/Blacklisting-Funktionen
- Ratenbegrenzung für die Abfrageausführung
- Abfragekomplexitätsanalyse
- Konfigurierbare Verbindungsverschlüsselung
- Durchsetzung schreibgeschützter Transaktionen
Leistungsoptimierungen
- Optimiertes Verbindungspooling
- Zwischenspeichern von Abfrageergebnissen
- Streaming großer Ergebnismengen
- Analyse des Abfrageausführungsplans
- Konfigurierbare Abfrage-Timeouts
Überwachung und Fehlerbehebung
- Umfassende Abfrageprotokollierung
- Erfassung von Leistungsmetriken
- Fehlerverfolgung und -berichterstattung
- Integritätsprüfungsendpunkte
- Abfrageausführungsstatistiken
Konfiguration
Automatische Konfiguration mit Smithery
Wenn Sie Smithery installiert haben, ist Ihre Konfiguration bereits eingerichtet. Sie können sie wie folgt anzeigen oder ändern:
Bei der Neukonfiguration können Sie alle MySQL-Verbindungsdetails sowie die Einstellungen für den Schreibvorgang aktualisieren:
- Grundlegende Verbindungseinstellungen :
- MySQL-Host, Port, Benutzer, Passwort, Datenbank
- SSL/TLS-Konfiguration (wenn Ihre Datenbank sichere Verbindungen erfordert)
- Berechtigungen für Schreibvorgänge :
- INSERT-Operationen zulassen: Auf „true“ setzen, wenn Sie das Hinzufügen neuer Daten zulassen möchten
- UPDATE-Operationen zulassen: Auf „true“ setzen, wenn Sie die Aktualisierung vorhandener Daten zulassen möchten
- DELETE-Operationen zulassen: Auf „true“ setzen, wenn Sie das Löschen von Daten zulassen möchten
Aus Sicherheitsgründen sind alle Schreibvorgänge standardmäßig deaktiviert. Aktivieren Sie diese Einstellungen nur, wenn Claude Ihre Datenbankdaten ändern soll.
Erweiterte Konfigurationsoptionen
Um das Verhalten des MCP-Servers besser steuern zu können, können Sie die folgenden erweiterten Konfigurationsoptionen verwenden:
Umgebungsvariablen
Grundlegende Verbindung
MYSQL_SOCKET_PATH
: Unix-Socket-Pfad für lokale Verbindungen (zB "/tmp/mysql.sock")MYSQL_HOST
: MySQL-Server-Host (Standard: „127.0.0.1“) – wird ignoriert, wenn MYSQL_SOCKET_PATH gesetzt istMYSQL_PORT
: MySQL-Server-Port (Standard: „3306“) – wird ignoriert, wenn MYSQL_SOCKET_PATH gesetzt istMYSQL_USER
: MySQL-Benutzername (Standard: „root“)MYSQL_PASS
: MySQL-PasswortMYSQL_DB
: Name der Zieldatenbank (für den Multi-DB-Modus leer lassen)
Leistungskonfiguration
MYSQL_POOL_SIZE
: Größe des Verbindungspools (Standard: „10“)MYSQL_QUERY_TIMEOUT
: Abfrage-Timeout in Millisekunden (Standard: „30000“)MYSQL_CACHE_TTL
: Cache-Lebensdauer in Millisekunden (Standard: „60000“)
Sicherheitskonfiguration
MYSQL_RATE_LIMIT
: Maximale Abfragen pro Minute (Standard: „100“)MYSQL_MAX_QUERY_COMPLEXITY
: Maximale Abfragekomplexitätsbewertung (Standard: „1000“)MYSQL_SSL
: SSL/TLS-Verschlüsselung aktivieren (Standard: „false“)ALLOW_INSERT_OPERATION
: INSERT-Operationen aktivieren (Standard: „false“)ALLOW_UPDATE_OPERATION
: UPDATE-Operationen aktivieren (Standard: „false“)ALLOW_DELETE_OPERATION
: DELETE-Operationen aktivieren (Standard: „false“)ALLOW_DDL_OPERATION
: DDL-Operationen aktivieren (Standard: „false“)SCHEMA_INSERT_PERMISSIONS
: Schemaspezifische INSERT-BerechtigungenSCHEMA_UPDATE_PERMISSIONS
: Schemaspezifische UPDATE-BerechtigungenSCHEMA_DELETE_PERMISSIONS
: Schemaspezifische DELETE-BerechtigungenSCHEMA_DDL_PERMISSIONS
: Schemaspezifische DDL-BerechtigungenMULTI_DB_WRITE_MODE
: Schreibvorgänge im Multi-DB-Modus aktivieren (Standard: „false“)
Überwachungskonfiguration
MYSQL_ENABLE_LOGGING
: Abfrageprotokollierung aktivieren (Standard: „false“)MYSQL_LOG_LEVEL
: Protokollierungsebene (Standard: „info“)MYSQL_METRICS_ENABLED
: Leistungsmetriken aktivieren (Standard: „false“)
Multi-DB-Modus
MCP-Server-MySQL unterstützt die Verbindung zu mehreren Datenbanken, wenn keine spezifische Datenbank festgelegt ist. Dadurch kann der LLM jede Datenbank abfragen, auf die der MySQL-Benutzer Zugriff hat. Ausführliche Informationen finden Sie in der Datei README-MULTI-DB.md .
Aktivieren des Multi-DB-Modus
Um den Multi-DB-Modus zu aktivieren, lassen Sie die Umgebungsvariable MYSQL_DB
einfach leer. Im Multi-DB-Modus erfordern Abfragen eine Schemaqualifizierung:
Schemaspezifische Berechtigungen
Für eine detaillierte Kontrolle von Datenbankoperationen unterstützt MCP-Server-MySQL jetzt schemaspezifische Berechtigungen. Dadurch können verschiedene Datenbanken unterschiedliche Zugriffsebenen haben (schreibgeschützt, Lese-/Schreibzugriff usw.).
Konfigurationsbeispiel
Vollständige Details und Sicherheitsempfehlungen finden Sie unter README-MULTI-DB.md .
Testen
Datenbank-Setup
Bevor Sie Tests ausführen, müssen Sie die Testdatenbank einrichten und mit Testdaten füllen:
- Testdatenbank und Benutzer erstellen
- Datenbank-Setup-Skript ausführenDadurch werden die erforderlichen Tabellen und Seed-Daten erstellt. Das Skript befindet sich in
scripts/setup-test-db.ts
- Testumgebung konfigurieren Erstellen Sie eine
.env.test
Datei im Projektstamm (falls nicht vorhanden): - Aktualisieren Sie package.json-Skripte. Fügen Sie diese Skripte zu Ihrem package.json hinzu:
Ausführen von Tests
Das Projekt umfasst eine umfassende Testsuite, um Funktionalität und Zuverlässigkeit sicherzustellen:
Ausführen von Evaluierungen
Das Evals-Paket lädt einen MCP-Client, der anschließend die Datei index.ts ausführt, sodass zwischen den Tests kein Neuaufbau erforderlich ist. Sie können Umgebungsvariablen laden, indem Sie dem Befehl npx voranstellen. Die vollständige Dokumentation finden Sie hier .
Fehlerbehebung
Häufige Probleme
- Verbindungsprobleme
- Überprüfen Sie, ob der MySQL-Server ausgeführt wird und zugänglich ist
- Überprüfen Sie Anmeldeinformationen und Berechtigungen
- Stellen Sie sicher, dass die SSL/TLS-Konfiguration korrekt ist, falls aktiviert
- Versuchen Sie, eine Verbindung mit einem MySQL-Client herzustellen, um den Zugriff zu bestätigen
- Leistungsprobleme
- Passen Sie die Größe des Verbindungspools an
- Konfigurieren von Abfrage-Timeoutwerten
- Aktivieren Sie bei Bedarf das Abfrage-Caching
- Überprüfen der Einstellungen für die Abfragekomplexität
- Überwachen der Serverressourcennutzung
- Sicherheitsbeschränkungen
- Überprüfen der Ratenbegrenzungskonfiguration
- Überprüfen Sie die Abfrage-Whitelist-/Blacklist-Einstellungen
- Überprüfen der SSL/TLS-Einstellungen
- Stellen Sie sicher, dass der Benutzer über die entsprechenden MySQL-Berechtigungen verfügt
- Pfadauflösung Wenn der Fehler „Verbindung zum MCP-Server mcp-server-mysql konnte nicht hergestellt werden“ auftritt, legen Sie den Pfad aller erforderlichen Binärdateien explizit fest:
Wo finde ich meinen node
Bin-Pfad? Führen Sie den folgenden Befehl aus, um ihn abzurufen:
Für PATH
Für NODE_PATH
- Claude Desktop-spezifische Probleme
- Wenn Sie in Claude Desktop Protokolle mit der Meldung „Server getrennt“ sehen, überprüfen Sie die Protokolle unter
~/Library/Logs/Claude/mcp-server-mcp_server_mysql.log
- Stellen Sie sicher, dass Sie den absoluten Pfad sowohl zur Node-Binärdatei als auch zum Serverskript verwenden.
- Überprüfen Sie, ob Ihre
.env
Datei ordnungsgemäß geladen wird. Verwenden Sie explizite Umgebungsvariablen in der Konfiguration. - Versuchen Sie, den Server direkt über die Befehlszeile auszuführen, um festzustellen, ob Verbindungsprobleme vorliegen
- Wenn Sie Schreibvorgänge (INSERT, UPDATE, DELETE) benötigen, setzen Sie die entsprechenden Flags in Ihrer Konfiguration auf „true“:
- Stellen Sie sicher, dass Ihr MySQL-Benutzer über die entsprechenden Berechtigungen für die Vorgänge verfügt, die Sie aktivieren.
- Verwenden Sie für die Konfiguration der direkten Ausführung:
- Wenn Sie in Claude Desktop Protokolle mit der Meldung „Server getrennt“ sehen, überprüfen Sie die Protokolle unter
- Authentifizierungsprobleme
- Stellen Sie bei MySQL 8.0+ sicher, dass der Server das Authentifizierungs-Plugin
caching_sha2_password
unterstützt. - Überprüfen Sie, ob Ihr MySQL-Benutzer mit der richtigen Authentifizierungsmethode konfiguriert ist
- Versuchen Sie bei Bedarf, einen Benutzer mit Legacy-Authentifizierung zu erstellen:@lizhuangs
- Stellen Sie bei MySQL 8.0+ sicher, dass der Server das Authentifizierungs-Plugin
- Ich stoße auf
Error [ERR_MODULE_NOT_FOUND]: Cannot find package 'dotenv' imported from
. Versuchen Sie diese Problemumgehung:
Danke an @lizhuangs
Beitragen
Beiträge sind willkommen! Senden Sie gerne einen Pull Request an https://github.com/benborla/mcp-server-mysql
Vielen Dank an die folgenden Mitwirkenden:
Entwicklungs-Setup
- Klonen Sie das Repository
- Abhängigkeiten installieren:
pnpm install
- Erstellen Sie das Projekt:
pnpm run build
- Tests ausführen:
pnpm test
Projekt-Roadmap
Wir arbeiten aktiv an der Verbesserung dieses MCP-Servers. Weitere Informationen zu geplanten Funktionen finden Sie in unserer Datei CHANGELOG.md .
- Erweiterte Abfragefunktionen mit vorbereiteten Anweisungen
- Erweiterte Sicherheitsfunktionen
- Leistungsoptimierungen
- Umfassende Überwachung
- Erweiterte Schemainformationen
Wenn Sie zu einem dieser Bereiche beitragen möchten, sehen Sie sich die Probleme auf GitHub an oder eröffnen Sie ein neues, um Ihre Ideen zu diskutieren.
Änderungen übermitteln
- Forken Sie das Repository
- Erstellen Sie einen Feature-Zweig:
git checkout -b feature/your-feature-name
- Übernehmen Sie Ihre Änderungen:
git commit -am 'Add some feature'
- Pushen zum Zweig:
git push origin feature/your-feature-name
- Senden einer Pull-Anfrage
Lizenz
Dieser MCP-Server ist unter der MIT-Lizenz lizenziert. Weitere Informationen finden Sie in der Datei LICENSE.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Ein Model Context Protocol-Server, der schreibgeschützten Zugriff auf MySQL-Datenbanken bietet und es LLMs ermöglicht, Datenbankschemata zu überprüfen und schreibgeschützte Abfragen auszuführen.
- Inhaltsverzeichnis
- Anforderungen
- Installation
- Komponenten
- Konfiguration
- Umgebungsvariablen
- Multi-DB-Modus
- Schemaspezifische Berechtigungen
- Testen
- Ausführen von Evaluierungen
- Fehlerbehebung
- Beitragen
- Vielen Dank an die folgenden Mitwirkenden:
- Lizenz
Related Resources
Related MCP Servers
- -securityAlicense-qualityEnables LLMs to interact with MySQL databases by inspecting schemas and executing safe, read-only queries within transactions.Last updated -6JavaScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426TypeScriptMIT License
- -securityAlicense-qualityA Model Context Protocol server that provides read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -5,426MIT License
- -security-license-qualityA Model Context Protocol server providing read-only access to MySQL databases, enabling LLMs to inspect database schemas and execute read-only queries.Last updated -1JavaScript