Skip to main content
Glama
SteveZhuhaobo

SQL Server MCP Server

SQL Server MCP-Server

Ein containerisierter Model Context Protocol (MCP)-Server für SQL Server-Vorgänge. Dieser Docker-Container stellt einen vollständigen MCP-Server bereit, der eine Verbindung zu SQL Server herstellen und verschiedene Datenbankoperationen über das MCP-Protokoll ausführen kann.

Funktionen

  • Vollständige SQL Server-Integration: Abfragen ausführen, Tabellen verwalten und Datenbankoperationen durchführen

  • Konfiguration über Umgebungsvariablen: Einfache Konfiguration durch Umgebungsvariablen

  • Authentifizierungsunterstützung: Sowohl SQL Server- als auch Windows-Authentifizierung

  • Verbindungsverwaltung: Integrierte Verbindungssteuerung und Wiederholungslogik

  • Integritätsprüfungen: Überwachung und Validierung des Container-Status

  • Multi-Plattform-Unterstützung: Unterstützt sowohl AMD64- als auch ARM64-Architekturen

  • ODBC-Treiberunterstützung: Enthält den Microsoft ODBC Driver 17 für SQL Server

Related MCP server: mcp-sqlserver

Schnellstart

Verwendung von Docker Run

# Basic usage with SQL Server authentication
docker run -e SQLSERVER_SERVER=myserver.database.windows.net \
           -e SQLSERVER_DATABASE=mydatabase \
           -e SQLSERVER_USERNAME=myuser \
           -e SQLSERVER_PASSWORD=mypassword \
           sqlserver-mcp:latest

Verwendung von Docker Compose

  1. Kopieren Sie die Datei .env.example nach .env:

    cp .env.example .env
  2. Bearbeiten Sie die Datei .env mit Ihren SQL Server-Anmeldedaten:

    # Edit .env with your settings
    nano .env
  3. Starten Sie den Container:

    docker-compose up -d

Konfiguration

Umgebungsvariablen

Erforderliche Variablen

Variable

Beschreibung

Beispiel

SQLSERVER_SERVER

SQL Server-Hostname oder IP

myserver.database.windows.net

Authentifizierungsvariablen (wählen Sie eine Methode)

Methode 1: SQL Server-Authentifizierung

Variable

Beschreibung

Beispiel

SQLSERVER_USERNAME

SQL Server-Benutzername

sa

SQLSERVER_PASSWORD

SQL Server-Passwort

MyPassword123!

Methode 2: Windows-Authentifizierung

Variable

Beschreibung

Beispiel

SQLSERVER_USE_WINDOWS_AUTH

Windows-Authentifizierung verwenden

true

Optionale Verbindungsvariablen

Variable

Beschreibung

Standard

Beispiel

SQLSERVER_DATABASE

Standard-Datenbank

master

MyDatabase

SQLSERVER_DRIVER

ODBC-Treibername

ODBC Driver 17 for SQL Server

ODBC Driver 18 for SQL Server

SQLSERVER_ENCRYPT

Verbindung verschlüsseln

yes

no

SQLSERVER_TRUST_CERTIFICATE

Serverzertifikat vertrauen

yes

no

Authentifizierungsmethoden

SQL Server-Authentifizierung

Die gängigste Authentifizierungsmethode mit Benutzername und Passwort:

docker run -e SQLSERVER_SERVER=myserver \
           -e SQLSERVER_DATABASE=mydatabase \
           -e SQLSERVER_USERNAME=myuser \
           -e SQLSERVER_PASSWORD=mypassword \
           sqlserver-mcp:latest

Windows-Authentifizierung

Für in Domänen eingebundene Umgebungen (erfordert zusätzliche Container-Konfiguration):

docker run -e SQLSERVER_SERVER=myserver \
           -e SQLSERVER_DATABASE=mydatabase \
           -e SQLSERVER_USE_WINDOWS_AUTH=true \
           sqlserver-mcp:latest

Verfügbare MCP-Tools

Der Server stellt die folgenden MCP-Tools bereit:

Verbindungsverwaltung

  • test_connection - Testet die SQL Server-Verbindung und gibt grundlegende Datenbankinformationen zurück

Datenbankerkennung

  • list_tables - Listet alle Tabellen in der SQL Server-Datenbank auf

  • get_table_schema - Ruft detaillierte Tabellenschema-Informationen ab

Tabellenoperationen

  • create_table - Erstellt eine neue Tabelle in SQL Server

  • insert_data - Fügt Daten in eine SQL Server-Tabelle ein

Abfrageausführung

  • execute_query - Führt SQL-Abfragen mit vollständigen Ergebnismengen aus

Erstellen des Containers

Build-Skript

Verwenden Sie das bereitgestellte Build-Skript für eine einfache Erstellung:

# Build with default settings
./build.sh

# Build with specific tag
./build.sh v1.0.0

# Build with registry prefix
REGISTRY=ghcr.io/myorg ./build.sh v1.0.0

# Build and test
./build.sh --test

# Build without cache
./build.sh --no-cache

Manuelle Erstellung

# Build the image
docker build -t sqlserver-mcp:latest .

# Build for multiple platforms
docker buildx build --platform linux/amd64,linux/arm64 -t sqlserver-mcp:latest .

Bereitstellungsbeispiele

Docker Compose mit Secrets

version: '3.8'

services:
  sqlserver-mcp:
    image: sqlserver-mcp:latest
    environment:
      - SQLSERVER_SERVER=myserver.database.windows.net
      - SQLSERVER_DATABASE=mydatabase
      - SQLSERVER_USERNAME=myuser
    secrets:
      - sqlserver_password
    environment:
      - SQLSERVER_PASSWORD_FILE=/run/secrets/sqlserver_password

secrets:
  sqlserver_password:
    file: ./secrets/sqlserver_password.txt

Kubernetes-Bereitstellung

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sqlserver-mcp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sqlserver-mcp
  template:
    metadata:
      labels:
        app: sqlserver-mcp
    spec:
      containers:
      - name: sqlserver-mcp
        image: sqlserver-mcp:latest
        env:
        - name: SQLSERVER_SERVER
          value: "myserver.database.windows.net"
        - name: SQLSERVER_DATABASE
          value: "mydatabase"
        - name: SQLSERVER_USERNAME
          value: "myuser"
        - name: SQLSERVER_PASSWORD
          valueFrom:
            secretKeyRef:
              name: sqlserver-secret
              key: password
        resources:
          limits:
            memory: "512Mi"
            cpu: "500m"
          requests:
            memory: "256Mi"
            cpu: "250m"
        livenessProbe:
          exec:
            command:
            - python
            - -c
            - "import server; print('OK')"
          initialDelaySeconds: 30
          periodSeconds: 30
        readinessProbe:
          exec:
            command:
            - python
            - -c
            - "import server; print('OK')"
          initialDelaySeconds: 5
          periodSeconds: 10

Cloud-Container-Dienste

AWS ECS Task-Definition

{
  "family": "sqlserver-mcp",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "executionRoleArn": "arn:aws:iam::account:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "sqlserver-mcp",
      "image": "sqlserver-mcp:latest",
      "environment": [
        {"name": "SQLSERVER_SERVER", "value": "myserver.database.windows.net"},
        {"name": "SQLSERVER_DATABASE", "value": "mydatabase"},
        {"name": "SQLSERVER_USERNAME", "value": "myuser"}
      ],
      "secrets": [
        {
          "name": "SQLSERVER_PASSWORD",
          "valueFrom": "arn:aws:secretsmanager:region:account:secret:sqlserver-password"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/sqlserver-mcp",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "ecs"
        }
      }
    }
  ]
}

Google Cloud Run

# Deploy to Cloud Run
gcloud run deploy sqlserver-mcp \
  --image=sqlserver-mcp:latest \
  --set-env-vars="SQLSERVER_SERVER=myserver,SQLSERVER_DATABASE=mydatabase,SQLSERVER_USERNAME=myuser" \
  --set-secrets="SQLSERVER_PASSWORD=sqlserver-password:latest" \
  --platform=managed \
  --region=us-central1 \
  --allow-unauthenticated

Azure Container Instances

# Create container instance
az container create \
  --resource-group myResourceGroup \
  --name sqlserver-mcp \
  --image sqlserver-mcp:latest \
  --environment-variables \
    SQLSERVER_SERVER=myserver.database.windows.net \
    SQLSERVER_DATABASE=mydatabase \
    SQLSERVER_USERNAME=myuser \
  --secure-environment-variables \
    SQLSERVER_PASSWORD=mypassword \
  --cpu 0.5 \
  --memory 1

Fehlerbehebung

Häufige Probleme

Verbindungs-Timeout

Error: Connection timeout

Lösung: Überprüfen Sie die Netzwerkkonnektivität und die Serververfügbarkeit:

# Test network connectivity
docker run --rm sqlserver-mcp:latest ping myserver.database.windows.net

Authentifizierung fehlgeschlagen

Error: Login failed for user 'myuser'

Lösungen:

  1. Überprüfen Sie Benutzername und Passwort

  2. Prüfen Sie, ob der Benutzer existiert und über die erforderlichen Berechtigungen verfügt

  3. Stellen Sie sicher, dass die SQL Server-Authentifizierung aktiviert ist

  4. Verwenden Sie für Azure SQL Database das vollständige Benutzernamenformat: user@servername

Treiber nicht gefunden

Error: Data source name not found and no default driver specified

Lösungen:

  1. Überprüfen Sie, ob der ODBC-Treiber installiert ist (sollte im Container enthalten sein)

  2. Überprüfen Sie den Treibernamen in der Umgebungsvariablen SQLSERVER_DRIVER

  3. Verfügbare Treiber auflisten:

    docker exec -it sqlserver-mcp-server odbcinst -q -d

SSL/TLS-Probleme

Error: SSL Provider: The certificate chain was issued by an authority that is not trusted

Lösungen:

  1. Setzen Sie SQLSERVER_TRUST_CERTIFICATE=yes

  2. Oder deaktivieren Sie die Verschlüsselung: SQLSERVER_ENCRYPT=no

  3. Verwenden Sie für die Produktion ordnungsgemäße SSL-Zertifikate

Container startet nicht

Error: SQLSERVER_SERVER environment variable is required

Lösung: Stellen Sie sicher, dass alle erforderlichen Umgebungsvariablen gesetzt sind:

docker run -e SQLSERVER_SERVER=myserver \
           -e SQLSERVER_USERNAME=myuser \
           -e SQLSERVER_PASSWORD=mypassword \
           sqlserver-mcp:latest

Fehler bei der Integritätsprüfung

Wenn Integritätsprüfungen fehlschlagen:

  1. Überprüfen Sie die Container-Protokolle:

    docker logs sqlserver-mcp-server
  2. Testen Sie die Verbindung manuell:

    docker exec -it sqlserver-mcp-server python -c "
    import server
    import asyncio
    result = asyncio.run(server.test_connection())
    print(result)
    "
  3. Überprüfen Sie die Umgebungsvariablen:

    docker exec -it sqlserver-mcp-server env | grep SQLSERVER

Leistungsoptimierung

Für eine bessere Leistung bei großen Datensätzen:

# Increase connection timeout
-e SQLSERVER_CONNECTION_TIMEOUT=60

Protokollierung

Detaillierte Protokollierung aktivieren:

# Add to docker-compose.yml or docker run
environment:
  - PYTHONUNBUFFERED=1
  - LOG_LEVEL=DEBUG

Protokolle anzeigen:

# Docker Compose
docker-compose logs -f sqlserver-mcp

# Docker run
docker logs -f sqlserver-mcp-server

Sicherheitsüberlegungen

Secrets-Verwaltung

  1. Hardcodieren Sie niemals Anmeldedaten in Dockerfiles oder Compose-Dateien

  2. Verwenden Sie Docker Secrets oder externe Secret-Management-Systeme

  3. Verwenden Sie Umgebungsvariablen für die Konfiguration

  4. Rotieren Sie Anmeldedaten regelmäßig

Netzwerksicherheit

  1. Verwenden Sie private Netzwerke für die Container-Kommunikation

  2. Beschränken Sie Container-Privilegien (Ausführung als Nicht-Root-Benutzer)

  3. Aktivieren Sie TLS für SQL Server-Verbindungen (standardmäßig aktiviert)

  4. Verwenden Sie Firewall-Regeln, um den Zugriff einzuschränken

Containersicherheit

  1. Regelmäßige Updates: Halten Sie Basis-Images und Abhängigkeiten aktuell

  2. Schwachstellen-Scan: Scannen Sie Images auf Sicherheitslücken

  3. Ressourcenbeschränkungen: Legen Sie geeignete CPU- und Speicherlimits fest

  4. Schreibgeschütztes Dateisystem: Binden Sie Anwendungsverzeichnisse nach Möglichkeit schreibgeschützt ein

Entwicklung

Lokale Entwicklung

  1. Klonen Sie das Repository

  2. Erstellen Sie den Container:

    ./build.sh --test
  3. Führen Sie ihn mit Ihrer Konfiguration aus:

    cp .env.example .env
    # Edit .env with your settings
    docker-compose up

Testen

Führen Sie die Test-Suite aus:

# Build and test
./build.sh --test

# Manual testing
docker run --rm -e SQLSERVER_SERVER=test sqlserver-mcp:latest python -c "import server; print('Tests passed')"

Support

Bei Problemen und Fragen:

  1. Überprüfen Sie den Abschnitt zur Fehlerbehebung

  2. Überprüfen Sie die Container-Protokolle auf Fehlermeldungen

  3. Überprüfen Sie Ihre SQL Server-Verbindungseinstellungen

  4. Stellen Sie sicher, dass alle erforderlichen Umgebungsvariablen gesetzt sind

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert - siehe die Datei LICENSE für Details.

A
license - permissive license
Not graded
quality - not tested
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that provides comprehensive access to Microsoft SQL Server databases, enabling Language Models to inspect schemas, execute queries, manage database objects, and perform advanced database operations.
    8
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that enables AI agents to interact with Microsoft SQL Server databases through secure, intelligent database operations. This server provides comprehensive CRUD capabilities, schema introspection, stored procedure execution, transaction management, and bulk opera
    830
    37
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server for Microsoft SQL Server databases, providing secure database operations through a standardized interface.
    3,043
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive MCP server for SQL Server database operations, enabling CRUD operations, schema exploration, and stored procedure execution through natural language.
    8
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for managing Prisma Postgres.

  • The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.

  • MCP server for interacting with the Supabase platform

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SteveZhuhaobo/sql-server-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server