mcp-sqlserver
mcp-sqlserver
Un potente servidor Model Context Protocol (MCP) para Microsoft SQL Server. Conecta asistentes de IA (Claude, Gemini, Kiro, OpenAI, Copilot, Cursor) directamente a tus bases de datos SQL Server con controles de seguridad de nivel empresarial.
39 herramientas en 7 categorías: descubrimiento de esquemas, ejecución de consultas, DDL, procedimientos almacenados, diagnóstico de rendimiento/DBA, utilidades de desarrollo y administración del servidor.
Cambios: Consulta CHANGELOG.md para ver el historial de versiones o GitHub Releases para obtener notas detalladas de cada versión.
Novedades en v1.3
Soporte multi-servidor — Define servidores de dev/staging/production en una sola configuración y cambia con el parámetro
serverHerramienta
list_servers— Consulta todas las conexiones configuradas de un vistazoSeguridad por servidor — Cada servidor tiene su propio modo de seguridad, límites de filas y bases de datos bloqueadas
Compatibilidad retroactiva — Las configuraciones existentes de un solo servidor funcionan sin ningún cambio
Related MCP server: SQL Server MCP
Novedades en v1.2
16 herramientas nuevas — Diagnóstico DBA, generación de código, diagramas ER, diff de esquemas, muestreo de datos y más
Protección contra inyección SQL — Todas las consultas usan entradas parametrizadas e identificadores escapados
Formato de fecha ISO — Las fechas se muestran como
2025-01-27en lugar de cadenasDatede JavaScript en brutoTransporte HTTP streamable — Aloja el servidor MCP de forma remota con
--http <puerto>Health check — Verifica el estado de la conexión y la capacidad de respuesta del servidor
Características
Administración del servidor (1 herramienta)
Herramienta | Descripción |
| Lista todas las conexiones de servidor configuradas con host, base de datos, autenticación y modo de seguridad |
Multi-servidor: Todas las herramientas aceptan un parámetro
serveropcional para apuntar a un servidor con nombre concreto. Omítelo para usar el servidor predeterminado.
Descubrimiento de esquemas (9 herramientas)
Herramienta | Descripción |
| Lista las bases de datos accesibles en la instancia |
| Lista los esquemas de una base de datos |
| Lista las tablas con recuento de filas y tamaños |
| Lista las vistas de una base de datos |
| Información detallada de columnas: tipos, valores predeterminados, nulabilidad, identidad, calculadas |
| Relaciones de claves externas de una tabla |
| Información de índices con columnas incluidas |
| Restricciones de clave principal (PK), únicas, check y predeterminadas |
| Definiciones de triggers en una tabla |
Ejecución de consultas (3 herramientas)
Herramienta | Descripción |
| Ejecuta consultas SELECT con límites de filas automáticos |
| Ejecuta INSERT/UPDATE/DELETE/MERGE (requiere modo |
| Exporta los resultados de una consulta en formato CSV o JSON |
Operaciones DDL (1 herramienta)
Herramienta | Descripción |
| Ejecuta sentencias CREATE/ALTER/DROP (requiere modo |
Procedimientos almacenados (3 herramientas)
Herramienta | Descripción |
| Lista los procedimientos almacenados de una base de datos |
| Muestra los parámetros y el código fuente de un procedimiento |
| Ejecuta con parámetros con nombre (requiere modo |
Rendimiento y DBA (16 herramientas)
Herramienta | Descripción |
| Plan de ejecución estimado para cualquier consulta |
| Consultas actualmente en ejecución desde |
| Recuento de filas, tamaño total/usado/sin usar y % de fragmentación |
| Búsquedas de índice, recorridos, lookups y estadísticas de actualización |
| Sugerencias de índices faltantes con DDL |
| Versión del servidor, edición, número de CPU, memoria y tiempo de actividad |
| Tamaño de la base de datos, distribución de archivos, estado, modelo de recuperación y número de objetos |
| Principales estadísticas de espera del servidor: identifica cuellos de botella de CPU, E/S y bloqueos |
| Eventos de interbloqueo recientes de la sesión de Eventos Extendidos |
| Cadenas de bloqueo actuales: qué sesiones están bloqueando a otras |
| Transacciones abiertas de larga duración que pueden estar manteniendo bloqueos |
| Uso detallado del espacio en disco por tabla (datos, índices, sin usar) |
| Historial de copias de seguridad reciente: tipo, tamaño, duración, ruta del dispositivo |
| Consultas de mayor consumo de recursos desde Query Store (SQL Server 2016+): ordenables por PU, duración, lecturas, escrituras o ejecuciones |
| Reconstruye o reorganiza un índice fragmentado (requiere modo |
| Comprobación de estado de la conexión con latencia, versión y sesiones activas |
Utilidades de desarrollo (6 herramientas)
compare_schemas — Diff de esquemas
Compara dos bases de datos lado a lado. Muestra tablas, columnas y diferencias de tipo: perfecto para comparar dev vs producción.
compare_schemas(source_database: "DevDB", target_database: "ProdDB")La salida incluye: tablas solo en el origen/destino, columnas solo en el origen/destino y diferencias de tipo/nulabilidad en las columnas.
generate_code — Generación de código
Genera código tipado a partir del esquema de cualquier tabla:
TypeScript — interfaces con tipos adecuados (
number,string,Date,Buffer | null)C# — clases con tipos de valor que admiten nulos (
int?,DateTime?,decimal?)SQL — scripts
CREATE TABLEcon definiciones de columna completas
generate_code(table: "Products", language: "typescript")
→ export interface Products {
productId: number;
productName: string;
unitPrice: number | null;
...
}generate_insert_scripts — Exportación de datos como INSERT
Genera sentencias INSERT a partir de los datos existentes de una tabla, útil para guiones de migración, datos semilla o para hacer copias de tablas de referencia pequeñas.
generate_insert_scripts(table: "Categories", top: 10)
→ INSERT INTO [dbo].[Categories] ([CategoryName], [Description]) VALUES (N'Beverages', N'Soft drinks...');generate_er_diagram — Diagrama ER
Genera un diagrama ER en Mermaid a partir de las relaciones de claves externas. Pega la salida en cualquier renderizador compatible con Mermaid (GitHub, Notion, VS Code, etc.).
generate_er_diagram(database: "Northwind")
→ erDiagram
Products }o--|| Categories : "CategoryID"
Products }o--|| Suppliers : "SupplierID"
Orders }o--|| Customers : "CustomerID"
...generate_test_data — Generación de datos de prueba
Genera sentencias INSERT realistas con datos ficticios basados en los nombres y tipos de las columnas. Mejor heurística para patrones comunes (email, teléfono, nombre, ciudad, precio, etc.).
generate_test_data(table: "Customers", count: 5)
→ INSERT INTO [dbo].[Customers] (...) VALUES (N'Alice', N'user1@example.com', N'New York', ...);sample_table — Muestreo aleatorio
Obtén una muestra aleatoria de filas de cualquier tabla con NEWID() — útil para que los asistentes de IA entiendan los patrones de datos sin recorrer las tablas enteras.
sample_table(table: "Orders", count: 5)Seguridad
Tres modos de seguridad
Modo | SELECT | INSERT/UPDATE/DELETE | DDL | Procedimientos almacenados |
| Sí | No | No | Solo lectura (listar/describir) |
| Sí | Sí | No | Completo (ejecutar) |
| Sí | Sí | Sí | Completo (ejecutar) |
Protección contra inyección SQL
Todos los valores proporcionados por el usuario se pasan como entradas de consulta parametrizadas (@param). Los identificadores de objetos (base de datos, esquema, tabla) se escapan con la notación de corchetes de SQL Server ([name] con ] → ]]).
Funciones de seguridad adicionales
Listas de permitir/bloquar para bases de datos y esquemas
Límites automáticos de filas (si se configura
maxRowCount)Detección de palabras clave bloqueadas (xp_cmdshell, SHUTDOWN, DROP DATABASE, etc.)
Enmascaramiento de datos a nivel de columna para proteger PII
Validación del tipo de consulta según el modo de seguridad
Enmascaramiento de datos
Enmascara columnas sensibles en los resultados de las consultas:
security:
maskColumns:
- pattern: "*.password"
mask: "***"
- pattern: "*.ssn"
mask: "XXX-XX-XXXX"
- pattern: "dbo.users.email"
mask: "***@***.***"Formato del patrón: [schema.]table.column (usa * como comodín)
Autenticación
Método | Config | Requisitos |
SQL Server |
|
|
Windows (NTLM) |
|
|
Windows (SSPI) |
| No se necesitan credenciales; requiere |
Azure AD |
|
|
Autenticación de Windows
NTLM — Funciona de forma inmediata, sin paquetes adicionales:
connection:
host: YOUR_SERVER\SQLEXPRESS
authentication:
type: windows
user: YourUsername
password: YourPassword
domain: YOUR_DOMAIN
trustServerCertificate: trueSSPI / Seguridad integrada — Usa la sesión de inicio de sesión actual de Windows:
npm install msnodesqlv8connection:
host: YOUR_SERVER\SQLEXPRESS
authentication:
type: windows
trustServerCertificate: trueNota: Al usar
npx, las dependencias opcionales comomsnodesqlv8pueden no instalarse automáticamente. Para SSPI, considera instalar de forma global (npm install -g @tugberkgunver/mcp-sqlserver msnodesqlv8) o usa el modo NTLM.
Transporte
stdio (predeterminado)
Transporte estándar de entrada/salida, utilado por clientes MCP como Claude Desktop, VS Code, Cursor, etc.
Streamable HTTP
Para alojamiento remoto o integraciones web:
mcp-sqlserver --config mssql-mcp.yaml --http 3000Esto inicia:
Endpoint MCP:
http://localhost:3000/mcpComprobación de estado:
http://localhost:3000/health→{"status":"ok","mode":"readonly"}
Incluye soporte CORS para clientes basados en navegador.
Inicio rápido
Instalación
npm install -g @tugberkgunver/mcp-sqlserverConfiguración
Crea un mssql-mcp.yaml en tu directorio de trabajo:
connection:
host: localhost
port: 1433
database: MyDatabase
authentication:
type: sql
user: sa
password: YourPassword123
trustServerCertificate: true
security:
mode: readonly
maxRowCount: 1000
blockedDatabases:
- master
- msdb
- tempdb
- modelVe config.example.yaml para conocer todas las opciones.
Configuración multi-servidor
Define varios servidores con nombre para administrar dev/la/desarrollo de dev/staging/prod desde una sola configuración:
defaultServer: dev
connections:
dev:
host: dev-server.example.com
database: MyDatabase
authentication:
type: sql
user: sa
password: DevPass123
trustServerCertificate: true
security:
mode: admin
maxRowCount: 5000
prod:
host: prod-server.example.com
database: MyDatabase
authentication:
type: sql
user: readonly_user
password: ProdReadOnly
security:
mode: readonly
blockedDatabases: [master, msdb, tempdb, model]
# Global security defaults (applied to all servers unless overridden)
security:
maxRowCount: 1000
blockedKeywords: [xp_cmdshell, SHUTDOWN, DROP DATABASE]Después usa el parámetro server en cualquier llamada de herramienta:
list_tables(server: "prod", database: "MyDatabase")
health_check(server: "dev")
compare_schemas(source_database: "DevDB", target_database: "StagingDB", server: "dev")Configuración del cliente MCP
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}Con un archivo de configuración:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver", "--config", "/path/to/mssql-mcp.yaml"]
}
}
}Añade a .vscode/mcp.json:
{
"servers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}Añade a ~/.cursor/mcp.json:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}Añade a .kiro/settings/mcp.json:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}Añade a ~/.gemini/settings.json:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}Añade a ~/.windsurf/mcp.json:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}En Windows, usa cmd como envoltorio de comandos:
{
"mcpServers": {
"mssql": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@tugberkgunver/mcp-sqlserver", "--config", "path/to/config.yaml"]
}
}
}Variables de entorno
Variable | Descripción |
| Nombre del host de SQL Server |
| Puerto de SQL Server (predeterminado: 1433) |
| Base de datos predeterminada |
| Nombre de usuario de autenticación SQL |
| Contraseña de autenticación SQL |
| Ruta al archivo de configuración YAML |
Las variables de entorno anulan los valores del archivo de configuración.
Desarrollo
git clone https://github.com/gunvertugberk/mcp-sqlserver.git
cd mcp-sqlserver
npm install
npm run build
npm start -- --config ./mssql-mcp.yamlLicencia
MIT
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
- AlicenseAqualityDmaintenanceEnables AI agents to securely connect to and query Microsoft SQL Server databases with read-only access, schema discovery, and relationship mapping. Features advanced security protections, health monitoring, and bulk operations for production environments.975MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with Microsoft SQL Server databases through query execution, schema discovery, CRUD operations, stored procedures, and data export with built-in safety controls.18Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to securely interact with Microsoft SQL Server databases to query data, inspect schemas, and retrieve metadata with read-only operations by default and optional write capabilities.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Microsoft SQL Server databases through a standardized interface. Supports executing SQL queries, browsing database schemas, and viewing table data with flexible authentication options for both local and Azure SQL databases.5MIT
Related MCP Connectors
Explore, query, and inspect SQLite databases with ease. List tables, preview results, and view det…
Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
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/Debanjan29/readonly-mssql-mcp-db'
If you have feedback or need assistance with the MCP directory API, please join our Discord server