MCP SQL Server

by JubinSaniei

Integrations

  • Supports configuration through environment variables loaded from .env files, allowing customization of connection settings, security parameters, timeouts, and caching behavior.

  • Enables deployment of the MCP server using Docker containers, with configuration via environment variables and docker-compose for simplified setup and management.

  • Provides access to the repository for cloning and installation, with documentation and setup instructions accessible through GitHub.

Servidor MSSQL MCP

Este es un servidor de Protocolo de Contexto de Modelo (MCP) para interacciones con SQL Server. Permite que los Modelos de Lenguaje Grandes (LLM) ejecuten consultas SQL, ejecuten procedimientos almacenados y exploren esquemas de bases de datos con mayor seguridad y robustez.

Características

  • Ejecución segura de consultas SQL : Ejecute consultas SELECT en bases de datos de SQL Server. Todas las consultas se analizan y validan para garantizar que solo se ejecuten sentencias SELECT .
  • Soporte de procedimientos almacenados : ejecute procedimientos almacenados con entradas parametrizadas.
  • Exploración de esquemas : vea las definiciones de tablas y columnas de la base de datos, con resultados almacenados en caché para mejorar el rendimiento.
  • Gestión de conexión robusta : utiliza un grupo de conexiones global para la reutilización eficiente de las conexiones de base de datos, con lógica de reintento y tiempos de espera configurables.
  • Seguridad mejorada :
    • Análisis de consultas SQL y lista blanca solo SELECT .
    • Variable de entorno SQL_ALLOWED_DATABASES para incluir en la lista blanca las bases de datos accesibles.
    • Protección contra patrones comunes de inyección SQL para el cambio de contexto de base de datos.
    • Bloquea la ejecución de procedimientos o comandos del sistema potencialmente dañinos en consultas directas.
  • Almacenamiento en caché configurable : la información del esquema de la base de datos se almacena en caché con un tiempo de vida (TTL) configurable.
  • Registro estructurado : registrador pino integrado para registros de aplicaciones detallados y estructurados.
  • Docker Ready : implementación sencilla con Docker.

Inicio rápido

Uso de Docker (recomendado)

# Clone the repository (if you haven't already) git clone https://github.com/JubinSaniei/mcp-mssql # cd mcp-mssql # Copy example configuration and edit with your settings cp .env.example .env nano .env # Edit with your SQL Server details and other configurations # Start the Docker container docker-compose up -d

Para obtener instrucciones completas de configuración de Docker, consulte el archivo README de Docker .

Configuración

El servidor se configura mediante variables de entorno. Cree un archivo .env en el directorio raíz (puede copiar .env.example ) para configurar estos valores.

Para obtener una guía detallada sobre todas las opciones de configuración y cómo configurarlas, consulte CONFIG .

CategoríaVariableDescripciónPredeterminado (desde config.js)
ConexiónSQL_SERVERNombre de host o IP de SQL Serverlocalhost
SQL_PORTPuerto de SQL Server1433
SQL_USERNombre de usuario de SQL Serversa
SQL_PASSWORDContraseña de SQL ServerRequerido
SQL_DATABASENombre de la base de datos predeterminada a la que conectarsemaster
SeguridadSQL_ENCRYPTHabilitar el cifrado (establecer como false para deshabilitarlo)true
SQL_TRUST_SERVER_CERTCertificado de servidor de confianza (establezca como false para deshabilitarlo)true
SQL_ALLOWED_DATABASESLista separada por comas de bases de datos a las que el servidor puede acceder. Si está vacía, el acceso es menos restringido (depende de los permisos de usuario de la base de datos).[] (lista vacía)
Tiempos de espera y reintentosSQL_CONNECTION_TIMEOUTTiempo de espera de conexión (ms)30000
SQL_REQUEST_TIMEOUTTiempo de espera de solicitud para consultas (ms)30000
SQL_MAX_RETRIESNúmero máximo de reintentos para los intentos de conexión iniciales3
SQL_INITIAL_RETRY_DELAYRetraso inicial (ms) antes de volver a intentar una conexión fallida1000
SQL_MAX_RETRY_DELAYRetardo máximo (ms) para reintentos de conexión (usa retroceso exponencial)30000
Pool de conexionesSQL_POOL_MAXMáximo de conexiones en el pool10
SQL_POOL_MINConexiones mínimas en el pool0
SQL_POOL_IDLE_TIMEOUTTiempo de espera inactivo para conexiones en el grupo (ms)30000
Almacenamiento en cachéSQL_SCHEMA_CACHE_TTLTiempo de vida para la caché de esquema (ms)300000 (5 minutos)
Servidor MCPMCP_SERVER_NAMENombre del servidor MCPMSSQL Server
MCP_SERVER_VERSIONVersión del servidor MCP1.0.0
Explotación florestalLOG_LEVELNivel de registro del registrador Pino (p. ej., fatal , error , warn , info , debug , trace , silent ). Se lee directamente desde process.env en server.ts , no forma parte de config.js .info

Usando con Claude

Para agregar este servidor MCP a Claude CLI:

# Add the MCP server using the config file claude mcp add-json mssql-mcp "$(cat claude-mcp-config.json)" # To add it globally claude mcp add-json -s user mssql-mcp "$(cat claude-mcp-config.json)" # Start a conversation with Claude using this MCP claude mcp mssql-mcp

En la conversación de Claude, puedes:

  1. Ejecutar consultas SELECT :
    <mcp:execute_query database="YourDatabaseName"> SELECT TOP 10 * FROM YourTable </mcp:execute_query>
    (El atributo database es opcional si se opera en SQL_DATABASE predeterminado o si SQL_ALLOWED_DATABASES implica una única elección).
  2. Ejecutar procedimientos almacenados:
    <mcp:execute_StoredProcedure database="YourDatabaseName"> { "procedure": "YourSchema.YourProcedureName", "parameters": [ {"name": "Param1", "type": "NVarChar", "value": "SomeValue"}, {"name": "Param2", "type": "Int", "value": 123} ] } </mcp:execute_StoredProcedure>
  3. Explorar el esquema de la base de datos:
    <mcp:schema> YourDatabaseName </mcp:schema>
    (Si se omite YourDatabaseName , el valor predeterminado es SQL_DATABASE especificado en las variables de entorno).

Manejo de la conexión

Este servidor MCP utiliza un grupo de conexiones global y robusto (agrupación integrada de la biblioteca mssql ) administrado por DatabaseService .

  • Eficiencia : las conexiones se reutilizan, lo que reduce la sobrecarga de establecer una nueva conexión para cada solicitud.
  • Resiliencia : implementa lógica de reintento con retroceso exponencial para el establecimiento de la conexión inicial.
  • Sin estado de sesión entre llamadas : A diferencia de un modelo de sesión por usuario, este servidor no garantiza que las llamadas MCP subsiguientes (p. ej., dos llamadas execute_query independientes) desde el LLM utilicen exactamente la misma conexión de base de datos subyacente. Por lo tanto, el estado específico de la sesión, como las tablas temporales o las variables de sesión creadas en una llamada, podría no estar disponible en otra. Cada llamada debe considerarse atómica desde la perspectiva del estado de la sesión. El comando USE [database] se ejecuta en cada operación si la base de datos de destino difiere de la predeterminada del pool, lo que garantiza el contexto para esa operación específica.

Desarrollo

Configuración de desarrollo local

# Install dependencies npm install # Create and configure your .env file cp .env.example .env nano .env # Run the server directly (requires environment variables to be set) npm start # Run with TypeScript compiler watching for changes npm run dev

Notas de seguridad

  • Solo SELECT : El servidor exige estrictamente que solo se puedan ejecutar consultas SELECT mediante la herramienta execute_query , mediante análisis SQL. Las instrucciones DML (INSERT, UPDATE, DELETE) y DDL están bloqueadas.
  • Ejecución de procedimientos almacenados : si bien los procedimientos almacenados pueden realizar cualquier acción que sus permisos permitan, su ejecución se administra por separado.
  • Lista blanca de bases de datos : Utilice la variable de entorno SQL_ALLOWED_DATABASES para restringir las bases de datos con las que el servidor puede interactuar. Para obtener una explicación detallada de esta función y cómo interactúa con SQL_DATABASE , consulte DATABASE_WHITELISTING.md .
  • Bloqueo de procedimientos del sistema : Se bloquea la ejecución directa de procedimientos comunes del sistema (p. ej., sp_ , xp_ ) y comandos como RECONFIGURE o WAITFOR DELAY mediante execute_query . Se deben utilizar procedimientos almacenados para interacciones legítimas con el sistema.
  • Validación de entrada : Los nombres de bases de datos para el cambio de contexto y los nombres de procedimientos almacenados se someten a validación de formato. El análisis de SQL proporciona una capa adicional de validación para las consultas.
  • Entradas parametrizadas : los parámetros del procedimiento almacenado son manejados por la biblioteca mssql , que normalmente los parametriza para evitar la inyección de SQL.

Solución de problemas

Si encuentra problemas:

  1. Verifique los registros del contenedor: docker logs mssql-mcp (si usa Docker).
  2. Verifique la salida de la consola del servidor para ver los registros pino si se ejecuta localmente.
  3. Verifique que todas las variables de entorno requeridas en su archivo .env estén configuradas correctamente, especialmente SQL_PASSWORD , SQL_SERVER , SQL_USER y SQL_DATABASE .
  4. Asegúrese de que las bases de datos a las que intenta acceder estén enumeradas en SQL_ALLOWED_DATABASES si ha configurado esta variable.
  5. Confirme la conectividad de red a su instancia de SQL Server desde donde se ejecuta el servidor MCP.
  6. Es posible que los scripts de prueba ( test-mcp.sh , test-session-persistence.sh ) necesiten revisión o actualizaciones.

Para obtener una solución detallada de problemas de Docker, consulte el archivo README de Docker .

-
security - not tested
F
license - not found
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Un servidor de protocolo de contexto de modelo que permite que los modelos de lenguaje grandes como Claude ejecuten consultas SQL, exploren esquemas de bases de datos y mantengan conexiones persistentes a bases de datos de SQL Server.

  1. Características
    1. Inicio rápido
      1. Uso de Docker (recomendado)
    2. Configuración
      1. Usando con Claude
        1. Manejo de la conexión
          1. Desarrollo
            1. Configuración de desarrollo local
          2. Notas de seguridad
            1. Solución de problemas

              Related MCP Servers

              • -
                security
                A
                license
                -
                quality
                A Model Context Protocol server that enables Large Language Models to seamlessly interact with ClickHouse databases, supporting resource listing, schema retrieval, and query execution.
                Last updated -
                1
                Python
                MIT License
                • Linux
                • Apple
              • A
                security
                A
                license
                A
                quality
                A Model Context Protocol server that allows Large Language Models to interact with Astra DB databases, providing tools for managing collections and records through natural language commands.
                Last updated -
                10
                115
                12
                TypeScript
                Apache 2.0
                • Apple
              • -
                security
                -
                license
                -
                quality
                A Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.
                Last updated -
                Python
              • -
                security
                F
                license
                -
                quality
                A Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.
                Last updated -
                • Apple

              View all related MCP servers

              ID: 6rj1s2u5o5