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
[](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
[](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_
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues