Asistente Comercial MCP

Asistente Comercial MCP

Provides an AI agent with tools to search and analyze customer, product, and sales data from an e-commerce database using natural language.

Category
访问服务器

README

🛒 Asistente Comercial MCP

Python Streamlit LangChain Groq Tests

Sistema de agente de IA para análisis comercial de un e-commerce de productos alimenticios.


📑 Índice


📋 Problema que Resuelve

El asistente ayuda a equipos comerciales y de atención al cliente a obtener información rápida y verificable sobre:

  • Clientes: Búsqueda, perfil de consumo, identificación de alto valor
  • Productos: Productos más vendidos, análisis por categoría
  • Ventas: Análisis por región, métodos de pago
  • Análisis: Clasificación de clientes (VIP, Premium, Regular)

Usuario principal: Equipo comercial y de atención al cliente de un e-commerce.

Necesidad: Obtener información rápida y verificable sobre clientes, ventas, productos y regiones sin necesidad de consultar directamente bases de datos.

Lo que cubre:

  • ✅ Búsqueda de clientes por nombre, apellido o región
  • ✅ Perfil de consumo de clientes
  • ✅ Productos más vendidos
  • ✅ Análisis de ventas por categoría y región
  • ✅ Preferencias de métodos de pago
  • ✅ Clasificación de clientes (VIP, Premium, Regular)

Lo que NO cubre:

  • ❌ Modificación de datos (solo lectura)
  • ❌ Procesamiento de pagos
  • ❌ Gestión de inventario en tiempo real

🏗️ Arquitectura del Sistema

Diagrama de Componentes

┌───────────────────────────────────────────────────────────────┐
│                   USUARIO                                     │
└───────────────────────┬───────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────────────────┐
│               INTERFAZ WEB (Streamlit)                        │
│       app_streamlit.py                                        │
│       • Chat interactivo                                      │
│       • Visualización de evidencia                            │
│       • Gestión de session_id                                 │
└───────────────────────┬───────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────────────────┐
│               AGENTE LANGCHAIN + GROQ                         │
│       agent_core.py                                           │
│       • Interpretación de intención                           │
│       • Selección de herramientas                             │
│       • Memoria de corto plazo (InMemorySaver)                │
└───────────────────────┬───────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────────────────┐
│           CLIENTE MCP (langchain-mcp-adapters)                │
│           • Descubrimiento de herramientas                    │
│           • Invocación de tools                               │
└───────────────────────┬───────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────────────────┐
│               SERVIDOR MCP (FastMCP)                          │
│           mcp_server.py                                       │
│           • Exposición de 8 herramientas personalizadas       │
│           • Validación de entradas                            │
│           • Respuestas estructuradas                          │
└───────────────────────┬───────────────────────────────────────┘
                        │
                        ▼
┌───────────────────────────────────────────────────────────────┐
│                   BASE DE DATOS (SQLite)                      │
│           data/mcp_laboratorio.db                             │
│           • clientes • ventas • productos                     │
│           • categorias • metodos_pago                         │
└───────────────────────────────────────────────────────────────┘

Arquitectura

graph TD
    A[Usuario] --> B[Streamlit UI]
    B --> C[Agente LangChain + Groq]
    C --> D{¿Necesita tool?}
    D -->|Sí| E[Cliente MCP]
    D -->|No| F[Respuesta directa]
    E --> G[Servidor MCP FastMCP]
    G --> H[SQLite Database]
    H --> I[Resultado estructurado]
    I --> C
    F --> J[Respuesta final]
    C --> J
    J --> B
    B --> A
    
    style A fill:#B30909,stroke:#fff,stroke-width:2px
    style B fill:#00f,stroke:#fff,stroke-width:2px
    style C fill:#056c5c,stroke:#fff,stroke-width:2px
    style G fill:#f2f,stroke:#fff,stroke-width:2px
    style H fill:#1D7799,stroke:#fff,stroke-width:2px

Flujo de Ejecución

  1. Usuario escribe una pregunta en Streamlit

  2. Streamlit envía la pregunta al agente con session_id

  3. Agente LangChain + Groq interpreta la intención

  4. Decisión:

    • Si necesita datos → Invoca tool MCP

    • Si no → Responde directamente

  5. MCP Server ejecuta la tool contra SQLite

  6. Resultado vuelve al agente

  7. Agente sintetiza respuesta con evidencia

  8. Streamlit muestra respuesta, tools usadas y traza

  9. Memoria guarda contexto para siguiente interacción

Componentes y Responsabilidades

Capa Tecnología Archivo Responsabilidad
Interfaz Streamlit app_streamlit.py Recibir preguntas, mostrar respuesta y evidencia
Orquestación LangChain + Groq agent_core.py Interpretar intención, elegir tools, gestionar memoria
MCP FastMCP mcp_server.py Exponer tools personalizadas con contratos claros
Datos SQLite data/ Entregar información y ejecutar operaciones controladas
Memoria InMemorySaver agent_core.py Mantener contexto de la conversación por session_id

🛠️ Tecnologías Utilizadas

Tecnología Versión Propósito
Python 3.12.9+ Lenguaje base
Streamlit 1.28+ Interfaz web
LangChain 0.3+ Orquestación del agente
Groq - Modelo de lenguaje (llama-3.3-70b-versatile)
FastMCP 0.3+ Servidor MCP
SQLite 3.x Base de datos local
Pandas 2.0+ Procesamiento de datos
Pytest 8.0+ Pruebas unitarias
Pytest-Asyncio 0.23+ Pruebas asíncronas

🔧 Herramientas MCP

Tool Propósito Entrada Salida Riesgo
buscar_clientes Buscar clientes texto_busqueda, limite Lista de clientes Bajo
perfil_consumo_cliente Perfil de consumo cliente_id Métricas de consumo Bajo
clientes_alto_valor Clientes con alto gasto gasto_minimo, limite Top clientes Bajo
top_productos_vendidos Productos más vendidos limite, ordenar_por Ranking de productos Bajo
analisis_categoria Ventas por categoría categoria (opcional) Métricas por categoría Bajo
ventas_por_region Ventas por región region (opcional) Métricas por región Bajo
preferencia_metodo_pago Preferencias de pago region (opcional) Métricas de pago Bajo
calcular_nivel_cliente Clasificar cliente gasto_total, total_ordenes Nivel y recomendación Bajo

🧠 Memoria

  • Tipo: Corto plazo (InMemorySaver)
  • Session ID: Identificador único por conversación
  • Ventana: Últimos 6-10 mensajes
  • Limitación: La memoria se pierde al reiniciar el servidor

🔐 Secretos y Configuración

Variables de Entorno Requeridas

Variable Descripción Dónde obtenerla
GROQ_API_KEY API Key de Groq console.groq.com
GROQ_MODEL Modelo a usar llama-3.3-70b-versatile
MCP_SERVER_URL URL del MCP Server Local: http://127.0.0.1:8000/mcp

Configuración Local (.env)

  1. Copia el archivo de ejemplo:
cp .env.example .env
  1. Edita .env con tus valores:
GROQ_API_KEY=gsk_tu_api_key_aqui
GROQ_MODEL=llama-3.3-70b-versatile
MCP_SERVER_URL=http://127.0.0.1:8000/mcp

Configuración para Streamlit Cloud (Secrets)

En la interfaz de Streamlit Cloud, agrega estos secretos:

GROQ_API_KEY = "gsk_tu_api_key_aqui"
GROQ_MODEL = "llama-3.1-8b-instant"
MCP_SERVER_URL = "https://tu-mcp-server.onrender.com/mcp"

🚀 Instalación Local

  1. Clonar el repositorio
git clone https://github.com/systemyuri/agente-mcp-groq.git
cd agente-mcp-groq
  1. Crear y activar entorno virtual
python -m venv .venv
#source .venv/bin/activate  # Linux/Mac
.venv\Scripts\activate   # Windows
  1. Instalar dependencias
pip install -r requirements.txt
  1. Configurar variables de entorno
cp .env.example .env
# Edita .env con tu GROQ_API_KEY
  1. Preparar datos
# Coloca tus archivos CSV en la carpeta data/
python load_data.py
  1. Ejecutar el MCP Server (Terminal 1)
python mcp_server.py

Salida esperada:

🚀 Iniciando MCP Server...
   Base de datos: data/mcp_laboratorio.db
   ✅ Con validación de tipos para parámetros

📋 Tools disponibles:
   - buscar_clientes
   - perfil_consumo_cliente
   - clientes_alto_valor
   - top_productos_vendidos
   - analisis_categoria
   - ventas_por_region
   - preferencia_metodo_pago
   - calcular_nivel_cliente

🌐 Servidor HTTP escuchando en http://127.0.0.1:8000
   Endpoint MCP: http://127.0.0.1:8000/mcp
  1. Ejecutar Streamlit (Terminal 2)
streamlit run app_streamlit.py

🧪 Pruebas

El proyecto incluye pruebas unitarias para todas las herramientas MCP y el agente completo.

📊 Cobertura de Pruebas

Componente Pruebas Estado
Tools MCP 9 pruebas ✅ Todas pasan
Agente LangChain 5 pruebas ✅ Todas pasan
Conexión MCP 1 prueba ✅ Todas pasan
Total 15 pruebas 100% pasan

🔧 Pruebas de Herramientas MCP

Prueba Descripción Estado
test_buscar_clientes Búsqueda por región, nombre y validación de tipos
test_perfil_consumo_cliente Perfil de cliente existente e inexistente
test_clientes_alto_valor Filtrado por gasto mínimo y límite
test_top_productos_vendidos Orden por cantidad e ingresos
test_analisis_categoria Todas las categorías y específica
test_ventas_por_region Todas las regiones y específica
test_preferencia_metodo_pago Todos los métodos y por región
test_calcular_nivel_cliente Clasificación VIP, Premium, Regular
test_mcp Conexión al MCP Server

🧠 Pruebas del Agente

Prueba Descripción Estado
test_system_prompt Verifica que el prompt está definido
test_agent_creation Creación del agente LangChain
test_simple_query Consulta simple sin tools
test_tool_query Consulta que usa herramientas MCP
test_memory Memoria entre turnos de conversación
test_error_handling Manejo de errores y casos extremos

🚀 Ejecutar Pruebas

1. Instalar dependencias de pruebas

pip install pytest pytest-cov pytest-asyncio

2. Asegurar que el MCP Server está corriendo

# En una terminal separada
python mcp_server.py

3. Ejecutar todas las pruebas

python -m pytest tests/ -v --asyncio-mode=auto

4. Ejecutar pruebas con cobertura

python -m pytest tests/ -v --cov=. --cov-report=html --asyncio-mode=auto
# Abrir htmlcov/index.html en el navegador

5. Ejecutar pruebas específicas

# Solo herramientas MCP
python -m pytest tests/test_tools.py -v
# Solo agente
python -m pytest tests/test_agent.py -v --asyncio-mode=auto
# Solo conexión
python -m pytest tests/test_connection.py -v --asyncio-mode=auto

📊 Resultado Esperado


============================================= test session starts =============================================
collected 15 items
tests/test_agent.py::test_system_prompt PASSED                                                           [  6%]
tests/test_agent.py::test_agent_creation PASSED                                                          [ 13%]
tests/test_agent.py::test_simple_query PASSED                                                            [ 20%]
tests/test_agent.py::test_tool_query PASSED                                                              [ 26%]
tests/test_agent.py::test_memory PASSED                                                                  [ 33%]
tests/test_agent.py::test_error_handling PASSED                                                          [ 40%]
tests/test_connection.py::test_mcp PASSED                                                                [ 46%]
tests/test_tools.py::test_buscar_clientes PASSED                                                         [ 53%]
tests/test_tools.py::test_perfil_consumo_cliente PASSED                                                  [ 60%]
tests/test_tools.py::test_clientes_alto_valor PASSED                                                     [ 66%]
tests/test_tools.py::test_top_productos_vendidos PASSED                                                  [ 73%]
tests/test_tools.py::test_analisis_categoria PASSED                                                      [ 80%]
tests/test_tools.py::test_ventas_por_region PASSED                                                       [ 86%]
tests/test_tools.py::test_preferencia_metodo_pago PASSED                                                 [ 93%]
tests/test_tools.py::test_calcular_nivel_cliente PASSED                                                  [100%]
=========================================== 15 passed in 3.42s ===========================================

🐛 Solución de Problemas en Pruebas

Error Solución
ModuleNotFoundError: No module named 'langchain' Activar entorno virtual: .venvScriptsactivate
async def functions are not natively supported Instalar: pip install pytest-asyncio
MCP Server no detectado Ejecutar python mcp_server.py en otra terminal
Error de conexión Verificar URL en .env: MCP_SERVER_URL=http://127.0.0.1:8000/mcp

🌐 Despliegue

En Streamlit Community Cloud

  1. Sube el código a GitHub

git add .
git commit -m "feat: Asistente Comercial MCP con Groq"
git push origin main
  1. Ve a share.streamlit.io

  2. Conecta tu repositorio

    • Selecciona GitHub

    • Elige el repositorio y rama main

    • Archivo principal: app_streamlit.py

  3. Configura los Secretos
    En la sección "Secrets", agrega:

    
    GROQ_API_KEY = "gsk_tu_api_key_aqui"
    GROQ_MODEL = "llama-3.1-8b-instant"
    MCP_SERVER_URL = "https://tu-mcp-server.onrender.com/mcp"
    
  4. Despliega

    • Haz clic en "Deploy"

    • Espera ~5 minutos

    • ¡Obtendrás tu URL pública!

MCP Server Remoto

Opción 1: Render.com (Recomendado)

Crea render.yaml:


services:
  - type: web
    name: mcp-server
    env: python
    buildCommand: pip install -r requirements.txt
    startCommand: python mcp_server.py
    envVars:
      - key: GROQ_API_KEY
        sync: false

Opción 2: ngrok (Para pruebas rápidas)


# Terminal 1
python mcp_server.py
# Terminal 2 (nueva terminal)
ngrok http 8000
# Copia la URL https://xxxx.ngrok.io
# Actualiza MCP_SERVER_URL con esta URL + /mcp

📁 Estructura del Proyecto


agente_mcp_groq/
├── app_streamlit.py            # Interfaz web
├── agent_core.py               # Lógica del agente (Groq, MCP, memoria)
├── mcp_server.py               # Servidor MCP con 8 herramientas
├── load_data.py                # Script para cargar datos
├── check_db.py                 # Verificación de base de datos
├── test_connection.py          # Prueba de conexión MCP
├── requirements.txt            # Dependencias
├── README.md                   # Documentación
├── .gitignore                  # Archivos a ignorar
├── .env.example                # Ejemplo de variables de entorno
├── data/ # Datos
│ ├── clientes.csv
│ ├── ventas.csv
│ ├── productos.csv
│ ├── categorias.csv
│ └── metodos_pago.csv
├── tests/ # Pruebas unitarias
│ ├── __init__.py
│ ├── test_tools.py             # 8 pruebas de herramientas MCP
│ ├── test_agent.py             # 5 pruebas del agente
│ └── test_connection.py        # 1 prueba de conexión
└── .streamlit/
  └── secrets.toml.example      # Ejemplo de secretos

🔗 Enlaces

Producción y Repositorio

Documentación Oficial


👥 Equipo

  • Desarrollador: David Yurivilca

  • Curso: Estrategias de Integracion

  • Fecha de Entrega: 19/07/2026


📄 Licencia

MIT - Libre para uso educativo.


🙏 Agradecimientos

  • Groq por el modelo de lenguaje de alto rendimiento

  • LangChain por la orquestación del agente

  • FastMCP por el servidor de herramientas

  • Streamlit por la interfaz web

  • Guía del Curso por la estructura y requisitos

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选