Skip to main content
Glama
olivio-git

MCP Inventario

by olivio-git
README.md
# 📦 MCP Inventario - Sistema Modular

Sistema de inventario implementado como servidor MCP (Model Context Protocol) con arquitectura modular y soporte para múltiples bases de datos.

## 🚀 Inicio Rápido

### Instalación
```bash
npm install
```

### Configurar MongoDB
Asegúrate de tener MongoDB corriendo en `localhost:27017`, o configura la variable de entorno:
```bash
export MONGODB_URI="mongodb://localhost:27017/inventario"
```

### Ejecutar el Servidor MCP
```bash
node index.js
```

### Probar con el Cliente de Pruebas
```bash
node test-client.js
```

### Chat con Groq (Requiere API Key)
```bash
export GROQ_API_KEY="tu-api-key"
node chat-groq.js
```

## 📁 Archivos Principales

### ✅ **Archivos que DEBES USAR**

| Archivo | Propósito |
|---------|-----------|
| `index.js` | **Servidor principal modular** - Punto de entrada del servidor MCP |
| `test-client.js` | Cliente de pruebas para probar las herramientas MCP |
| `chat-groq.js` | Chat interactivo usando Groq AI + herramientas MCP |
| `src/` | Directorio con toda la lógica modular del proyecto |

### ⚠️ **Archivo OBSOLETO (No usar)**

| Archivo | Estado |
|---------|--------|
| `mcp-server.js` | **OBSOLETO** - Reemplazado por `index.js` + estructura modular en `src/` |

> **Nota**: `mcp-server.js` se mantiene solo como referencia. Toda la funcionalidad está ahora en la estructura modular.

## 🏗️ Estructura del Proyecto

```
experiments-mcp/
├── index.js                    ✅ Servidor principal (USA ESTE)
├── chat-groq.js               ✅ Chat con Groq AI
├── test-client.js             ✅ Cliente de pruebas
├── mcp-server.js              ⚠️  OBSOLETO (no usar)
│
└── src/
    ├── database/              # Gestión de base de datos
    │   ├── db.js             # Clase Database (multi-conexión)
    │   ├── models/           # Modelos Mongoose
    │   └── examples/         # Ejemplos de uso
    │
    ├── handlers/              # Lógica de negocio
    │   ├── index.js          # Router de handlers
    │   ├── item.handler.js   # Operaciones de items
    │   └── categoria.handler.js
    │
    ├── tools/                 # Definiciones MCP
    │   └── index.js          # Registro de herramientas
    │
    ├── server/                # Configuración servidor
    │   ├── index.js          # Setup del servidor MCP
    │   └── config.js         # Configuración
    │
    └── mockups/               # Datos de prueba
        ├── categorias.mc.js
        └── items.mc.js
```

## 🛠️ Herramientas Disponibles

1. **listar_items** - Lista items con filtro opcional por categoría
2. **buscar_item** - Busca items por nombre
3. **contar_items** - Cuenta items y calcula totales
4. **crear_items** - Crea uno o más items
5. **eliminar_item** - Elimina un item por ID
6. **actualizar_item** - Actualiza un item existente
7. **listar_categorias** - Lista todas las categorías

## 📚 Documentación

- [ARCHITECTURE.md](./ARCHITECTURE.md) - Documentación detallada de la arquitectura
- Ver ejemplos en `src/database/examples/`

## 🔄 Migración desde la versión anterior

Si estabas usando `mcp-server.js`:

1. **Cambiar referencias**: Actualiza cualquier script o configuración que apunte a `mcp-server.js` para que use `index.js`

2. **Funcionalidad idéntica**: Todas las herramientas funcionan igual, solo el código está mejor organizado

3. **Beneficios**:
   - ✅ Código más organizado y fácil de mantener
   - ✅ Separación de responsabilidades
   - ✅ Más fácil agregar nuevas herramientas
   - ✅ Soporte para múltiples bases de datos
   - ✅ Mejor para testing

## 🧪 Testing

### Probar todas las herramientas
```bash
node test-client.js
```

### Probar con chat interactivo
```bash
export GROQ_API_KEY="tu-clave"
node chat-groq.js
```

### Ejemplo de conversación:
```
💬 Tú: Lista todos los items de electrónica

🤖 Groq: Aquí están los items de electrónica:
- Laptop Dell (5 unidades) - $800
- Mouse Logitech (15 unidades) - $25
...
```

## 🔐 Variables de Entorno

```bash
# MongoDB (opcional, default: mongodb://localhost:27017/inventario)
export MONGODB_URI="mongodb://localhost:27017/inventario"

# Groq API (solo para chat-groq.js)
export GROQ_API_KEY="tu-api-key"
```

## 🆘 Troubleshooting

### Error: "Cannot connect to MongoDB"
- Verifica que MongoDB esté corriendo: `mongosh`
- Verifica la URI de conexión

### Error: "GROQ_API_KEY not found"
- Solo necesario para `chat-groq.js`
- Obtén tu API key en: https://console.groq.com

### Error: "Module not found"
```bash
npm install
```

## 📖 Más Información

- **Arquitectura completa**: Ver [ARCHITECTURE.md](./ARCHITECTURE.md)
- **Ejemplos de múltiples conexiones**: Ver `src/database/examples/multi-connection-example.js`

## 📝 Licencia

MIT

---

**¿Dudas?** Revisa la [documentación de arquitectura](./ARCHITECTURE.md) o los ejemplos en `src/database/examples/`.