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 sentenciasSELECT
. - 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.
- Análisis de consultas SQL y lista blanca solo
- 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)
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ía | Variable | Descripción | Predeterminado (desde config.js) |
---|---|---|---|
Conexión | SQL_SERVER | Nombre de host o IP de SQL Server | localhost |
SQL_PORT | Puerto de SQL Server | 1433 | |
SQL_USER | Nombre de usuario de SQL Server | sa | |
SQL_PASSWORD | Contraseña de SQL Server | Requerido | |
SQL_DATABASE | Nombre de la base de datos predeterminada a la que conectarse | master | |
Seguridad | SQL_ENCRYPT | Habilitar el cifrado (establecer como false para deshabilitarlo) | true |
SQL_TRUST_SERVER_CERT | Certificado de servidor de confianza (establezca como false para deshabilitarlo) | true | |
SQL_ALLOWED_DATABASES | Lista 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 reintentos | SQL_CONNECTION_TIMEOUT | Tiempo de espera de conexión (ms) | 30000 |
SQL_REQUEST_TIMEOUT | Tiempo de espera de solicitud para consultas (ms) | 30000 | |
SQL_MAX_RETRIES | Número máximo de reintentos para los intentos de conexión iniciales | 3 | |
SQL_INITIAL_RETRY_DELAY | Retraso inicial (ms) antes de volver a intentar una conexión fallida | 1000 | |
SQL_MAX_RETRY_DELAY | Retardo máximo (ms) para reintentos de conexión (usa retroceso exponencial) | 30000 | |
Pool de conexiones | SQL_POOL_MAX | Máximo de conexiones en el pool | 10 |
SQL_POOL_MIN | Conexiones mínimas en el pool | 0 | |
SQL_POOL_IDLE_TIMEOUT | Tiempo de espera inactivo para conexiones en el grupo (ms) | 30000 | |
Almacenamiento en caché | SQL_SCHEMA_CACHE_TTL | Tiempo de vida para la caché de esquema (ms) | 300000 (5 minutos) |
Servidor MCP | MCP_SERVER_NAME | Nombre del servidor MCP | MSSQL Server |
MCP_SERVER_VERSION | Versión del servidor MCP | 1.0.0 | |
Explotación florestal | LOG_LEVEL | Nivel 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:
En la conversación de Claude, puedes:
- Ejecutar consultas
SELECT
:(El atributoCopydatabase
es opcional si se opera enSQL_DATABASE
predeterminado o siSQL_ALLOWED_DATABASES
implica una única elección). - Ejecutar procedimientos almacenados:Copy
- Explorar el esquema de la base de datos:(Si se omiteCopy
YourDatabaseName
, el valor predeterminado esSQL_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 comandoUSE [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
Notas de seguridad
- Solo
SELECT
: El servidor exige estrictamente que solo se puedan ejecutar consultasSELECT
mediante la herramientaexecute_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 conSQL_DATABASE
, consulteDATABASE_WHITELISTING.md
. - Bloqueo de procedimientos del sistema : Se bloquea la ejecución directa de procedimientos comunes del sistema (p. ej.,
sp_
,xp_
) y comandos comoRECONFIGURE
oWAITFOR DELAY
medianteexecute_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:
- Verifique los registros del contenedor:
docker logs mssql-mcp
(si usa Docker). - Verifique la salida de la consola del servidor para ver los registros pino si se ejecuta localmente.
- Verifique que todas las variables de entorno requeridas en su archivo
.env
estén configuradas correctamente, especialmenteSQL_PASSWORD
,SQL_SERVER
,SQL_USER
ySQL_DATABASE
. - 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. - Confirme la conectividad de red a su instancia de SQL Server desde donde se ejecuta el servidor MCP.
- 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 .
This server cannot be installed
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.
Related MCP Servers
- -securityAlicense-qualityA 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 -1PythonMIT License
Astra DB MCP Serverofficial
AsecurityAlicenseAqualityA 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 -1011512TypeScriptApache 2.0- -security-license-qualityA 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
MCP TapData Serverofficial
-securityFlicense-qualityA 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 -