Skip to main content
Glama

VIGÍA HACCP MCP Server

Servidor MCP que genera análisis HACCP completos, enriquecidos con datos reales de retiros de mercado de la FDA (openFDA).

Compatible con: SurfSense, Claude Desktop, cualquier cliente MCP estándar (SSE).


Estructura del proyecto

vigia-haccp-mcp/
├── server.py                  # Punto de entrada — FastMCP + 3 herramientas
├── models.py                  # Modelos Pydantic compartidos
├── services/
│   ├── openfda.py             # Cliente openFDA con manejo de errores
│   └── haccp_generator.py     # Lógica HACCP (PCCs, peligros, límites…)
├── exporters/
│   └── excel_exporter.py      # Exportación Excel con formato profesional
├── requirements.txt
├── .env.example
└── README.md

Herramientas MCP expuestas

Herramienta

Cuándo usarla

get_process_step_schema

Primero — obtén el schema para construir los pasos

search_fda_recalls

Diagnóstico de peligros reales en FDA

generate_haccp_analysis

Análisis completo → JSON + Excel


Instalación local

# 1. Clonar y entrar al directorio
cd vigia-haccp-mcp

# 2. Crear entorno virtual
python -m venv .venv
source .venv/bin/activate        # Windows: .venv\Scripts\activate

# 3. Instalar dependencias
pip install -r requirements.txt

# 4. Configurar variables de entorno
cp .env.example .env
# Editar .env si es necesario

# 5. Iniciar el servidor
python server.py
# → Escuchando en http://0.0.0.0:8000/sse

Conectar a SurfSense

  1. Inicia el servidor: python server.py

  2. En SurfSense → Settings → MCP Servers → Add Server

  3. Configura:

    Name:      VIGÍA HACCP
    URL:       http://localhost:8000/sse
    Transport: SSE
  4. Guarda y verifica que aparezcan las 3 herramientas en el panel de tools.

En producción (Railway / VPS)

URL: https://tu-dominio.railway.app/sse

SurfSense puede conectarse a servidores remotos siempre que el endpoint /sse sea accesible públicamente.


Flujo de uso en SurfSense

Usuario: "Genera el análisis HACCP para jamón cocido rebanado"
    ↓
SurfSense LLM consulta la knowledge base del cliente
    ↓
LLM llama: get_process_step_schema()          ← conoce el formato
    ↓
LLM extrae pasos del proceso de la KB
    ↓
LLM llama: generate_haccp_analysis(
    product_name="Jamón cocido rebanado",
    process_steps_json="[...]",
    focus_areas="Listeria, Salmonella",
    fda_product_keyword="cooked ham"
)
    ↓
Servidor consulta openFDA → detecta peligros
    ↓
Genera tabla HACCP + guarda Excel
    ↓
Retorna JSON con análisis completo al usuario

Deploy en Railway

# railway.toml (crear en la raíz)
[build]
  builder = "NIXPACKS"

[deploy]
  startCommand = "python server.py"
  healthcheckPath = "/"

Variables de entorno en Railway:

PORT        = (Railway lo asigna automáticamente)
HOST        = 0.0.0.0
OUTPUT_DIR  = /tmp/vigia_outputs
LOG_LEVEL   = INFO

Notas técnicas

  • Transporte: SSE (Server-Sent Events) — estándar MCP para servidores remotos.

  • openFDA: Se consultan los últimos 5 años de retiros alimentarios. No requiere API key.

  • Excel: Se guarda en OUTPUT_DIR. En Railway, es volátil (/tmp); considera montar un volumen persistente o subir a S3/R2 si necesitas conservar los archivos.

  • PCCs determinados por: temperatura de proceso, nombre de etapa, y peligros confirmados en retiros FDA.

  • Normativas de referencia: NOM-251-SSA1-2009, NOM-213-SSA1-2018, Codex CAC/RCP 1-1969 Rev.4.