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_dbexpandible - 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
postgrescomo host (nolocalhostni127.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
Snowflake Stored Procedure Integration
Integrates and executes Snowflake stored procedures through an MCP server.
DynamoDB-Toolbox
Leverages your Schemas and Access Patterns to interact with your DynamoDB Database using natural language.
Apache AGE MCP Server
A server for Apache AGE, a graph database extension for PostgreSQL.
Teradata MCP Server
Interact with Teradata databases for data queries and business intelligence.
Polygon.io
Access real-time and historical financial market data from Polygon.io's API.
Redis
A server for interacting with Redis databases.
Amplify Data API MCP Server
Interact with AWS Amplify Gen2 data models using natural language and Cognito authentication.
ODBC Server via PyODBC
An MCP server for connecting to databases like Virtuoso using ODBC drivers via pyodbc.
MCP Trino Server
Integrates with Trino and Iceberg for advanced data exploration, querying, and table maintenance.
CData SAP HANA XS Advanced Server
A read-only MCP server for SAP HANA XS Advanced, powered by the CData JDBC Driver.