Proflores MCP Server
by jjesusaf
README.md
# Proflores MCP Server
Servidor MCP (Model Context Protocol) para el sistema de presupuestos de Proflores.
## Stack
- Python 3.12
- MCP SDK (`mcp[cli]>=1.26.0`) con transporte Streamable HTTP
- Supabase como base de datos
- Deploy en Render (Docker)
## Estructura
```
mcp-server/
├── src/
│ ├── server.py # Entry point
│ ├── tools/
│ │ ├── catalogs.py # 8 tools de lectura de catálogos
│ │ ├── budget.py # 6 tools de presupuestos
│ │ └── catalog_write.py # 6 tools de escritura de catálogos
│ ├── resources/
│ │ └── schema.py # 2 resources (schema del sistema)
│ ├── prompts/
│ │ └── budget.py # 2 prompts para flujos guiados
│ └── services/
│ ├── supabase_client.py # Singleton del cliente Supabase
│ └── helpers.py # to_json, resolve_uuid
├── requirements.txt
├── Dockerfile
├── render.yaml
├── .env.example
└── .gitignore
```
## Setup local
```bash
cp .env.example .env
# Editar .env con tus credenciales de Supabase
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python src/server.py
```
El servidor estará disponible en `http://localhost:8000/mcp/`.
## Tools disponibles (20)
### Lectura de catálogos (8)
| Tool | Descripción |
|------|-------------|
| `list_companies` | Lista empresas registradas |
| `list_clients` | Lista o busca clientes |
| `list_projects` | Lista proyectos con filtros |
| `list_concepts` | Lista conceptos (partidas de obra) |
| `list_resources` | Lista recursos (materiales, mano de obra, equipo) |
| `list_units_of_measure` | Lista unidades de medida |
| `list_price_lists` | Lista listas de precios |
| `list_suppliers` | Lista proveedores |
### Presupuestos (6)
| Tool | Descripción |
|------|-------------|
| `list_budgets` | Lista presupuestos existentes |
| `get_budget_detail` | Detalle completo de un presupuesto |
| `create_budget` | Crea un presupuesto vacío (DRAFT) |
| `add_budget_item` | Agrega una partida a un presupuesto |
| `update_budget` | Actualiza campos de un presupuesto |
| `update_budget_item` | Actualiza una partida |
### Escritura de catálogos (6)
| Tool | Descripción |
|------|-------------|
| `create_client` | Crea un nuevo cliente |
| `create_concept` | Crea un concepto (partida de obra) |
| `create_apu` | Crea un APU (Análisis de Precio Unitario) |
| `add_apu_item` | Agrega un recurso a un APU |
| `create_resource` | Crea un recurso (material, mano de obra, equipo) |
| `set_resource_price` | Asigna precio a un recurso en una lista de precios |
## Resources
- `schema://system-overview` — Visión general del sistema
- `schema://budget-structure` — Estructura de tablas de presupuestos
## Prompts
- `budget_creation_assistant` — Guía paso a paso para crear presupuestos
- `budget_review` — Guía para revisar un presupuesto existente
## Variables de entorno
| Variable | Descripción |
|----------|-------------|
| `SUPABASE_URL` | URL del proyecto Supabase |
| `SUPABASE_SERVICE_ROLE_KEY` | Service role key de Supabase |
| `MCP_HOST` | Host del servidor (default `0.0.0.0`) |
| `MCP_PORT` | Puerto del servidor (default `8000`) |
## Deploy
El proyecto está configurado para deploy en Render con Docker. Ver `render.yaml`.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues