MCP SQL Server

by JubinSaniei

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 nur SELECT -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.
  • 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)

# Clone the repository (if you haven't already) git clone https://github.com/JubinSaniei/mcp-mssql # cd mcp-mssql # Copy example configuration and edit with your settings cp .env.example .env nano .env # Edit with your SQL Server details and other configurations # Start the Docker container docker-compose up -d

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 .

KategorieVariableBeschreibungStandard (aus config.js)
VerbindungSQL_SERVERSQL Server-Hostname oder IPlocalhost
SQL_PORTSQL Server-Port1433
SQL_USERSQL Server-Benutzernamesa
SQL_PASSWORDSQL Server-KennwortErforderlich
SQL_DATABASEStandarddatenbankname für die Verbindungmaster
SicherheitSQL_ENCRYPTVerschlüsselung aktivieren (zum Deaktivieren auf false setzen)true
SQL_TRUST_SERVER_CERTServerzertifikat vertrauen (zum Deaktivieren auf false setzen)true
SQL_ALLOWED_DATABASESKomma-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 WiederholungsversucheSQL_CONNECTION_TIMEOUTVerbindungs-Timeout (ms)30000
SQL_REQUEST_TIMEOUTAnforderungstimeout für Abfragen (ms)30000
SQL_MAX_RETRIESMaximale Anzahl von Wiederholungsversuchen für erste Verbindungsversuche3
SQL_INITIAL_RETRY_DELAYAnfängliche Verzögerung (ms) vor dem erneuten Versuch einer fehlgeschlagenen Verbindung1000
SQL_MAX_RETRY_DELAYMaximale Verzögerung (ms) für Verbindungswiederholungen (verwendet exponentielles Backoff)30000
VerbindungspoolSQL_POOL_MAXMaximale Verbindungen im Pool10
SQL_POOL_MINMindestanzahl an Verbindungen im Pool0
SQL_POOL_IDLE_TIMEOUTLeerlauf-Timeout für Verbindungen im Pool (ms)30000
ZwischenspeichernSQL_SCHEMA_CACHE_TTLTime-To-Live für Schema-Cache (ms)300000 (5 Minuten)
MCP-ServerMCP_SERVER_NAMEName des MCP-ServersMSSQL Server
MCP_SERVER_VERSIONVersion des MCP-Servers1.0.0
ProtokollierungLOG_LEVELProtokollebene 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:

# Add the MCP server using the config file claude mcp add-json mssql-mcp "$(cat claude-mcp-config.json)" # To add it globally claude mcp add-json -s user mssql-mcp "$(cat claude-mcp-config.json)" # Start a conversation with Claude using this MCP claude mcp mssql-mcp

Im Gespräch mit Claude können Sie:

  1. Führen Sie SELECT -Abfragen aus:
    <mcp:execute_query database="YourDatabaseName"> SELECT TOP 10 * FROM YourTable </mcp:execute_query>
    (Das database ist optional, wenn mit der Standard SQL_DATABASE gearbeitet wird oder wenn SQL_ALLOWED_DATABASES eine einzelne Auswahl impliziert.)
  2. Gespeicherte Prozeduren ausführen:
    <mcp:execute_StoredProcedure database="YourDatabaseName"> { "procedure": "YourSchema.YourProcedureName", "parameters": [ {"name": "Param1", "type": "NVarChar", "value": "SomeValue"}, {"name": "Param2", "type": "Int", "value": 123} ] } </mcp:execute_StoredProcedure>
  3. Datenbankschema erkunden:
    <mcp:schema> YourDatabaseName </mcp:schema>
    (Wenn YourDatabaseName weggelassen wird, wird standardmäßig die in den Umgebungsvariablen angegebene SQL_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 Befehl USE [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

# Install dependencies npm install # Create and configure your .env file cp .env.example .env nano .env # Run the server directly (requires environment variables to be set) npm start # Run with TypeScript compiler watching for changes npm run dev

Sicherheitshinweise

  • Nur SELECT : Der Server erzwingt strikt, dass nur SELECT -Abfragen über das Tool execute_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 mit SQL_DATABASE finden Sie DATABASE_WHITELISTING.md .
  • Blockierung von Systemprozeduren : Die direkte Ausführung gängiger Systemprozeduren (z. B. sp_ , xp_ ) und Befehle wie RECONFIGURE oder WAITFOR DELAY über execute_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:

  1. Überprüfen Sie die Containerprotokolle: docker logs mssql-mcp (bei Verwendung von Docker).
  2. Überprüfen Sie die Konsolenausgabe des Servers auf Pino-Protokolle, wenn diese lokal ausgeführt werden.
  3. Überprüfen Sie, ob alle erforderlichen Umgebungsvariablen in Ihrer .env Datei richtig eingestellt sind, insbesondere SQL_PASSWORD , SQL_SERVER , SQL_USER und SQL_DATABASE .
  4. 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.
  5. Bestätigen Sie die Netzwerkkonnektivität zu Ihrer SQL Server-Instanz, von der aus der MCP-Server ausgeführt wird.
  6. 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 .

-
security - not tested
F
license - not found
-
quality - not tested

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.

  1. Merkmale
    1. Schnellstart
      1. Docker verwenden (empfohlen)
    2. Konfiguration
      1. Verwendung mit Claude
        1. Verbindungsbehandlung
          1. Entwicklung
            1. Lokales Entwicklungs-Setup
          2. Sicherheitshinweise
            1. Fehlerbehebung

              Related MCP Servers

              • -
                security
                A
                license
                -
                quality
                A 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 -
                1
                Python
                MIT License
                • Linux
                • Apple
              • A
                security
                A
                license
                A
                quality
                A 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 -
                10
                115
                12
                TypeScript
                Apache 2.0
                • Apple
              • -
                security
                -
                license
                -
                quality
                A 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
              • -
                security
                F
                license
                -
                quality
                A 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 -
                • Apple

              View all related MCP servers

              ID: 6rj1s2u5o5