Radar de Riesgo de Devolución
MCP server for e-commerce return risk analysis, providing tools to calculate customer risk profiles, compare segments, and identify risk factors, with memory for contextual conversations.
README
Radar de Riesgo de Devolución — Agente MCP con memoria
Proyecto de la Clase 3 (Estrategias de Integración): evoluciona el notebook
RadarRiesgoDevolucion_MCP_LangChain.ipynb (Clase 2) hacia un sistema
Python reutilizable, con memoria de corto plazo y múltiples clientes
(Streamlit y Claude Desktop).
Arquitectura
Streamlit / Claude Desktop
│
▼
mcp_agente.py (MCP del agente — fachada de alto nivel)
│
▼
agent_core.py (LangChain + OpenAI + memoria por session_id)
│
▼
mcp_datos.py (MCP de datos — 5 tools de riesgo de devolución)
│
▼
data/ecommerce_demo.db (SQLite)
1. Setup del entorno
cd clase3_agente_mcp_memoria
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
Edita .env y completa OPENAI_API_KEY (y ajusta OPENAI_MODEL si no
tienes acceso a gpt-5.4-nano).
2. Construir la base de datos
El CSV ya está en data/ecommerce_orders.csv. Genera el SQLite:
python data/build_db.py
Esto crea data/ecommerce_demo.db con la tabla orders e índices.
3. Levantar el MCP de datos
python mcp_datos.py
Debe quedar escuchando en http://127.0.0.1:8000/mcp. Déjalo corriendo en
esta terminal.
4. Levantar el MCP del agente (modo HTTP, para Streamlit)
En una segunda terminal (con el mismo entorno virtual activado):
export MCP_AGENT_TRANSPORT=http # En Windows (PowerShell): $env:MCP_AGENT_TRANSPORT="http"
python mcp_agente.py
Debe quedar escuchando en http://127.0.0.1:8100/mcp.
5. Probar el núcleo del agente de forma aislada (opcional)
Antes de tocar Streamlit, puedes validar que el agente responde:
python agent_core.py
Esto ejecuta dos consultas de prueba en la misma sesión y muestra si el agente mantiene contexto entre ellas.
6. Levantar Streamlit
En una tercera terminal:
streamlit run app_streamlit.py
Se abrirá en el navegador. Prueba la demo de memoria sugerida en la guía:
- Pregunta: "Busca clientes Premium con alto riesgo en Fashion"
- Sin cambiar de sesión, pregunta: "Analiza al de mayor consumo"
- Haz clic en Nueva conversación y repite la segunda pregunta: el agente ya no debería poder resolver la referencia.
7. Conectar Claude Desktop (host MCP externo)
- Detén el proceso de
mcp_agente.pyen modo HTTP (Ctrl+C) — Claude Desktop necesita transportestdio, nohttp. - Copia
config/claude_desktop_config.example.jsona la ubicación de configuración de Claude Desktop (revisa la documentación de Claude Desktop para la ruta exacta según tu sistema operativo). - Reemplaza la ruta del
argspor la ruta absoluta real de tu proyecto, y completa tuOPENAI_API_KEY. - Asegúrate de que
mcp_datos.pysiga corriendo (Paso 3) — el agente lo necesita sin importar el cliente que lo use. - Reinicia Claude Desktop. Debería descubrir la tool
resolver_consulta_ecommerce. - Prueba la misma pregunta usada en Streamlit y compara las respuestas.
Estructura del proyecto
clase3_agente_mcp_memoria/
├── mcp_datos.py # servidor MCP de datos y las 5 tools SQL
├── agent_core.py # LangChain, modelo, memoria y orquestación
├── mcp_agente.py # servidor MCP que empaqueta la capacidad agente
├── app_streamlit.py # cliente visual propio
├── data/
│ ├── ecommerce_orders.csv # dataset fuente
│ ├── build_db.py # script que genera el SQLite
│ └── ecommerce_demo.db # (se genera al ejecutar build_db.py)
├── config/
│ └── claude_desktop_config.example.json
├── .env.example
├── requirements.txt
├── .gitignore
└── README.md
Las 5 tools del MCP de datos
| Tool | Qué responde |
|---|---|
calcular_perfil_riesgo_cliente(customer_id) |
Historial de devolución de un cliente |
comparar_cliente_vs_segmento(customer_id) |
Cliente vs. promedio de su segmento |
identificar_factores_riesgo_categoria(product_category) |
Qué diferencia devueltas vs. no devueltas en una categoría |
calcular_score_riesgo_orden(product_category, delivery_days, discount_percent, coupon_used) |
Heurística transparente de probabilidad de devolución |
listar_ordenes_activas_en_riesgo(umbral_pct, limite) |
Órdenes Processing/Shipped a intervenir hoy |
Nota metodológica:
calcular_score_riesgo_ordenylistar_ordenes_activas_en_riesgousan una regla ponderada y transparente (tasa histórica de la categoría × multiplicador por días de entrega extremos), no un modelo de Machine Learning entrenado. El análisis exploratorio que fundamenta estos pesos está documentado en el notebook original de la Clase 2.
Variables de entorno relevantes
| Variable | Rol |
|---|---|
OPENAI_API_KEY |
Credencial del modelo |
OPENAI_MODEL |
Modelo usado por ChatOpenAI |
DATA_MCP_URL |
Dónde vive el MCP de datos |
MCP_AGENT_TRANSPORT |
http (Streamlit) o stdio (Claude Desktop) |
MEMORY_WINDOW_MESSAGES |
Cuántos mensajes recientes se reenvían al modelo |
Solución de problemas
- Streamlit no puede contactar al agente: verifica que
mcp_datos.pyYmcp_agente.py(en modohttp) estén corriendo antes de abrir Streamlit. - Claude Desktop no descubre la tool: confirma que
MCP_AGENT_TRANSPORT=stdioen la configuración, que la ruta del script es absoluta, y reinicia Claude Desktop por completo. - La memoria no se conserva entre preguntas: confirma que estás usando
el mismo
session_id(en Streamlit, no hagas clic en "Nueva conversación" entre preguntas relacionadas).
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.