Servidor MCP local para investigar SQL Server desde Claude Desktop, Claude Code o Codex. Expone tools de solo lectura para explorar esquemas, tablas, columnas, indices, claves foraneas, dependencias, muestras controladas, consultas SELECT capadas y planes estimados.
- Instala
uv. - Instala un driver ODBC para SQL Server.
- Clona este repositorio.
- Crea y completa
.enva partir de.env.example. - Ejecuta
scripts\install-claude-desktop.ps1. - Reinicia Claude Desktop.
- Windows 10/11.
- Acceso al SQL Server o a su replica.
- PowerShell.
uv.- Un driver ODBC de SQL Server:
- recomendado:
ODBC Driver 18 for SQL Server - alternativa:
ODBC Driver 17 for SQL Server
- recomendado:
Opcion recomendada:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Verificacion:
uv --versionInstala uno de estos paquetes oficiales de Microsoft:
ODBC Driver 18 for SQL ServerODBC Driver 17 for SQL Server
Verificacion rapida en PowerShell:
Get-OdbcDriver | Where-Object { $_.Name -like '*SQL Server*' } | Select-Object NameClona el repositorio y entra al directorio:
git clone <URL_DEL_REPO>
cd mcp_sql_severCopia .env.example a .env y completa los valores.
MSSQL_SERVER=mi-servidor
MSSQL_AUTH=sql
MSSQL_DATABASE=mi_base_replica
MSSQL_USERNAME=readonly_user
MSSQL_PASSWORD=tu_password
MSSQL_DRIVER=ODBC Driver 18 for SQL Server
MSSQL_ENCRYPT=yes
MSSQL_TRUST_SERVER_CERTIFICATE=yes
MCP_SQL_MAX_ROWS=200
MCP_SQL_TIMEOUT_SECONDS=30MSSQL_SERVER=localhost\SQLEXPRESS
MSSQL_AUTH=windows
MSSQL_DATABASE=
MSSQL_DRIVER=ODBC Driver 18 for SQL Server
MSSQL_ENCRYPT=yes
MSSQL_TRUST_SERVER_CERTIFICATE=yes
MCP_SQL_MAX_ROWS=200
MCP_SQL_TIMEOUT_SECONDS=30Notas:
MSSQL_DATABASE=vacio usa la base por defecto del login.- Si
ODBC Driver 18da problemas en una instancia local, el conector intenta fallbacks controlados conEncrypt=no,ODBC Driver 17y el driver legadoSQL Server. - No guardes secretos en el repo.
Este repo incluye un instalador para Claude Desktop:
.\scripts\install-claude-desktop.ps1Ese script:
- crea backup del
claude_desktop_config.jsonsi ya existe - preserva otros MCPs configurados
- registra
mcp-sql-server - escribe JSON valido en UTF-8 sin BOM
Opciones utiles:
.\scripts\install-claude-desktop.ps1 -ServerName "sql-server-readonly"
.\scripts\install-claude-desktop.ps1 -UvPath "C:\Users\TU_USUARIO\.local\bin\uv.exe"
.\scripts\install-claude-desktop.ps1 -ClaudeConfigPath "$env:APPDATA\Claude\claude_desktop_config.json"Si prefieres editar el archivo a mano, agrega esta entrada en:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mcp-sql-server": {
"command": "C:\\Users\\TU_USUARIO\\.local\\bin\\uv.exe",
"args": [
"--directory",
"C:\\ruta\\a\\mcp_sql_sever",
"run",
"--python",
"3.12",
"mcp-sql-server"
],
"env": {
"UV_CACHE_DIR": "C:\\ruta\\a\\mcp_sql_sever\\.uv-cache",
"UV_PYTHON_INSTALL_DIR": "C:\\ruta\\a\\mcp_sql_sever\\.uv-python"
}
}
}
}El MCP carga la conexion SQL desde .env, por lo que no hace falta meter MSSQL_* dentro del JSON de Claude Desktop.
Arranque local:
uv run --python 3.12 mcp-sql-serverTests:
uv run --python 3.12 pytestPrueba en Claude Desktop:
- Reinicia Claude Desktop.
- Abre un chat nuevo.
- Pide:
Usa mcp-sql-server y ejecuta server_info, luego list_schemas.
server_infolist_schemaslist_tablesdescribe_tablesearch_columnstable_profileindex_infoforeign_keysdependenciessample_rowsrun_selectexplain_select
- Solo permite
SELECTy CTEs de lectura. - Bloquea comentarios, multiples statements,
USE,EXEC, DML, DDL,MERGE,TRUNCATEySELECT INTO. - Limita filas y timeout.
- Enmascara columnas sensibles por nombre.
- Fuerza una sola conexion configurada por
.env.
Para que otro usuario lo instale en su Claude Desktop necesita:
- Este repositorio.
uv.- Un ODBC Driver de SQL Server.
- Su propio
.envcon acceso a su SQL Server. - Ejecutar
.\scripts\install-claude-desktop.ps1.
No hace falta que edite Python, ni que toque el JSON de Claude Desktop a mano, salvo que quiera una configuracion personalizada.