Supermarket Database
A dockerized PostgreSQL database project for a supermarket data schema, with MCP integration for Claude Desktop.
Sistema de Base de Datos - Supermercado 🛒
Un proyecto de base de datos PostgreSQL completamente dockerizada que implementa el esquema de datos de un supermercado con capacidades de integración MCP para Claude Desktop.
📋 Tabla de Contenidos
- Descripción del Proyecto
- Prerrequisitos
- Estructura del Proyecto
- Instalación y Configuración
- Conexión a pgAdmin
- Restauración de la Base de Datos
- Integración con Claude Desktop (MCP)
- Solución de Problemas
🎯 Descripción del Proyecto
Este proyecto proporciona una solución completa para el manejo de datos de un supermercado utilizando PostgreSQL en contenedores Docker. Incluye:
- Base de datos PostgreSQL: Esquema completo del supermercado
- Backup de datos: Archivo de respaldo con estructura y datos de prueba
- Integración MCP: Configuración para uso con Claude Desktop
- Docker Compose: Configuración de infraestructura automatizada
⚙️ Prerrequisitos
Antes de comenzar, asegúrate de tener instalado:
- Docker v20.10 o superior
- Docker Compose v2.0 o superior
- pgAdmin (para restauración del backup)
- Claude Desktop (opcional, para integración MCP)
📁 Estructura del Proyecto
DB_SUPERMARKET/
├── docker-compose.yml # Configuración de Docker Compose
├── supermarket.backup # Backup de la base de datos
└── README.md # Documentación del proyecto
🚀 Instalación y Configuración
1. Iniciar los Contenedores
docker-compose up -d
Este comando iniciará dos servicios:
PostgreSQL (puerto 5432):
- Usuario: admin
- Contraseña: admin
- Base de datos: admin_db
pgAdmin (puerto 8080):
- Email: admin@admin.com
- Contraseña: admin
- URL: http://localhost:8080
2. Verificar que los Contenedores estén Ejecutándose
docker-compose ps
Deberías ver dos contenedores corriendo:
postgres_db
(PostgreSQL)pgadmin_web
(pgAdmin)
🔗 Conexión a pgAdmin
pgAdmin se incluye como parte del stack de Docker y se ejecuta automáticamente. No necesitas instalarlo por separado.
Acceso a pgAdmin Web
-
Abrir navegador y ir a: http://localhost:8080
-
Iniciar sesión con las credenciales:
- Email:
admin@admin.com
- Contraseña:
admin
- Email:
Configurar Conexión al Servidor PostgreSQL
Una vez dentro de pgAdmin:
-
Agregar nuevo servidor:
- Clic derecho en "Servers" → "Register" → "Server..."
-
Configurar pestaña "General":
- Name:
Supermercado DB
(o cualquier nombre descriptivo)
- Name:
-
Configurar pestaña "Connection":
- Host name/address:
postgres
(nombre del servicio en Docker) - Port:
5432
- Username:
admin
- Password:
admin
- Host name/address:
-
Guardar la conexión:
- Marcar "Save password" (recomendado)
- Clic en "Save"
✅ Verificar la Conexión
Una vez configurado correctamente, deberías ver:
- El servidor "Supermercado DB" en el panel izquierdo
- La base de datos
admin_db
expandible - Posibilidad de explorar esquemas y tablas
🚀 Acceso Rápido al Query Tool
Para ejecutar consultas SQL:
- Expandir el servidor conectado
- Expandir
Databases
→admin_db
- Clic derecho en
admin_db
→ "Query Tool" - ¡Listo para ejecutar comandos SQL!
🔧 Troubleshooting de pgAdmin
Si no puedes acceder a pgAdmin:
- Verificar que ambos contenedores estén ejecutándose:
docker-compose ps
- Comprobar que el puerto 8080 no esté ocupado
- Revisar logs:
docker-compose logs pgadmin
Si no puedes conectarte al servidor PostgreSQL desde pgAdmin:
- Usar
postgres
como host (nolocalhost
ni127.0.0.1
) - Verificar que las credenciales sean exactamente:
admin
/admin
- Revisar logs de PostgreSQL:
docker-compose logs postgres
🔄 Restauración de la Base de Datos
Paso 1: Crear el Rol PostgreSQL (CRÍTICO)
⚠️ IMPORTANTE: Antes de restaurar el backup, ejecuta este comando SQL:
CREATE ROLE postgres;
Formas de ejecutar este comando:
- pgAdmin → Query Tool
- Cliente de línea de comandos SQL
- Cualquier cliente PostgreSQL (DBeaver, DataGrip, etc.)
Paso 2: Restaurar el Backup en pgAdmin
- Abrir pgAdmin y conectarse al servidor PostgreSQL
- Clic derecho en la base de datos de destino
- Seleccionar "Restore..."
- Configurar la restauración:
- Format: Custom or tar
- Filename: Seleccionar
supermarket.backup
- Options: Marcar las opciones necesarias
- Ejecutar la restauración
Paso 3: Verificar la Restauración
Ejecuta una consulta de prueba para confirmar que los datos se restauraron correctamente:
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public';
🔌 Integración con Claude Desktop (MCP)
La integración con Model Context Protocol (MCP) permite que Claude Desktop interactúe directamente con la base de datos para análisis y consultas inteligentes.
Configuración Paso a Paso
1. Verificar que la Base de Datos esté Activa
docker-compose up -d
docker-compose ps
2. Configurar Claude Desktop
Edita el archivo de configuración de Claude Desktop en tu sistema:
📍 Ubicaciones del archivo de configuración:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
Configuración a agregar:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://admin:admin@localhost:5432/admin_db"
]
}
}
}
3. Reiniciar Claude Desktop
Cierra completamente Claude Desktop y ábrelo nuevamente para que la configuración tome efecto.
✅ Verificación de la Integración
Una vez configurado correctamente, Claude Desktop podrá:
- 🔍 Analizar el esquema de la base de datos automáticamente
- 📊 Ejecutar consultas SQL en tiempo real
- 💡 Generar insights sobre los datos del supermercado
- 🔗 Responder preguntas sobre estructura y contenido de las tablas
📝 Notas Importantes sobre MCP
- La URL de conexión debe coincidir exactamente con tu configuración de
docker-compose.yml
- Si modificas las credenciales de la base de datos, actualiza también la configuración MCP
- El servidor MCP se descarga automáticamente en la primera ejecución
- Asegúrate de que no hay conflictos de puertos (5432 debe estar libre)
🛠️ Solución de Problemas
Errores Comunes en la Restauración
Problema | Causa | Solución |
---|---|---|
role "postgres" does not exist | No se ejecutó CREATE ROLE postgres; | Ejecutar el comando SQL antes del restore |
Conexión rechazada | Docker no está ejecutándose | Verificar con docker-compose ps |
Permisos insuficientes | Usuario sin privilegios | Conectarse como administrador |
Comandos de Diagnóstico
Verificar rol postgres:
SELECT * FROM pg_roles WHERE rolname = 'postgres';
Verificar conexión a la base de datos:
docker-compose exec postgres psql -U admin -d admin_db -c "\l"
Ver logs del contenedor:
docker-compose logs postgres
Problemas de Integración MCP
Claude Desktop no detecta la base de datos:
- Verificar que el archivo de configuración esté en la ubicación correcta
- Validar la sintaxis JSON del archivo de configuración
- Comprobar que la base de datos esté accesible desde localhost:5432
- Reiniciar completamente Claude Desktop
Error de conexión MCP:
- Verificar que las credenciales en la URL coincidan con docker-compose.yml
- Comprobar que no hay firewall bloqueando el puerto 5432
- Intentar la conexión manual con psql o pgAdmin
Desarrollado con ❤️ para el curso de Base de Datos
Related Servers
MSSQL MCP Server
Interact with Microsoft SQL Server (MSSQL) databases. List tables, read data, and execute SQL queries with controlled access.
Microsoft Access Database
Allows AI to interact with Microsoft Access databases, supporting data import and export via CSV files.
Microsoft SQL Server
A Model Context Protocol (MCP) server for connecting to and querying Microsoft SQL Server databases.
Microsoft Fabric Analytics
An analytics server providing tools for interacting with the Microsoft Fabric data platform.
OpenCTI MCP Server
Integrates with the OpenCTI platform to query and retrieve threat intelligence data.
Mongo
A Model Context Protocol (MCP) server that enables LLMs to interact directly with MongoDB databases
Movies MCP Server
A comprehensive movie database server supporting advanced search, CRUD operations, and image management via a PostgreSQL database.
VictoriaMetrics
A server for writing and querying time series data using the VictoriaMetrics API.
Odoo Accounting MCP Server
Integrates with Odoo Accounting via XML-RPC, allowing AI tools to query and analyze account journal entries for auditing purposes.
LoL Data MCP Server
Provides real-time, structured access to League of Legends game data, including champions, items, abilities, game mechanics, and patch information.