Skip to main content
Glama
Josuedotcom

MCP SQL Server Data Warehouse Connector

by Josuedotcom
README.md
# 🤖📊 MCP SQL Server Data Warehouse Connector

Este proyecto implementa un servidor **Model Context Protocol (MCP)** para interactuar con un Data Warehouse en SQL Server utilizando lenguaje natural a través de asistentes de IA (como Claude Desktop). 

Permite a la IA descubrir el esquema de la base de datos de forma automática y ejecutar consultas analíticas (`SELECT`) de manera segura para generar reportes estratégicos en segundos.

## 🚀 Tecnologías Utilizadas
- **Python** (con **uv** para la gestión ultrarrápida de dependencias).
- **MCP SDK** (`mcp`) para estandarizar la comunicación con la IA.
- **SQLAlchemy** & **pyodbc** para la conexión robusta a la base de datos.
- **SQL Server** como motor de Data Warehouse.

## 🛠️ Configuración y Uso

### 1. Preparar la Base de Datos (Seguridad)
Nunca utilices usuarios administradores. El proyecto incluye una plantilla para crear un usuario de **solo lectura**.
* Abre el archivo `setup_user_template.sql`.
* Reemplaza los datos entre corchetes con tu información real.
* Ejecuta el script en tu gestor de base de datos (SSMS, Azure Data Studio, etc.).

### 2. Variables de Entorno
Crea un archivo `.env` en la raíz del proyecto (este archivo está ignorado por Git por seguridad) con la siguiente estructura:
```env
DB_SERVER=tu_servidor
DB_NAME=tu_base_de_datos
DB_USER=mcp_chat_user
DB_PASSWORD=tu_password_seguro
DB_DRIVER=ODBC Driver 17 for SQL Server
```

### 3. Instalar Dependencias
Asegúrate de tener uv instalado y ejecuta:

Bash
```
uv sync
```
### 4. Conectar con Claude Desktop
Para que Claude pueda usar tus datos, debes agregar este servidor a su configuración.

Abre la configuración de Claude en 
```
%APPDATA%\Claude\claude_desktop_config.json.
```
Revisa el archivo claude_desktop_config_template.json incluido en este repositorio para ver cómo estructurar la conexión. Solo debes cambiar la ruta por la ubicación absoluta de tu proyecto.

Reinicia Claude Desktop.

### 🛡️ Consideraciones de Seguridad
El servidor valida explícitamente que las consultas comiencen con la cláusula SELECT.

Las modificaciones a la base de datos (INSERT, UPDATE, DROP) serán rechazadas tanto por el código de Python como por los permisos del usuario de SQL Server.