Skip to main content
Glama
systemyuri

MCP Orquestacion de Agentes

by systemyuri
README.md
ο»Ώ# MCP Orquestacion de Agentes
# 🧠 MCP - Orquestación de Agentes con FastMCP y Groq

## CreaciΓ³n del primer flujo de orquestaciΓ³n/integraciΓ³n de capacidades en un sistema de agentes

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tu-usuario/MCP-Orquestacion-Agentes/blob/main/notebooks/PlantillaMCPMultiFuenteFastMCPLangChainOpenAI-david-yurivilca.ipynb)

---

## πŸ“‹ INFORMACIΓ“N GENERAL

| Campo | Valor |
|-------|-------|
| **TΓ­tulo** | CreaciΓ³n del primer flujo de orquestaciΓ³n/integraciΓ³n de capacidades en un sistema de agentes |
| **Curso** | CERTI AI ARCHITECT ONLINE 2026 II LIMA |
| **Docente** | IGNACIO ALEXIS ZAMBRANO CARRILLO |
| **Autor** | David Yurivilca |
| **Fecha** | Julio 2026 |
| **InstituciΓ³n** | BSG Institute |

---

## 🎯 OBJETIVO

DiseΓ±ar, construir y orquestar un sistema de agentes que integra mΓΊltiples capacidades utilizando el **Model Context Protocol (MCP)** como estΓ‘ndar de comunicaciΓ³n, demostrando:

- βœ… IdentificaciΓ³n de capacidades de negocio
- βœ… DiseΓ±o de herramientas (tools) MCP
- βœ… ImplementaciΓ³n con FastMCP
- βœ… OrquestaciΓ³n con LangChain + Groq
- βœ… Trazabilidad y seguridad

---

## πŸ“Š CONTEXTO DEL NEGOCIO

**E-commerce de productos alimenticios en Argentina**

El dataset simula las operaciones de una empresa de e-commerce, permitiendo:

- AnΓ‘lisis de clientes por regiΓ³n (6 regiones argentinas)
- EvaluaciΓ³n de productos y categorΓ­as (8 categorΓ­as)
- Estudio de mΓ©todos de pago (5 mΓ©todos)
- IdentificaciΓ³n de oportunidades comerciales

### πŸ“ˆ Datos disponibles

| Tabla | Registros | DescripciΓ³n |
|-------|-----------|-------------|
| `clientes` | 326 | Datos demogrΓ‘ficos de clientes |
| `ventas` | 3,029 | Transacciones completas |
| `productos` | 38 | CatΓ‘logo de productos |
| `categorias` | 8 | ClasificaciΓ³n de productos |
| `metodos_pago` | 5 | Medios de pago disponibles |

---

## πŸ› οΈ TECNOLOGÍAS UTILIZADAS

| TecnologΓ­a | PropΓ³sito |
|------------|-----------|
| **Python 3.10+** | Lenguaje principal |
| **FastMCP** | Framework para servidores MCP |
| **LangChain 1.0+** | OrquestaciΓ³n de agentes |
| **LangGraph** | Backend de agentes con estado |
| **Groq (LLaMA 3.3 70B)** | Modelo LLM con tool calling |
| **SQLite** | Base de datos local |
| **Google Colab** | Entorno de ejecuciΓ³n |

---

## πŸš€ ARQUITECTURA DEL SISTEMA

```txt
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                              USUARIO FINAL                                  β”‚
β”‚                     (InteractΓΊa en lenguaje natural)                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          AGENTE LANGCHAIN                                   β”‚
β”‚                     (Orquestador + Razonamiento)                            β”‚
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚  β”‚  1. Recibe la pregunta del usuario                              β”‚        β”‚
β”‚  β”‚  2. Interpreta la intenciΓ³n usando Groq (LLaMA 3.3 70B)         β”‚        β”‚
β”‚  β”‚  3. Aplica el System Prompt (polΓ­ticas y reglas)                β”‚        β”‚
β”‚  β”‚  4. Selecciona la(s) herramienta(s) necesaria(s)                β”‚        β”‚
β”‚  β”‚  5. Ejecuta el loop de orquestaciΓ³n                             β”‚        β”‚
β”‚  β”‚  6. Genera respuesta final con evidencia                        β”‚        β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       MCP CLIENT (LangChain Adapter)                        β”‚
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”        β”‚
β”‚  β”‚  β€’ Conecta al servidor MCP vΓ­a HTTP                             β”‚        β”‚
β”‚  β”‚  β€’ Descubre herramientas disponibles                            β”‚        β”‚
β”‚  β”‚  β€’ Ejecuta llamadas a herramientas (tool calls)                 β”‚        β”‚
β”‚  β”‚  β€’ Gestiona la comunicaciΓ³n con el servidor MCP                 β”‚        β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                         MCP SERVER (FastMCP)                                β”‚
β”‚                                                                             β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”       β”‚
β”‚  β”‚  HERRAMIENTAS (TOOLS) EXPUESTAS                                  β”‚       β”‚
β”‚  β”‚                                                                  β”‚       β”‚
β”‚  β”‚  πŸ”Ή buscar_clientes          πŸ”Ή perfil_consumo_cliente           β”‚       β”‚
β”‚  β”‚  πŸ”Ή clientes_alto_valor      πŸ”Ή top_productos_vendidos           β”‚       β”‚
β”‚  β”‚  πŸ”Ή analisis_categoria       πŸ”Ή ventas_por_region                β”‚       β”‚
β”‚  β”‚  πŸ”Ή preferencia_metodo_pago  πŸ”Ή calcular_nivel_cliente           β”‚       β”‚
β”‚  β”‚                                                                   β”‚      β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚      β”‚
β”‚  β”‚  β”‚   βœ… ValidaciΓ³n de parΓ‘metros (tipos y lΓ­mites)            β”‚  β”‚      β”‚
β”‚  β”‚  β”‚   βœ… Manejo de errores (try/except)                        β”‚  β”‚      β”‚
β”‚  β”‚  β”‚   βœ… Consultas SQL parametrizadas (seguridad)              β”‚  β”‚      β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚       β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                  β”‚
                                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          SQLite DATABASE                                      β”‚
β”‚                                                                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”           β”‚
β”‚  β”‚  CLIENTES   β”‚  β”‚   VENTAS    β”‚  β”‚  PRODUCTOS  β”‚  β”‚ CATEGORIAS  β”‚           β”‚
β”‚  β”‚  326 reg.   β”‚  β”‚ 3,029 reg.  β”‚  β”‚  38 reg.    β”‚  β”‚   8 reg.    β”‚           β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚                                                                               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                                                              β”‚
β”‚  β”‚ METODOS_PAGOβ”‚                                                              β”‚
β”‚  β”‚   5 reg.    β”‚                                                              β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                                              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
```


---

## πŸ”§ TOOLS IMPLEMENTADAS

| Tool | PropΓ³sito | Riesgo |
|------|-----------|--------|
| `buscar_clientes` | Buscar clientes por nombre, apellido o regiΓ³n | Bajo |
| `perfil_consumo_cliente` | Perfil completo de consumo de un cliente | Bajo |
| `clientes_alto_valor` | Identificar clientes con alto gasto | Bajo |
| `top_productos_vendidos` | Productos mΓ‘s vendidos | Bajo |
| `analisis_categoria` | AnΓ‘lisis de ventas por categorΓ­a | Bajo |
| `ventas_por_region` | Resumen de ventas por regiΓ³n | Bajo |
| `preferencia_metodo_pago` | Preferencias de mΓ©todos de pago | Bajo |
| `calcular_nivel_cliente` | Clasificar clientes (VIP, Premium, Regular) | Bajo |

---

## πŸ“‹ GUÍA DE USUARIO PASO A PASO

### πŸ”§ PRERREQUISITOS

1. **Cuenta de Google** (para acceder a Colab)
2. **Cuenta en Groq** (para obtener API Key gratuita)
   - Registrar en: https://console.groq.com/
   - Generar API Key en el dashboard

### πŸš€ EJECUCIΓ“N EN GOOGLE COLAB

#### Paso 1: Abrir el notebook en Colab

**OpciΓ³n A - Desde el repositorio:**
```bash
# Clonar el repositorio
git clone https://github.com/tu-usuario/MCP-Orquestacion-Agentes.git

# O abrir directamente en Colab:
# https://colab.research.google.com/github/tu-usuario/MCP-Orquestacion-Agentes/blob/main/notebooks/PlantillaMCPMultiFuenteFastMCPLangChainOpenAI-david-yurivilca.ipynb
```

**OpciΓ³n B - Subir manualmente:**

1. Descargar el archivo .ipynb
2. Ir a https://colab.research.google.com/
3. Click en "Subir" β†’ Seleccionar el archivo

#### Paso 2: Configurar la API Key de Groq

En la **Fase 3**, el notebook solicitarΓ‘ la API Key:
```python
# Busca esta celda y ejecΓΊtala
GROQ_API_KEY: Β·Β·Β·Β·Β·Β·Β·Β·Β·Β·  # Ingresa tu API Key aquΓ­
```

**ΒΏDΓ³nde obtenerla?**
    
1.  Ve a [https://console.groq.com/](https://console.groq.com/)
2.  Inicia sesiΓ³n con tu cuenta
3.  Ve a "API Keys" en el menΓΊ lateral
4.  Click en "Create API Key"
5.  Copia la clave generada
    

* * *

#### Paso 3: Subir los archivos CSV

En la **Fase 3**, el notebook mostrarΓ‘ un botΓ³n para subir archivos:

1.  Haz clic en "Choose Files"
    
2.  Selecciona los 5 archivos CSV:
    
    -   `clientes.csv`
        
    -   `ventas.csv`
        
    -   `productos.csv`
        
    -   `categorias.csv`
        
    -   `metodos_pago.csv`
        

[https://via.placeholder.com/600x200?text=Upload+CSV+Files](https://via.placeholder.com/600x200?text=Upload+CSV+Files)

* * *

#### Paso 4: Ejecutar el notebook secuencialmente

El notebook estΓ‘ organizado en **11 fases**. Ejecuta cada celda en orden:

| Fase | Celdas | QuΓ© hace | Tiempo estimado |
| --- | --- | --- | --- |
| **Fase 0-2** | 1-6 | DiseΓ±o y planificaciΓ³n | 5 min |
| **Fase 3** | 7-10 | Carga de datos a SQLite | 3 min |
| **Fase 4** | 11-19 | Pruebas de consultas SQL | 5 min |
| **Fase 5** | 20-22 | CreaciΓ³n del MCP Server | 2 min |
| **Fase 6** | 23 | Levantar el servidor | 1 min |
| **Fase 7** | 24-25 | Descubrir y probar tools | 3 min |
| **Fase 8** | 26 | Definir System Prompt | 1 min |
| **Fase 9** | 27-30 | Crear el agente con Groq | 2 min |
| **Fase 10** | 31-37 | Ejecutar pruebas | 10 min |
| **Fase 11** | 38-39 | EvaluaciΓ³n y limpieza | 2 min |

* * *

#### Paso 5: Verificar el servidor MCP

En la **Fase 6**, verΓ‘s un mensaje como este:
```txt
βœ… MCP Server activo!
   URL: http://127.0.0.1:8000/mcp
   PID: 12345
   Log: /content/mi_mcp_server.log
```

**Si ves este mensaje, el servidor estΓ‘ funcionando correctamente.** πŸŽ‰

* * *

#### Paso 6: Ejecutar las pruebas

En la **Fase 10**, verΓ‘s preguntas de ejemplo:
```python
# Prueba 1: Producto mΓ‘s vendido
resultado = await consultar_agente(
    "ΒΏCuΓ‘l es el producto mΓ‘s vendido en cantidad?"
)
```
*** Resultado Esperado ***
```txt
πŸ“ RESPUESTA FINAL
El producto mΓ‘s vendido en cantidad es el de Hamburgesas congeladas, 
con un total de 382 unidades vendidas y $3,438 de ingresos totales.
```

**Resultado esperado:**

```text

πŸ“ RESPUESTA FINAL
El producto mΓ‘s vendido en cantidad es el de Hamburgesas congeladas, 
con un total de 382 unidades vendidas y $3,438 de ingresos totales.
```
* * *

### πŸ“ EJEMPLOS DE PREGUNTAS PARA PROBAR

#### BΓ‘sicas (1 tool)

```text

"ΒΏCuΓ‘l es el producto mΓ‘s vendido?"
"Busca clientes de la regiΓ³n Patagonia"
"Dame el perfil del cliente Dan Parkin (ID: 4)"
"ΒΏQuΓ© categorΓ­a de productos genera mΓ‘s ingresos?"
```
#### Intermedias (2-3 tools)

```text

"Identifica los 5 clientes que mΓ‘s han gastado, dime su regiΓ³n y clasifica su nivel"
"ΒΏCuΓ‘nto vendimos en la regiΓ³n Buenos Aires?"
"ΒΏQuΓ© mΓ©todo de pago es el mΓ‘s utilizado por los clientes?"
```

#### Avanzadas (5+ tools) - DesafΓ­o

```text
Realiza un anΓ‘lisis completo de la regiΓ³n Patagonia:
1. ΒΏCuΓ‘ntos clientes hay en Patagonia?
2. ΒΏCuΓ‘les son los 3 productos mΓ‘s vendidos en Patagonia?
3. ΒΏQuΓ© categorΓ­a genera mΓ‘s ingresos en Patagonia?
4. ΒΏQuΓ© mΓ©todo de pago prefieren los clientes de Patagonia?
5. ΒΏQuΓ© recomendaciones darΓ­as para aumentar las ventas en esta regiΓ³n?
```
* * *

### ❓ SOLUCIΓ“N DE PROBLEMAS COMUNES

#### Error: "GROQ\_API\_KEY no configurada"

```bash
# AsegΓΊrate de haber ejecutado la celda que solicita la API Key
# Si no funciona, reinicia el runtime y vuelve a ejecutar
```

#### Error: "El servidor no iniciΓ³"

```bash
# Verifica que la base de datos se creΓ³ correctamente
!ls -la /content/mcp_laboratorio.db
# Verifica que el archivo del servidor existe
!ls -la /content/mi_mcp_server.py
# Revisa el log del servidor
!cat /content/mi_mcp_server.log
```

#### Error: "Puerto 8000 ocupado"

```bash

# Libera el puerto y reinicia
!fuser -k 8000/tcp 2>/dev/null || true
```

#### Error en las pruebas SQL

```bash
# Verifica que los archivos CSV se subieron correctamente
# Ejecuta la Fase 3 nuevamente
```
* * *

## πŸ“Š RESULTADOS DEL LABORATORIO

| MΓ©trica | Valor |
| --- | --- |
| Capacidades identificadas | 8 |
| Tools implementadas | 8 |
| Pruebas SQL exitosas | 8/8 |
| Pruebas manuales exitosas | 8/8 |
| Pruebas del agente exitosas | 7/7 |
| Criterios de evaluaciΓ³n | 8/8 (100%) |

### Principales hallazgos de negocio

| Hallazgo | Valor |
| --- | --- |
| **Producto mΓ‘s vendido** | Hamburgesas congeladas (382 unidades) |
| **CategorΓ­a con mΓ‘s ingresos** | CarnicerΓ­a ($27,615 - 27.58%) |
| **RegiΓ³n con mΓ‘s ventas** | Buenos Aires ($35,820 - 1,041 Γ³rdenes) |
| **MΓ©todo de pago mΓ‘s usado** | Mercado Pago (28.79%) |
| **Cliente con mayor gasto** | Pinchas Stollsteiner ($760) |

* * *

## πŸ”’ MEDIDAS DE SEGURIDAD

| Medida | ImplementaciΓ³n |
| --- | --- |
| **SQL Injection** | βœ… Consultas parametrizadas con `?` |
| **ExposiciΓ³n de SQL** | βœ… No se expone SQL libre al LLM |
| **ValidaciΓ³n de tipos** | βœ… `asegurar_int()` convierte y valida |
| **LΓ­mites de resultados** | βœ… `limite` acotado (1-25, 1-50, 1-20) |
| **Solo lectura** | βœ… Todas las tools usan `SELECT` |
| **Manejo de errores** | βœ… Try/except en `ejecutar_sql` |

* * *

## πŸ“ ESTRUCTURA DE ARCHIVOS

```text
πŸ“‚ MCP-Orquestacion-Agentes/
β”‚
β”œβ”€β”€ πŸ“„ README.md                               # Este archivo
β”œβ”€β”€ πŸ“„ requirements.txt                         # Dependencias
β”œβ”€β”€ πŸ“„ .env.example                             # Variables de entorno
β”‚
β”œβ”€β”€ πŸ“‚ notebooks/
β”‚   └── πŸ“„ PlantillaMCPMultiFuenteFastMCPLangChainOpenAI-david-yurivilca.ipynb
β”‚
β”œβ”€β”€ πŸ“‚ datasets/
β”‚   β”œβ”€β”€ πŸ“„ clientes.csv                         # 326 clientes
β”‚   β”œβ”€β”€ πŸ“„ ventas.csv                           # 3,029 transacciones
β”‚   β”œβ”€β”€ πŸ“„ productos.csv                        # 38 productos
β”‚   β”œβ”€β”€ πŸ“„ categorias.csv                       # 8 categorΓ­as
β”‚   └── πŸ“„ metodos\_pago.csv                     # 5 mΓ©todos de pago
β”‚
└── πŸ“‚ docs/
    β”œβ”€β”€ πŸ“„ guia-usuario.md                      # GuΓ­a detallada (este documento)
    └── πŸ“„ arquitectura.md                      # ExplicaciΓ³n tΓ©cnica
```
* * *

## πŸ“¦ INSTALACIΓ“N LOCAL (OPCIONAL)

Si deseas ejecutar localmente en lugar de Colab:

```bash

# Clonar el repositorio
git clone https://github.com/tu-usuario/MCP-Orquestacion-Agentes.git
cd MCP-Orquestacion-Agentes
# Crear entorno virtual
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate   # Windows
# Instalar dependencias
pip install -r requirements.txt
# Configurar variables de entorno
cp .env.example .env
# Editar .env con tu GROQ_API_KEY
# Ejecutar el notebook
jupyter notebook notebooks/
```
* * *

## πŸ“„ requirements.txt

```txt

fastmcp>=0.1.0
langchain>=1.0.0
langchain-mcp-adapters>=0.1.0
langchain-groq>=1.0.0
pandas>=2.0.0
sqlite3
jupyter>=1.0.0
```

* * *

## πŸ“„ .env.example

```bash
# Groq API Configuration
GROQ_API_KEY=tu_api_key_aqui
GROQ_MODEL=llama-3.3-70b-versatile
# Opciones de modelo alternativas:
# GROQ_MODEL=llama-3.1-8b-instant
# GROQ_MODEL=mixtral-8x7b-32768
# GROQ_MODEL=gemma2-9b-it
```
* * *

## 🧠 APRENDIZAJES CLAVE

1.  **MCP estandariza la conectividad** - Un servidor MCP puede servir a mΓΊltiples agentes
    
2.  **La orquestaciΓ³n es responsabilidad del agente** - MCP conecta, el agente decide
    
3.  **Las tools deben ser atΓ³micas** - Una tool = una capacidad de negocio
    
4.  **La seguridad es por capas** - Server valida, orquestador controla, prompt guΓ­a
    
5.  **La trazabilidad es fundamental** - Ver quΓ© tools usΓ³ el LLM y por quΓ©
    
6.  **Groq es una alternativa viable** - RΓ‘pido, econΓ³mico y con tool calling
    



---

## πŸ“‹ GUÍA DE USUARIO ADICIONAL PARA COLAB

### πŸ”— Enlace directo para abrir en Colab

En el README, el badge de Colab ya estΓ‘ incluido:

```markdown
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tu-usuario/MCP-Orquestacion-Agentes/blob/main/notebooks/PlantillaMCPMultiFuenteFastMCPLangChainOpenAI-david-yurivilca.ipynb)
```

### ⚠️ IMPORTANTE PARA COLAB

1. **Runtime**: AsegΓΊrate de usar un runtime con GPU habilitada
   - Runtime β†’ Change runtime type β†’ T4 GPU (recomendado)

2. **Tiempo de ejecuciΓ³n**: El notebook completo toma ~30-40 minutos

3. **Guardar progreso**: Colab guarda automΓ‘ticamente en tu Drive
   - Archivo β†’ Guardar una copia en Drive

4. **ReconexiΓ³n**: Si se desconecta, vuelve a ejecutar desde la Fase 3
   - Las variables se reinician al reconectar

5. **Costos**: Groq es gratuito, pero verifica tu lΓ­mite de uso
   - Gratis: 30 requests/minuto

* * *




## πŸ“š REFERENCIAS

### DocumentaciΓ³n oficial

-   [Model Context Protocol - Specification](https://modelcontextprotocol.io/specification/)
    
-   [Model Context Protocol - Architecture](https://modelcontextprotocol.io/docs/learn/architecture)
    
-   [FastMCP Documentation](https://github.com/jlowin/fastmcp)
    
-   [LangChain MCP Adapters](https://docs.langchain.com/oss/python/langchain/mcp)
    
-   [LangGraph Overview](https://docs.langchain.com/oss/python/langgraph/overview)
    
-   [Groq Documentation](https://console.groq.com/docs)
    

### Material del curso

-   PDF: Estrategias de IntegraciΓ³n CERTI AI ARCHITECT ONLINE 2026 II LIMA
    
-   PDF: GuΓ­a TeΓ³rica - OrquestaciΓ³n de MCP con Agentes
    

* * *

## πŸ“ NOTAS FINALES

### Sobre el uso de Groq vs OpenAI

Este laboratorio fue adaptado para usar **Groq** en lugar de OpenAI debido a:

-   βœ… Tier gratuito generoso para desarrollo educativo
    
-   βœ… Inferencia ultrarrΓ‘pida
    
-   βœ… Excelente soporte para tool calling
    
-   βœ… Buen rendimiento en espaΓ±ol
    

### Sobre el dataset

El dataset fue diseΓ±ado para simular un e-commerce real con:

-   DistribuciΓ³n geogrΓ‘fica realista (6 regiones argentinas)
    
-   Variedad de categorΓ­as de productos alimenticios
    
-   MΓ©todos de pago comunes en LatinoamΓ©rica
    
-   Volumen de datos adecuado para anΓ‘lisis (3,029 transacciones)
    

* * *

## πŸ‘€ DATOS DEL AUTOR

| Campo | Valor |
| --- | --- |
| **Nombre** | David Yurivilca |
| **Curso** | CERTI AI ARCHITECT ONLINE 2026 II LIMA |
| **InstituciΓ³n** | BSG Institute |
| **Fecha de entrega** | Julio 2026 |

* * *

## πŸ“„ LICENCIA

Este proyecto es de uso educativo para el curso **CERTI AI ARCHITECT ONLINE 2026 II LIMA** de **BSG Institute**.

* * *

<div align="center">

**πŸ“Œ "No se trata de dar 'acceso a todo' al LLM.**  
**Se trata de exponer las capacidades mΓ­nimas necesarias,**  
**bajo permisos explΓ­citos, con herramientas bien descritas,**  
**evidencia verificable, acciones controladas y trazabilidad completa."**

* * *

⭐ **Si este proyecto te ha sido útil, ‘no olvides darle una estrella en GitHub!** ⭐

</div>

* * *

_VersiΓ³n 1.0 - Julio 2026_