Integrations
Supports configuration through environment variables loaded from .env files, allowing customization of connection settings, security parameters, timeouts, and caching behavior.
Enables deployment of the MCP server using Docker containers, with configuration via environment variables and docker-compose for simplified setup and management.
Provides access to the repository for cloning and installation, with documentation and setup instructions accessible through GitHub.
MCP MSSQL Server
Dies ist ein Model Context Protocol (MCP)-Server für SQL Server-Interaktionen. Er ermöglicht Large Language Models (LLMs) die Ausführung von SQL-Abfragen, die Ausführung gespeicherter Prozeduren und die Untersuchung von Datenbankschemata mit erhöhter Sicherheit und Robustheit.
Merkmale
- Sichere Ausführung von SQL-Abfragen : Führen Sie
SELECT
Abfragen für SQL Server-Datenbanken aus. Alle Abfragen werden analysiert und validiert, um sicherzustellen, dass nurSELECT
-Anweisungen ausgeführt werden. - Unterstützung gespeicherter Prozeduren : Führen Sie gespeicherte Prozeduren mit parametrisierten Eingaben aus.
- Schema-Erkundung : Zeigen Sie Datenbanktabellen- und Spaltendefinitionen an, wobei die Ergebnisse aus Leistungsgründen zwischengespeichert werden.
- Robustes Verbindungsmanagement : Nutzt einen globalen Verbindungspool zur effizienten Wiederverwendung von Datenbankverbindungen mit konfigurierbarer Wiederholungslogik und Timeouts.
- Verbesserte Sicherheit :
- SQL-Abfrageanalyse und
SELECT
-Only-Whitelist. - Umgebungsvariable
SQL_ALLOWED_DATABASES
, um zugängliche Datenbanken auf die Whitelist zu setzen. - Schutz vor gängigen SQL-Injection-Mustern beim Datenbankkontextwechsel.
- Blockiert die Ausführung potenziell schädlicher Systemprozeduren oder Befehle in direkten Abfragen.
- SQL-Abfrageanalyse und
- Konfigurierbares Caching : Datenbankschemainformationen werden mit einer konfigurierbaren Time-To-Live (TTL) zwischengespeichert.
- Strukturierte Protokollierung : Integrierter
pino
-Logger für detaillierte und strukturierte Anwendungsprotokolle. - Docker Ready : Einfache Bereitstellung mit Docker.
Schnellstart
Docker verwenden (empfohlen)
Vollständige Anweisungen zur Einrichtung von Docker finden Sie in der Docker-README-Datei .
Konfiguration
Der Server wird mithilfe von Umgebungsvariablen konfiguriert. Erstellen Sie eine .env
Datei im Stammverzeichnis (Sie können .env.example
kopieren), um diese Werte festzulegen.
Eine ausführliche Anleitung zu allen Konfigurationsoptionen und deren Einrichtung finden Sie unter CONFIG
.
Kategorie | Variable | Beschreibung | Standard (aus config.js) |
---|---|---|---|
Verbindung | SQL_SERVER | SQL Server-Hostname oder IP | localhost |
SQL_PORT | SQL Server-Port | 1433 | |
SQL_USER | SQL Server-Benutzername | sa | |
SQL_PASSWORD | SQL Server-Kennwort | Erforderlich | |
SQL_DATABASE | Standarddatenbankname für die Verbindung | master | |
Sicherheit | SQL_ENCRYPT | Verschlüsselung aktivieren (zum Deaktivieren auf false setzen) | true |
SQL_TRUST_SERVER_CERT | Serverzertifikat vertrauen (zum Deaktivieren auf false setzen) | true | |
SQL_ALLOWED_DATABASES | Komma-getrennte Liste der Datenbanken, auf die der Server zugreifen darf. Wenn diese Liste leer ist, ist der Zugriff weniger eingeschränkt (abhängig von den DB-Benutzerberechtigungen). | [] (leere Liste) | |
Timeouts und Wiederholungsversuche | SQL_CONNECTION_TIMEOUT | Verbindungs-Timeout (ms) | 30000 |
SQL_REQUEST_TIMEOUT | Anforderungstimeout für Abfragen (ms) | 30000 | |
SQL_MAX_RETRIES | Maximale Anzahl von Wiederholungsversuchen für erste Verbindungsversuche | 3 | |
SQL_INITIAL_RETRY_DELAY | Anfängliche Verzögerung (ms) vor dem erneuten Versuch einer fehlgeschlagenen Verbindung | 1000 | |
SQL_MAX_RETRY_DELAY | Maximale Verzögerung (ms) für Verbindungswiederholungen (verwendet exponentielles Backoff) | 30000 | |
Verbindungspool | SQL_POOL_MAX | Maximale Verbindungen im Pool | 10 |
SQL_POOL_MIN | Mindestanzahl an Verbindungen im Pool | 0 | |
SQL_POOL_IDLE_TIMEOUT | Leerlauf-Timeout für Verbindungen im Pool (ms) | 30000 | |
Zwischenspeichern | SQL_SCHEMA_CACHE_TTL | Time-To-Live für Schema-Cache (ms) | 300000 (5 Minuten) |
MCP-Server | MCP_SERVER_NAME | Name des MCP-Servers | MSSQL Server |
MCP_SERVER_VERSION | Version des MCP-Servers | 1.0.0 | |
Protokollierung | LOG_LEVEL | Protokollebene für Pino-Logger (z. B. fatal , error , warn , info , debug , trace , silent ). Dies wird direkt aus process.env in server.ts gelesen und ist nicht Teil von config.js . | info |
Verwendung mit Claude
So fügen Sie diesen MCP-Server zur Claude CLI hinzu:
Im Gespräch mit Claude können Sie:
- Führen Sie
SELECT
-Abfragen aus:(DasCopydatabase
ist optional, wenn mit der StandardSQL_DATABASE
gearbeitet wird oder wennSQL_ALLOWED_DATABASES
eine einzelne Auswahl impliziert.) - Gespeicherte Prozeduren ausführen:Copy
- Datenbankschema erkunden:(WennCopy
YourDatabaseName
weggelassen wird, wird standardmäßig die in den Umgebungsvariablen angegebeneSQL_DATABASE
verwendet.)
Verbindungsbehandlung
Dieser MCP-Server verwendet einen globalen, robusten Verbindungspool (integriertes Pooling der mssql
Bibliothek), der vom DatabaseService
verwaltet wird.
- Effizienz : Verbindungen werden wiederverwendet, wodurch der Aufwand für den Aufbau einer neuen Verbindung für jede Anforderung reduziert wird.
- Belastbarkeit : Implementiert eine Wiederholungslogik mit exponentiellem Backoff für den ersten Verbindungsaufbau.
- Kein Sitzungsstatus über Aufrufe hinweg : Im Gegensatz zu einem Sitzung-pro-Benutzer-Modell garantiert dieser Server nicht, dass nachfolgende MCP-Aufrufe (z. B. zwei separate
execute_query
Aufrufe) vom LLM genau dieselbe zugrunde liegende Datenbankverbindung verwenden. Daher sind sitzungsspezifische Zustände wie temporäre Tabellen oder Sitzungsvariablen, die in einem Aufruf erstellt wurden, möglicherweise in einem anderen Aufruf nicht verfügbar. Jeder Aufruf sollte aus Sicht des Sitzungsstatus als atomar betrachtet werden. Der BefehlUSE [database]
wird innerhalb jeder Operation ausgeführt, wenn die Zieldatenbank von der Standarddatenbank des Pools abweicht, um den Kontext für diese spezifische Operation sicherzustellen.
Entwicklung
Lokales Entwicklungs-Setup
Sicherheitshinweise
- Nur
SELECT
: Der Server erzwingt strikt, dass nurSELECT
-Abfragen über das Toolexecute_query
unter Verwendung von SQL-Parsing ausgeführt werden können. DML- (INSERT, UPDATE, DELETE) und DDL-Anweisungen werden blockiert. - Ausführung gespeicherter Prozeduren : Gespeicherte Prozeduren können zwar alle Aktionen ausführen, die ihre Berechtigungen zulassen, ihre Ausführung wird jedoch separat verwaltet.
- Datenbank-Whitelisting : Verwenden Sie die Umgebungsvariable
SQL_ALLOWED_DATABASES
, um die Datenbanken einzuschränken, mit denen der Server interagieren kann. Eine ausführliche Erläuterung dieser Funktion und ihrer Interaktion mitSQL_DATABASE
finden SieDATABASE_WHITELISTING.md
. - Blockierung von Systemprozeduren : Die direkte Ausführung gängiger Systemprozeduren (z. B.
sp_
,xp_
) und Befehle wieRECONFIGURE
oderWAITFOR DELAY
überexecute_query
wird blockiert. Für legitime Systeminteraktionen sollten gespeicherte Prozeduren verwendet werden. - Eingabevalidierung : Datenbanknamen für Kontextwechsel und Namen gespeicherter Prozeduren werden einer Formatvalidierung unterzogen. SQL-Parsing bietet eine zusätzliche Validierungsebene für Abfragen.
- Parametrisierte Eingaben : Parameter gespeicherter Prozeduren werden von der
mssql
Bibliothek verarbeitet, die sie normalerweise parametrisiert, um SQL-Injection zu verhindern.
Fehlerbehebung
Wenn Probleme auftreten:
- Überprüfen Sie die Containerprotokolle:
docker logs mssql-mcp
(bei Verwendung von Docker). - Überprüfen Sie die Konsolenausgabe des Servers auf Pino-Protokolle, wenn diese lokal ausgeführt werden.
- Überprüfen Sie, ob alle erforderlichen Umgebungsvariablen in Ihrer
.env
Datei richtig eingestellt sind, insbesondereSQL_PASSWORD
,SQL_SERVER
,SQL_USER
undSQL_DATABASE
. - Stellen Sie sicher, dass die Datenbank(en), auf die Sie zugreifen möchten, in
SQL_ALLOWED_DATABASES
aufgeführt sind, wenn Sie diese Variable festgelegt haben. - Bestätigen Sie die Netzwerkkonnektivität zu Ihrer SQL Server-Instanz, von der aus der MCP-Server ausgeführt wird.
- Die Testskripte (
test-mcp.sh
,test-session-persistence.sh
) müssen möglicherweise überprüft/aktualisiert werden.
Ausführliche Informationen zur Fehlerbehebung bei Docker finden Sie in der Docker-README-Datei .
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 es großen Sprachmodellen wie Claude ermöglicht, SQL-Abfragen auszuführen, Datenbankschemata zu untersuchen und dauerhafte Verbindungen zu SQL Server-Datenbanken aufrechtzuerhalten.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables Large Language Models to seamlessly interact with ClickHouse databases, supporting resource listing, schema retrieval, and query execution.Last updated -1PythonMIT License
Astra DB MCP Serverofficial
AsecurityAlicenseAqualityA Model Context Protocol server that allows Large Language Models to interact with Astra DB databases, providing tools for managing collections and records through natural language commands.Last updated -1011512TypeScriptApache 2.0- -security-license-qualityA Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.Last updated -Python
MCP TapData Serverofficial
-securityFlicense-qualityA Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.Last updated -