MCP Microsoft SQL Server

Un servidor MCP para integrarse con bases de datos de Microsoft SQL Server.

Documentación

MCP Microsoft SQL Server

Un servidor de Model Context Protocol (MCP) configurable para la integración de Microsoft SQL Server con Claude Code y otros clientes MCP. Permite a los asistentes de IA interactuar de forma segura con bases de datos SQL Server mediante configuraciones basadas en proyectos con capacidades completas de lectura y escritura.

🌟 Características

🔧 Configuración basada en proyectos

  • Múltiples conexiones de base de datos - Cambia entre diferentes proyectos y bases de datos
  • Acceso específico por esquema - Restringe el acceso a esquemas específicos por proyecto
  • Permisos configurables - Control fino sobre operaciones de lectura/escritura/eliminación
  • Configuración por entorno - Diferentes configuraciones para desarrollo, staging y producción

🛡️ Seguridad y protección

  • Gestión de transacciones - Reversión automática en errores para operaciones de escritura
  • Validación de consultas - Previene la inyección SQL y valida todas las operaciones
  • Aplicación de cláusula WHERE - Cláusulas WHERE obligatorias para operaciones UPDATE/DELETE
  • Restricciones de límite de filas - Límites configurables para prevenir operaciones masivas accidentales
  • Registro de auditoría - Rastrea todas las operaciones de base de datos para responsabilidad

🔍 Operaciones de base de datos

  • Operaciones de lectura: Consultas SELECT con paginación y filtrado
  • Operaciones de escritura: INSERT, UPDATE, DELETE con seguridad de transacciones
  • Exploración de esquemas: Navega por tablas, columnas, relaciones e índices
  • Gestión de tablas: Obtén metadatos, estadísticas y datos de muestra
  • Gestión de configuración: Cambia dinámicamente entre configuraciones de proyecto

🚀 Integración con IA

  • Integración con Claude Desktop - Configuración sin problemas con la aplicación Claude Desktop
  • Cumplimiento del protocolo MCP - Funciona con cualquier cliente compatible con MCP
  • Interfaz de lenguaje natural - Interactúa con bases de datos usando inglés sencillo
  • Manejo de errores - Mensajes de error claros y accionables para IA y humanos

📋 Requisitos previos

  • .NET 9.0 o posterior
  • Microsoft SQL Server (cualquier versión compatible)
  • Claude Desktop (para integración con Claude)
  • Permisos de base de datos apropiados para las operaciones que deseas realizar

🚀 Inicio rápido

1. Instalación

# Clone the repository
git clone https://github.com/yourusername/mcp-ms-sql-server.git
cd mcp-ms-sql-server

# Build the project
dotnet build -c Release

2. Crear configuración de proyecto

Crea un archivo de configuración para tu proyecto en el directorio Configurations/:

// Configurations/my-project.json
{
  "name": "My E-Commerce Project",
  "connectionString": "Server=localhost;Database=ECommerceDB;Integrated Security=true;",
  "allowedSchema": "dbo",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": false
  },
  "security": {
    "requireWhereClause": true,
    "maxRowsPerQuery": 1000,
    "auditOperations": true
  }
}

3. Configurar Claude Desktop

Agrega a tu configuración de Claude Desktop:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "sql-server": {
      "type": "stdio",
      "command": "C:\\Git\\mcp-ms-sql-server\\McpMsSqlServer\\bin\\Release\\net9.0\\McpMsSqlServer.exe",
      "env": {
        "MCP_CONFIG_NAME": "my-project"
      }
    }
  }
}

Nota: Primero compila el proyecto con dotnet build -c Release para crear el ejecutable.

4. Comenzar a usar

En Claude Desktop, ahora puedes preguntar:

  • "Muéstrame todas las tablas en la base de datos"
  • "Inserta un nuevo cliente con nombre 'John Doe' y correo 'john@example.com'"
  • "¿Cuáles son los 10 productos más vendidos?"
  • "Actualiza el precio del producto con ID 123 a $29.99"

📖 Guía de configuración

Estructura de configuración del proyecto

{
  "name": "Project Display Name",
  "connectionString": "Your SQL Server connection string",
  "allowedSchema": "schema_name",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": false,
    "allowSchemaChanges": false
  },
  "security": {
    "requireWhereClause": true,
    "maxRowsPerQuery": 1000,
    "maxRowsPerUpdate": 100,
    "maxRowsPerDelete": 10,
    "auditOperations": true
  },
  "querySettings": {
    "timeoutSeconds": 30,
    "enableQueryPlan": false,
    "allowJoins": true,
    "allowSubqueries": true
  },
  "restrictedTables": ["sensitive_table", "audit_log"],
  "allowedOperations": ["SELECT", "INSERT", "UPDATE", "DELETE"]
}

Ejemplos de configuración

Entorno de desarrollo
{
  "name": "Development Database",
  "connectionString": "Server=dev-server;Database=DevDB;Integrated Security=true;",
  "allowedSchema": "dbo",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": true,
    "allowSchemaChanges": true
  },
  "security": {
    "requireWhereClause": false,
    "maxRowsPerQuery": 5000,
    "auditOperations": false
  }
}
Entorno de producción
{
  "name": "Production Database",
  "connectionString": "Server=prod-server;Database=ProdDB;User Id=app_user;Password=secure_password;",
  "allowedSchema": "app",
  "permissions": {
    "allowRead": true,
    "allowWrite": true,
    "allowDelete": false,
    "allowSchemaChanges": false
  },
  "security": {
    "requireWhereClause": true,
    "maxRowsPerQuery": 100,
    "maxRowsPerUpdate": 10,
    "auditOperations": true
  },
  "restrictedTables": ["user_passwords", "payment_info"]
}

🛠️ Herramientas disponibles

Gestión de configuración (4 herramientas)

  • ListConfigurations - Muestra todas las configuraciones de proyecto disponibles
  • SwitchConfiguration - Cambia a una configuración de proyecto diferente
  • GetCurrentConfiguration - Ver los detalles de la configuración actual
  • TestConnection - Prueba la conectividad de la base de datos

Operaciones básicas de base de datos (6 herramientas)

  • ExecuteQuery - Ejecuta consultas SELECT dentro del esquema permitido
  • GetSchemaInfo - Explora la estructura y los objetos de la base de datos
  • GetTableInfo - Obtén metadatos de tabla y datos de muestra
  • InsertRecords - Inserta nuevos registros con soporte de transacciones
  • UpdateRecords - Actualiza registros existentes (requiere cláusula WHERE)
  • DeleteRecords - Elimina registros (requiere cláusula WHERE)

Funciones avanzadas (6 herramientas)

  • BuildQuery - Genera consultas SQL a partir de lenguaje natural
  • AnalyzeQueryPerformance - Analiza los planes de ejecución de consultas
  • GetDatabasePerformanceStats - Métricas de rendimiento de la base de datos
  • DiscoverData - Busca tablas/columnas por patrones
  • AnalyzeTableRelationships - Encuentra relaciones entre tablas
  • ProfileDataQuality - Analiza la calidad de los datos y estadísticas

🔒 Consideraciones de seguridad

Mejores prácticas

  • Usa usuarios de base de datos dedicados con los permisos mínimos requeridos
  • Habilita el registro de auditoría para entornos de producción
  • Establece límites de filas apropiados para prevenir operaciones masivas accidentales
  • Restringe tablas sensibles usando la configuración restrictedTables
  • Usa requisitos de cláusula WHERE para operaciones UPDATE/DELETE
  • Revisiones de seguridad periódicas de configuraciones y permisos

Seguridad de la cadena de conexión

# Use environment variables for sensitive data
export DB_PASSWORD="your_secure_password"
{
  "connectionString": "Server=myserver;Database=mydb;User Id=myuser;Password=${DB_PASSWORD};"
}

🤝 Contribuciones

¡Damos la bienvenida a las contribuciones! Consulta nuestra Guía de contribución para más detalles.

Configuración de desarrollo

# Clone the repo
git clone https://github.com/yourusername/mcp-ms-sql-server.git
cd mcp-ms-sql-server

# Install dependencies
dotnet restore

# Run tests
dotnet test

# Build and test
dotnet build -c Release

📚 Documentación

🐛 Solución de problemas

Problemas comunes

Conexión fallida

# Test your connection string
dotnet run -- --test-connection --config your-project

Permiso denegado

  • Verifica los permisos de tu usuario de base de datos
  • Verifica la configuración allowedSchema
  • Asegúrate de que el usuario tenga acceso al esquema especificado

Configuración no encontrada

  • Verifica que el archivo de configuración exista en Configurations/
  • Revisa la variable de entorno MCP_CONFIG_NAME
  • Asegúrate de que la sintaxis JSON sea válida

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENCIA para más detalles.

🌟 Agradecimientos

📞 Soporte


Hecho con ❤️ para la comunidad de desarrollo de MCP e IA