SQL Server MCP Server
Servidor MCP de SQL Server
Un servidor de Protocolo de Contexto de Modelo (MCP) en contenedor para operaciones de SQL Server. Este contenedor de Docker proporciona un servidor MCP completo que puede conectarse a SQL Server y ejecutar diversas operaciones de base de datos a través del protocolo MCP.
Características
Integración completa con SQL Server: Ejecute consultas, gestione tablas y realice operaciones de base de datos
Configuración mediante variables de entorno: Configuración sencilla a través de variables de entorno
Soporte de autenticación: Tanto autenticación de SQL Server como de Windows
Gestión de conexiones: Lógica integrada de manejo de conexiones y reintentos
Comprobaciones de estado: Monitoreo y validación del estado del contenedor
Soporte multiplataforma: Compatible con arquitecturas AMD64 y ARM64
Soporte de controlador ODBC: Incluye Microsoft ODBC Driver 17 para SQL Server
Related MCP server: mcp-sqlserver
Inicio rápido
Usando 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:latestUsando Docker Compose
Copie el archivo
.env.examplea.env:cp .env.example .envEdite el archivo
.envcon sus credenciales de SQL Server:# Edit .env with your settings nano .envInicie el contenedor:
docker-compose up -d
Configuración
Variables de entorno
Variables requeridas
Variable | Descripción | Ejemplo |
| Nombre de host o IP de SQL Server |
|
Variables de autenticación (elija un método)
Método 1: Autenticación de SQL Server
Variable | Descripción | Ejemplo |
| Nombre de usuario de SQL Server |
|
| Contraseña de SQL Server |
|
Método 2: Autenticación de Windows
Variable | Descripción | Ejemplo |
| Usar autenticación de Windows |
|
Variables de conexión opcionales
Variable | Descripción | Predeterminado | Ejemplo |
| Base de datos predeterminada |
|
|
| Nombre del controlador ODBC |
|
|
| Cifrar conexión |
|
|
| Confiar en el certificado del servidor |
|
|
Métodos de autenticación
Autenticación de SQL Server
El método de autenticación más común utilizando nombre de usuario y contraseña:
docker run -e SQLSERVER_SERVER=myserver \
-e SQLSERVER_DATABASE=mydatabase \
-e SQLSERVER_USERNAME=myuser \
-e SQLSERVER_PASSWORD=mypassword \
sqlserver-mcp:latestAutenticación de Windows
Para entornos unidos a un dominio (requiere configuración adicional del contenedor):
docker run -e SQLSERVER_SERVER=myserver \
-e SQLSERVER_DATABASE=mydatabase \
-e SQLSERVER_USE_WINDOWS_AUTH=true \
sqlserver-mcp:latestHerramientas MCP disponibles
El servidor proporciona las siguientes herramientas MCP:
Gestión de conexiones
test_connection- Probar la conexión a SQL Server y devolver información básica de la base de datos
Descubrimiento de bases de datos
list_tables- Listar todas las tablas en la base de datos de SQL Serverget_table_schema- Obtener información detallada del esquema de la tabla
Operaciones de tabla
create_table- Crear una nueva tabla en SQL Serverinsert_data- Insertar datos en una tabla de SQL Server
Ejecución de consultas
execute_query- Ejecutar consultas SQL con conjuntos de resultados completos
Construcción del contenedor
Script de construcción
Utilice el script de construcción proporcionado para una construcción sencilla:
# 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-cacheConstrucción manual
# 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 .Ejemplos de despliegue
Docker Compose con secretos
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.txtDespliegue en Kubernetes
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: 10Servicios de contenedores en la nube
Definición de tarea de AWS ECS
{
"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 1Solución de problemas
Problemas comunes
Tiempo de espera de conexión agotado
Error: Connection timeoutSolución: Compruebe la conectividad de red y la disponibilidad del servidor:
# Test network connectivity
docker run --rm sqlserver-mcp:latest ping myserver.database.windows.netError de autenticación
Error: Login failed for user 'myuser'Soluciones:
Verifique el nombre de usuario y la contraseña
Compruebe si el usuario existe y tiene los permisos necesarios
Asegúrese de que la autenticación de SQL Server esté habilitada
Para Azure SQL Database, utilice el formato de nombre de usuario completo:
user@servername
Controlador no encontrado
Error: Data source name not found and no default driver specifiedSoluciones:
Verifique que el controlador ODBC esté instalado (debería estar incluido en el contenedor)
Compruebe el nombre del controlador en la variable de entorno
SQLSERVER_DRIVERListe los controladores disponibles:
docker exec -it sqlserver-mcp-server odbcinst -q -d
Problemas de SSL/TLS
Error: SSL Provider: The certificate chain was issued by an authority that is not trustedSoluciones:
Establezca
SQLSERVER_TRUST_CERTIFICATE=yesO deshabilite el cifrado:
SQLSERVER_ENCRYPT=noPara producción, utilice certificados SSL adecuados
El contenedor no inicia
Error: SQLSERVER_SERVER environment variable is requiredSolución: Asegúrese de que todas las variables de entorno requeridas estén configuradas:
docker run -e SQLSERVER_SERVER=myserver \
-e SQLSERVER_USERNAME=myuser \
-e SQLSERVER_PASSWORD=mypassword \
sqlserver-mcp:latestFallos en las comprobaciones de estado
Si las comprobaciones de estado fallan:
Compruebe los registros del contenedor:
docker logs sqlserver-mcp-serverPruebe la conexión manualmente:
docker exec -it sqlserver-mcp-server python -c " import server import asyncio result = asyncio.run(server.test_connection()) print(result) "Verifique las variables de entorno:
docker exec -it sqlserver-mcp-server env | grep SQLSERVER
Ajuste de rendimiento
Para un mejor rendimiento con grandes conjuntos de datos:
# Increase connection timeout
-e SQLSERVER_CONNECTION_TIMEOUT=60Registro (Logging)
Habilite el registro detallado:
# Add to docker-compose.yml or docker run
environment:
- PYTHONUNBUFFERED=1
- LOG_LEVEL=DEBUGVer registros:
# Docker Compose
docker-compose logs -f sqlserver-mcp
# Docker run
docker logs -f sqlserver-mcp-serverConsideraciones de seguridad
Gestión de secretos
Nunca codifique credenciales en Dockerfiles o archivos compose
Utilice secretos de Docker o sistemas externos de gestión de secretos
Utilice variables de entorno para la configuración
Rote las credenciales regularmente
Seguridad de red
Utilice redes privadas para la comunicación entre contenedores
Limite los privilegios del contenedor (ejecutar como usuario no root)
Habilite TLS para conexiones a SQL Server (habilitado por defecto)
Utilice reglas de firewall para restringir el acceso
Seguridad del contenedor
Actualizaciones regulares: Mantenga las imágenes base y las dependencias actualizadas
Escaneo de vulnerabilidades: Escanee las imágenes en busca de vulnerabilidades de seguridad
Límites de recursos: Establezca límites adecuados de CPU y memoria
Sistema de archivos de solo lectura: Monte los directorios de la aplicación como solo lectura cuando sea posible
Desarrollo
Desarrollo local
Clone el repositorio
Construya el contenedor:
./build.sh --testEjecute con su configuración:
cp .env.example .env # Edit .env with your settings docker-compose up
Pruebas
Ejecute el conjunto de pruebas:
# 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')"Soporte
Para problemas y preguntas:
Consulte la sección de solución de problemas
Revise los registros del contenedor en busca de mensajes de error
Verifique la configuración de su conexión a SQL Server
Asegúrese de que todas las variables de entorno requeridas estén configuradas
Licencia
Este proyecto está bajo la Licencia MIT - consulte el archivo LICENSE para obtener más detalles.
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