mcp-sqlserver
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
mcp-sqlserver
Utilidad de solo lectura para consultar una base de datos SQL Server desde un servidor MCP (Claude Code / Claude Desktop) y/o desde la terminal mediante una skill de Claude Code.
Es el equivalente para SQL Server de
homemade-mcp-oracle-database-10g-claude:
misma arquitectura, adaptada a T-SQL y a pyodbc.
Diferencias respecto a la versión Oracle
Tema | Oracle 10g | SQL Server (este proyecto) |
Driver |
|
|
Autenticación | usuario/password | usuario/password o autenticación integrada de Windows |
Catálogo |
|
|
Límite de filas en SQL |
|
|
Guard de solo lectura | primera palabra + sin | más estricto (ver abajo) |
Tools MCP |
|
|
Errores hacia el modelo | genéricos | con motivo ( |
Related MCP server: sql-explorer-mcp
Arquitectura
src/
config.py Carga y valida .env (conexión, driver, política)
db.py Conexión pyodbc; autodetecta el driver; nunca hace commit (rollback al cerrar)
sql_guard.py Guard de solo lectura para T-SQL
audit_log.py Auditoría (logs/query_audit.log)
query_runner.py Ejecuta SQL con límite de filas, timeout y auditoría; resultado JSON-safe
schema_inspector.py list_databases / list_tables / describe_table (con marca de PK)
mcp_server.py Servidor MCP (stdio)
scripts/
install.py Instalador (venv, deps, .env, mcp-config.json, registro en Claude Code)
test_connection.py Prueba mínima de conectividad
query.py CLI de consultas (lo usa también la skill)
tests/test_sql_guard.py Tests del guard (no requieren SQL Server)
.claude/skills/sqlserver-query/ Skill de Claude CodeModelo de seguridad (defensa en profundidad)
Base de datos (barrera real): usa un login con permisos de solo lectura (
db_datareader, oSELECTsobre lo necesario). Nada de lo siguiente lo reemplaza.Guard de software (
src/sql_guard.py): T-SQL permite cosas que otros dialectos no, así que el guard enmascara comentarios, literales e identificadores y luego busca palabras prohibidas en todo el texto:sentencias sin
;(SELECT 1 DELETE FROM tes válido en T-SQL),SELECT … INTO(crea tablas),WITH cte AS (…) DELETE/UPDATE/MERGE,EXEC,DECLARE,SET,USE,WAITFOR,OPENROWSET/OPENQUERY,NEXT VALUE FOR,xp_*, DDL, permisos… Un;oDELETEdentro de un literal ('a; DELETE') no da falso positivo. Ante la duda (literal sin cerrar, etc.) rechaza.
Transacción nunca confirmada: la conexión es sin autocommit y se hace
rollbackal cerrar; además se declaraApplicationIntent=ReadOnly.Límites:
MAX_ROWS(resultado marcadotruncated) yQUERY_TIMEOUT_SECONDS.Auditoría: toda ejecución (OK, error o rechazada) en
logs/query_audit.log.
Instalación
install.bat # Windows
python scripts/install.py # cualquier SOCrea .venv, instala dependencias, copia .env.example a .env, genera
mcp-config.json y registra el servidor en Claude Code (--no-register para
omitirlo, --force para rehacerlo). Luego edita .env.
Requisito del sistema: un ODBC Driver for SQL Server (17 o 18) instalado. Si no lo tienes: https://learn.microsoft.com/sql/connect/odbc/download-odbc-driver-for-sql-server.
Configuración (.env)
MSSQL_HOST=servidor MSSQL_PORT=1433 MSSQL_INSTANCE= # p. ej. SQLEXPRESS
MSSQL_DATABASE=MiBase
MSSQL_USER=lector MSSQL_PASSWORD=... # o MSSQL_TRUSTED_CONNECTION=trueCon MSSQL_INSTANCE se conecta a HOST\INSTANCIA (SQL Browser resuelve el puerto).
MSSQL_TRUST_SERVER_CERTIFICATE=true (por defecto) cubre certificados
autofirmados, habituales en servidores legacy; ponlo en false si tu servidor
tiene un certificado válido. Nunca subas .env a un repositorio.
Uso
.venv\Scripts\python scripts\test_connection.py
.venv\Scripts\python scripts\query.py "SELECT TOP 10 * FROM dbo.mi_tabla" --format json
.venv\Scripts\python scripts\query.py --file consulta.sql
.venv\Scripts\python -m unittest discover -s tests -vServidor MCP
Registro manual en Claude Code:
claude mcp add sqlserver -s user -- "<ruta>\.venv\Scripts\python.exe" "<ruta>\src\mcp_server.py"Para otro cliente, usa mcp-config.json (lo genera el instalador; ver
mcp-config.example.json). Se invoca el archivo directamente y no con
-m src.mcp_server porque un cliente MCP lanza el proceso con un cwd que no
controlas; mcp_server.py ajusta sys.path con su propia ubicación y
config.py busca .env junto al proyecto.
Tools:
run_query(sql)— SELECT / WITH … SELECT, con guard.list_databases()— bases accesibles (para usar nombresbase.esquema.tabla).list_tables(schema?)— tablas y vistas.describe_table(table_name, schema?)— columnas, tipos, nullable, default y PK.
Notas de T-SQL
SELECT TOP 20 col1, col2 FROM dbo.tabla ORDER BY col1;
SELECT col1 FROM dbo.tabla ORDER BY col1 OFFSET 40 ROWS FETCH NEXT 20 ROWS ONLY; -- 2012+Limitaciones conocidas
Solo se devuelve el primer result set de una consulta.
No se probó contra una instancia real de SQL Server en el desarrollo inicial (no había una disponible): el guard está cubierto por tests, y el arranque del servidor MCP, la construcción del connection string y el manejo de errores de conexión se verificaron, pero conviene correr
scripts/test_connection.pycontra tu servidor como primer paso.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Read authorized Loam tables and supported external databases through a bounded MCP connection.
Draxlr's remote MCP server connects AI assistants to your SQL databases and dashboards. Explore schemas, run read-only queries, manage saved queries and dashboards, and export results, all with row-level security so each user sees only their own data.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceRead-only SQL Server MCP server enabling safe database queries, table listing, and schema inspection with built-in security protections.MIT
- AlicenseAqualityDmaintenanceA read-only MCP server for browsing and querying SQL Server databases, providing tools to list schemas, tables, describe columns, and execute safe SELECT queries with validated parameters.15ISC
- FlicenseAqualityDmaintenanceA read-only MCP server for SQL Server and PostgreSQL that enables exploring and querying databases (schemas, tables, views, procedures, indexes, foreign keys) and running arbitrary SELECT queries.37-
- AlicenseAqualityCmaintenanceEnables MCP clients to securely query databases, list tables, inspect table schemas, and test connections across Oracle, SQL Server, MySQL, PostgreSQL, and SQLite using read-only SQL tools.4MIT