Laboratorio MCP: Multi-MCP con Gateway
Integrantes: Samuel Corrales y Camilo Valencia
Este proyecto implementa una arquitectura de múltiples servidores MCP (Model Context Protocol) conectados a través de un Gateway, permitiendo que Claude Desktop acceda a herramientas de diferentes servidores a través de una única interfaz.
📋 Descripción
El proyecto consta de tres componentes principales:
- MCP Ventas (Node.js/TypeScript): Servidor que expone herramientas relacionadas con ventas
- MCP Pedidos (Python): Servidor que expone herramientas relacionadas con pedidos
- MCP Gateway (Node.js/TypeScript): Gateway que integra ambos servidores y los expone a Claude Desktop
🏗️ Arquitectura
Claude Desktop (stdio)
↓
MCP Gateway
↙ ↘
MCP Ventas MCP Pedidos
(Node/TS) (Python)
↓ ↓
PostgreSQL Database🔧 Requisitos Previos
- Node.js: 18.x o superior
- Python: 3.11 o superior
- PostgreSQL: 12 o superior (local o Docker)
- Claude Desktop: Instalado y configurado
- Sistema Operativo: Linux, macOS, o Windows con WSL
📦 Instalación
1. Clonar o Descargar el Proyecto
cd mcp-lab-project2. Configurar la Base de Datos
Opción A: PostgreSQL con Docker
docker run --name mcp-postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=mcp_lab \
-p 5432:5432 \
-d postgres:15Opción B: PostgreSQL Local
Asegúrate de que PostgreSQL esté corriendo y crea la base de datos:
psql -U postgres -c "CREATE DATABASE mcp_lab;"3. Cargar Datos de Ejemplo
psql -U postgres -d mcp_lab -f sql/setup_database.sql4. Configurar Variables de Entorno
MCP Ventas
cd mcp-ventas-node
cp .env.example .env
# Editar .env con tus credenciales de PostgreSQLMCP Pedidos
cd ../mcp-pedidos-py
cp .env.example .env
# Editar .env con tus credenciales de PostgreSQL5. Instalar Dependencias
MCP Ventas (Node.js)
cd mcp-ventas-node
npm install
npm run buildMCP Pedidos (Python)
cd ../mcp-pedidos-py
python3 -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
pip install -r requirements.txtMCP Gateway
cd ../mcp-gateway
npm install
npm run build🚀 Ejecución
Probar Servidores Individualmente
Servidor de Ventas
cd mcp-ventas-node
npm startServidor de Pedidos
cd mcp-pedidos-py
source venv/bin/activate
python server.pyEjecutar el Gateway
cd mcp-gateway
npm start⚙️ Configuración en Claude Desktop
- Abrir Claude Desktop
- Ir a Settings → Developer → Edit Config
- Agregar la siguiente configuración:
{
"mcpServers": {
"mcp-gateway": {
"command": "node",
"args": [
"/ruta/absoluta/al/proyecto/mcp-gateway/dist/index.js"
],
"env": {}
}
}
}Nota: Reemplazar /ruta/absoluta/al/proyecto/ con la ruta completa al proyecto en tu sistema.
- Reiniciar Claude Desktop
- Verificar en Settings → Developer que el servidor aparezca como "connected"
🛠️ Herramientas Disponibles
Herramientas de Ventas (prefijo ventas_)
ventas_total_mes_anterior
Calcula el total de ventas del mes anterior completo.
Ejemplo de uso en Claude:
¿Cuánto vendimos el mes pasado?ventas_por_dia
Devuelve el total de ventas por día de los últimos n días (por defecto 30).
Parámetros:
n(opcional): Número de días a consultar
Ejemplo de uso en Claude:
Muéstrame las ventas de los últimos 15 díasHerramientas de Pedidos (prefijo pedidos_)
pedidos_estado_por_id
Obtiene el estado de un pedido específico por su ID.
Parámetros:
id: ID del pedido a consultar
Ejemplo de uso en Claude:
¿Cuál es el estado del pedido #5?pedidos_crear
Crea un nuevo pedido en el sistema.
Parámetros:
cliente: Nombre del clientemonto: Monto del pedido
Ejemplo de uso en Claude:
Crea un pedido para el cliente "Empresa XYZ" por $15000pedidos_listar_por_estado
Lista todos los pedidos con un estado específico.
Parámetros:
estado(opcional): Estado de los pedidos (pendiente, procesando, completado, cancelado)
Ejemplo de uso en Claude:
Muéstrame todos los pedidos pendientes🔍 Troubleshooting
El Gateway no se conecta en Claude Desktop
- Verificar que las rutas en el config sean absolutas
- Verificar logs en
gateway_mcp.log - Asegurarse de que ambos servidores backend compilan correctamente
Errores de conexión a PostgreSQL
- Verificar que PostgreSQL esté corriendo:
pg_isready- Verificar credenciales en archivos
.env
- Verificar que la base de datos
mcp_labexiste:
psql -U postgres -l | grep mcp_labLas herramientas no aparecen en Claude
- Reiniciar Claude Desktop completamente
- Verificar en Settings → Developer que el servidor esté "connected"
- Revisar logs del gateway para errores
Errores al compilar TypeScript
# Limpiar y reinstalar
rm -rf node_modules package-lock.json dist
npm install
npm run build📝 Logs y Debugging
Cada componente genera sus propios logs:
- Gateway:
mcp-gateway/gateway_mcp.log - Ventas:
mcp-ventas-node/ventas_mcp.log - Pedidos:
mcp-pedidos-py/pedidos_mcp.log
Los logs incluyen:
- Timestamps de cada operación
- Conexiones/desconexiones de clientes
- Llamadas a herramientas
- Errores y excepciones
👥 Autor
Laboratorio realizado por Samuel Corrales y Camilo Valencia.
📄 Licencia
Este proyecto es de código abierto y está disponible bajo la Licencia MIT.
