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:latestVerwendung von Docker Compose
Kopieren Sie die Datei
.env.examplenach.env:cp .env.example .envBearbeiten Sie die Datei
.envmit Ihren SQL Server-Anmeldedaten:# Edit .env with your settings nano .envStarten Sie den Container:
docker-compose up -d
Konfiguration
Umgebungsvariablen
Erforderliche Variablen
Variable | Beschreibung | Beispiel |
| SQL Server-Hostname oder IP |
|
Authentifizierungsvariablen (wählen Sie eine Methode)
Methode 1: SQL Server-Authentifizierung
Variable | Beschreibung | Beispiel |
| SQL Server-Benutzername |
|
| SQL Server-Passwort |
|
Methode 2: Windows-Authentifizierung
Variable | Beschreibung | Beispiel |
| Windows-Authentifizierung verwenden |
|
Optionale Verbindungsvariablen
Variable | Beschreibung | Standard | Beispiel |
| Standard-Datenbank |
|
|
| ODBC-Treibername |
|
|
| Verbindung verschlüsseln |
|
|
| Serverzertifikat vertrauen |
|
|
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:latestWindows-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:latestVerfü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 aufget_table_schema- Ruft detaillierte Tabellenschema-Informationen ab
Tabellenoperationen
create_table- Erstellt eine neue Tabelle in SQL Serverinsert_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-cacheManuelle 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.txtKubernetes-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: 10Cloud-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-unauthenticatedAzure 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 1Fehlerbehebung
Häufige Probleme
Verbindungs-Timeout
Error: Connection timeoutLösung: Überprüfen Sie die Netzwerkkonnektivität und die Serververfügbarkeit:
# Test network connectivity
docker run --rm sqlserver-mcp:latest ping myserver.database.windows.netAuthentifizierung fehlgeschlagen
Error: Login failed for user 'myuser'Lösungen:
Überprüfen Sie Benutzername und Passwort
Prüfen Sie, ob der Benutzer existiert und über die erforderlichen Berechtigungen verfügt
Stellen Sie sicher, dass die SQL Server-Authentifizierung aktiviert ist
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 specifiedLösungen:
Überprüfen Sie, ob der ODBC-Treiber installiert ist (sollte im Container enthalten sein)
Überprüfen Sie den Treibernamen in der Umgebungsvariablen
SQLSERVER_DRIVERVerfü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 trustedLösungen:
Setzen Sie
SQLSERVER_TRUST_CERTIFICATE=yesOder deaktivieren Sie die Verschlüsselung:
SQLSERVER_ENCRYPT=noVerwenden Sie für die Produktion ordnungsgemäße SSL-Zertifikate
Container startet nicht
Error: SQLSERVER_SERVER environment variable is requiredLö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:latestFehler bei der Integritätsprüfung
Wenn Integritätsprüfungen fehlschlagen:
Überprüfen Sie die Container-Protokolle:
docker logs sqlserver-mcp-serverTesten Sie die Verbindung manuell:
docker exec -it sqlserver-mcp-server python -c " import server import asyncio result = asyncio.run(server.test_connection()) print(result) "Ü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=60Protokollierung
Detaillierte Protokollierung aktivieren:
# Add to docker-compose.yml or docker run
environment:
- PYTHONUNBUFFERED=1
- LOG_LEVEL=DEBUGProtokolle anzeigen:
# Docker Compose
docker-compose logs -f sqlserver-mcp
# Docker run
docker logs -f sqlserver-mcp-serverSicherheitsüberlegungen
Secrets-Verwaltung
Hardcodieren Sie niemals Anmeldedaten in Dockerfiles oder Compose-Dateien
Verwenden Sie Docker Secrets oder externe Secret-Management-Systeme
Verwenden Sie Umgebungsvariablen für die Konfiguration
Rotieren Sie Anmeldedaten regelmäßig
Netzwerksicherheit
Verwenden Sie private Netzwerke für die Container-Kommunikation
Beschränken Sie Container-Privilegien (Ausführung als Nicht-Root-Benutzer)
Aktivieren Sie TLS für SQL Server-Verbindungen (standardmäßig aktiviert)
Verwenden Sie Firewall-Regeln, um den Zugriff einzuschränken
Containersicherheit
Regelmäßige Updates: Halten Sie Basis-Images und Abhängigkeiten aktuell
Schwachstellen-Scan: Scannen Sie Images auf Sicherheitslücken
Ressourcenbeschränkungen: Legen Sie geeignete CPU- und Speicherlimits fest
Schreibgeschütztes Dateisystem: Binden Sie Anwendungsverzeichnisse nach Möglichkeit schreibgeschützt ein
Entwicklung
Lokale Entwicklung
Klonen Sie das Repository
Erstellen Sie den Container:
./build.sh --testFü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:
Überprüfen Sie den Abschnitt zur Fehlerbehebung
Überprüfen Sie die Container-Protokolle auf Fehlermeldungen
Überprüfen Sie Ihre SQL Server-Verbindungseinstellungen
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.
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityDmaintenanceA 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
- AlicenseNot gradedqualityDmaintenanceA 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 opera83037MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server for Microsoft SQL Server databases, providing secure database operations through a standardized interface.3,043MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for SQL Server database operations, enabling CRUD operations, schema exploration, and stored procedure execution through natural language.8MIT
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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