Skip to main content
Glama
kevinbolanos00

Constructora Colombia MCP Server

README.md
# Constructora Colombia — MCP Server para OpenClaw

Sistema de cotizaciones inteligente para construcción colombiana.  
**OpenClaw** es el cerebro (recibe mensajes por Telegram, razona, decide).  
**Python MCP Server** es la herramienta (busca en Excel, calcula, extrae datos).

## Arquitectura

```
Usuario → Telegram
              ↓
        OpenClaw Gateway ← canal Telegram nativo
              ↓  (razona, elige herramienta)
        MCP Server (Python)
              ↓  (datos crudos)
        OpenClaw analiza y responde
              ↓
Usuario ← Telegram
```

- **OpenClaw**: IA que conversa con el usuario, decide qué tool usar e interpreta resultados
- **MCP Server**: 5 herramientas Python que consultan el Excel de construcción
- **Excel**: Fuente única de precios (1165 actividades, 21 recursos salariales, 18 capítulos)

## Herramientas MCP

| Herramienta | Qué hace |
|-------------|----------|
| `buscar_actividades` | Búsqueda inteligente por similitud (rapidfuzz) |
| `cotizar` | Calcula cotización completa con detección de dimensiones |
| `interpretar` | Extrae intención, actividad y dimensiones del texto |
| `listar_categorias` | Lista los 18 capítulos de construcción disponibles |
| `obtener_detalle_actividad` | Desglose completo de recursos y precios unitarios |

## Uso con OpenCode (CLI)

```bash
cd /opt/constructora
opencode
```

OpenCode leerá `AGENTS.md` automáticamente y cargará las 5 herramientas MCP desde `opencode.json`. Puedes empezar a preguntar en lenguaje natural.

## Uso con OpenClaw Gateway (Telegram)

```bash
# 1. Configurar y ejecutar setup
TELEGRAM_BOT_TOKEN="123:abc" TELEGRAM_USER_ID="123456" bash deploy/setup.sh

# 2. Iniciar Gateway
openclaw gateway
```

## Instalación en Ubuntu

```bash
# 1. Clonar el repositorio
git clone <tu-repo> /opt/constructora
cd /opt/constructora

# 2. Ejecutar setup
TELEGRAM_BOT_TOKEN="123:abc" TELEGRAM_USER_ID="123456" bash deploy/setup.sh
```

El `setup.sh`:
- Instala dependencias Python
- Configura `openclaw.json` con tu token de Telegram
- Crea servicio systemd opcional para el MCP Server
- Verifica que el MCP Server funciona

## Configuración manual de OpenClaw

Después de ejecutar `setup.sh`, tu `openclaw.json` se ve así:

```json
{
  "mcpServers": {
    "constructora-colombia": {
      "command": "python3",
      "args": ["-m", "app.mcp_server"],
      "env": { "PYTHONPATH": "/opt/constructora" }
    }
  },
  "channels": {
    "telegram": {
      "enabled": true,
      "botToken": "TU_TOKEN",
      "dmPolicy": "allowlist",
      "allowFrom": ["TU_USER_ID"]
    }
  }
}
```

## Uso en Telegram

Ejemplos de mensajes que entiende el sistema:

| Mensaje | Comportamiento |
|---------|----------------|
| "Necesito cotización para poner cerámica en una habitación de 6x8" | Cotiza 48m2 de enchape |
| "Ponme baldosa barata" | Busca opciones de baldosa económica |
| "Cuanto vale pintar una pared de 10m2" | Cotiza pintura vinílica |
| "Panyete para 30m2" | Cotiza revoques |
| "Qué categorías hay?" | Lista capítulos disponibles |
| "Muéstrame actividades de PISOS" | Lista actividades de pisos |
| "Dame detalle de Enchape en cerámica" | Muestra APU completo |

## Desarrollo local (FastAPI)

Opcionalmente puedes correr la API HTTP para debug:

```bash
pip install -r requirements.txt
python -m app.main
# → http://localhost:8000/docs
```

## Estructura del proyecto

```
constructora/
├── app/
│   ├── main.py                FastAPI (debug) + entry point MCP
│   ├── mcp_server.py          MCP Server con 5 herramientas
│   ├── config.py              Configuración
│   ├── database/
│   │   ├── excel_reader.py    Lector de Excel (pandas + openpyxl)
│   │   └── models.py          Modelos de datos
│   ├── tools/
│   │   ├── search.py          Búsqueda fuzzy (rapidfuzz)
│   │   └── calculator.py      Cálculo de cantidades
│   ├── api/
│   │   ├── routes.py          Endpoints REST
│   │   └── schemas.py         Pydantic schemas
│   └── utils/
│       └── text_parser.py     NLP: intención + dimensiones
├── data/
│   └── dataconstru.xlsx       Base de datos de construcción
├── deploy/
│   └── setup.sh               Script de instalación para Ubuntu
├── openclaw.json              Configuración para OpenClaw
├── requirements.txt
└── README.md
```

## Próximas etapas

- [ ] Embeddings semánticos (sentence-transformers + ChromaDB)
- [ ] Búsqueda híbrida (fuzzy + vectorial)
- [ ] RAG con precios web Colombia
- [ ] PDFs profesionales (reportlab)
- [ ] APU detallados con desglose de materiales
- [ ] Historial de clientes y memoria conversacional

## Licencia

MIT