185 lines
5.6 KiB
Text
185 lines
5.6 KiB
Text
|
|
#!/usr/bin/env nu
|
|||
|
|
# Demo 2: MCP + AI Integration - Rust Meetup 2025
|
|||
|
|
# Este script demuestra la integración con Model Context Protocol
|
|||
|
|
|
|||
|
|
print "🤖 Demo 2: MCP + AI Integration"
|
|||
|
|
print "================================"
|
|||
|
|
|
|||
|
|
# Preparar ambiente MCP
|
|||
|
|
print "\n🔧 Preparando ambiente MCP..."
|
|||
|
|
print "Verificando configuración de Claude Desktop..."
|
|||
|
|
|
|||
|
|
# Verificar configuración MCP
|
|||
|
|
let mcp_config_path = if ($env.OS | default "" | str contains "Windows") {
|
|||
|
|
$env.APPDATA + "/Claude/claude_desktop_config.json"
|
|||
|
|
} else if ($env.OS | default "" | str contains "Darwin") {
|
|||
|
|
$env.HOME + "/Library/Application Support/Claude/claude_desktop_config.json"
|
|||
|
|
} else {
|
|||
|
|
$env.HOME + "/.config/claude/claude_desktop_config.json"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print $"📁 Configuración MCP: ($mcp_config_path)"
|
|||
|
|
|
|||
|
|
# Mostrar configuración MCP de ejemplo
|
|||
|
|
print "\n📋 Configuración Claude Desktop (ejemplo):"
|
|||
|
|
let mcp_config = {
|
|||
|
|
mcpServers: {
|
|||
|
|
provisioning: {
|
|||
|
|
command: "python3"
|
|||
|
|
args: ["/ruta/completa/a/provisioning/mcp/server.py"]
|
|||
|
|
env: {
|
|||
|
|
PROVISIONING_PATH: "/usr/local/provisioning"
|
|||
|
|
OPENAI_API_KEY: "${OPENAI_API_KEY}"
|
|||
|
|
ANTHROPIC_API_KEY: "${ANTHROPIC_API_KEY}"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print ($mcp_config | to json)
|
|||
|
|
|
|||
|
|
# Simular interacción con Claude Desktop
|
|||
|
|
print "\n💬 Simulando conversación con Claude Desktop:"
|
|||
|
|
print "=============================================="
|
|||
|
|
|
|||
|
|
print "\n👤 Usuario:"
|
|||
|
|
print "\"Crea 3 servidores AWS con 4 CPU cada uno para un cluster Kubernetes de desarrollo. Necesito un master y dos workers.\""
|
|||
|
|
|
|||
|
|
sleep 2sec
|
|||
|
|
print "\n🤖 Claude (usando MCP):"
|
|||
|
|
print "Voy a crear esa infraestructura para ti. Usando el sistema de provisioning..."
|
|||
|
|
|
|||
|
|
# Mostrar herramientas MCP disponibles
|
|||
|
|
print "\n🛠️ Herramientas MCP disponibles:"
|
|||
|
|
let mcp_tools = [
|
|||
|
|
{ name: "provision_create_server", description: "Crear servidores de infraestructura" }
|
|||
|
|
{ name: "provision_ai_template", description: "Generar templates con AI" }
|
|||
|
|
{ name: "provision_query", description: "Consultar estado de infraestructura" }
|
|||
|
|
{ name: "provision_deploy_taskserv", description: "Desplegar servicios específicos" }
|
|||
|
|
{ name: "provision_cluster_create", description: "Crear clusters completos" }
|
|||
|
|
{ name: "provision_status", description: "Ver estado general" }
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
print ($mcp_tools | table)
|
|||
|
|
|
|||
|
|
# Simular ejecución de herramienta MCP
|
|||
|
|
sleep 1sec
|
|||
|
|
print "\n⚙️ Claude ejecuta: provision_create_server"
|
|||
|
|
print "Parámetros:"
|
|||
|
|
let ai_request = {
|
|||
|
|
description: "3 servidores AWS para cluster Kubernetes desarrollo"
|
|||
|
|
requirements: {
|
|||
|
|
count: 3
|
|||
|
|
cpu: 4
|
|||
|
|
purpose: "kubernetes"
|
|||
|
|
roles: ["master", "worker", "worker"]
|
|||
|
|
provider: "aws"
|
|||
|
|
environment: "development"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print ($ai_request | to json)
|
|||
|
|
|
|||
|
|
# Simular traducción a comandos
|
|||
|
|
sleep 1sec
|
|||
|
|
print "\n🔄 MCP traduce a comandos del sistema:"
|
|||
|
|
print "$ provisioning generate server --template aws-k8s-cluster --nodes 3 --cpu 4 --purpose development"
|
|||
|
|
print "$ provisioning server create --infra k8s-dev-cluster --wait"
|
|||
|
|
|
|||
|
|
# Simular respuesta exitosa
|
|||
|
|
sleep 2sec
|
|||
|
|
print "\n✅ Resultado:"
|
|||
|
|
let created_servers = [
|
|||
|
|
{
|
|||
|
|
hostname: "k8s-master-01"
|
|||
|
|
role: "master"
|
|||
|
|
instance_type: "t3.large"
|
|||
|
|
cpu: 4
|
|||
|
|
memory: "8GB"
|
|||
|
|
status: "running"
|
|||
|
|
public_ip: "203.0.113.10"
|
|||
|
|
}
|
|||
|
|
{
|
|||
|
|
hostname: "k8s-worker-01"
|
|||
|
|
role: "worker"
|
|||
|
|
instance_type: "t3.large"
|
|||
|
|
cpu: 4
|
|||
|
|
memory: "8GB"
|
|||
|
|
status: "running"
|
|||
|
|
public_ip: "203.0.113.11"
|
|||
|
|
}
|
|||
|
|
{
|
|||
|
|
hostname: "k8s-worker-02"
|
|||
|
|
role: "worker"
|
|||
|
|
instance_type: "t3.large"
|
|||
|
|
cpu: 4
|
|||
|
|
memory: "8GB"
|
|||
|
|
status: "running"
|
|||
|
|
public_ip: "203.0.113.12"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
print ($created_servers | table)
|
|||
|
|
|
|||
|
|
# Demostrar consulta inteligente
|
|||
|
|
print "\n💬 Segunda interacción - Consulta inteligente:"
|
|||
|
|
print "=============================================="
|
|||
|
|
|
|||
|
|
print "\n👤 Usuario:"
|
|||
|
|
print "\"¿Cuál es el estado actual de mi cluster? ¿Hay algún problema?\""
|
|||
|
|
|
|||
|
|
sleep 1sec
|
|||
|
|
print "\n🤖 Claude (usando MCP):"
|
|||
|
|
print "⚙️ Ejecutando: provision_query"
|
|||
|
|
|
|||
|
|
# Simular análisis inteligente
|
|||
|
|
sleep 1sec
|
|||
|
|
print "\n📊 Análisis del cluster:"
|
|||
|
|
print "✅ Todos los servidores están funcionando correctamente"
|
|||
|
|
print "✅ Conectividad de red OK"
|
|||
|
|
print "⚠️ Kubernetes aún no instalado - ¿quieres que lo instale?"
|
|||
|
|
print "💰 Costo actual: ~$0.35/hora ($252/mes)"
|
|||
|
|
print "📈 CPU utilización: 5% promedio (normal para cluster recién creado)"
|
|||
|
|
|
|||
|
|
# Demostrar automatización
|
|||
|
|
print "\n💬 Tercera interacción - Automatización:"
|
|||
|
|
print "======================================="
|
|||
|
|
|
|||
|
|
print "\n👤 Usuario:"
|
|||
|
|
print "\"Sí, instala Kubernetes y agrega youki como container runtime\""
|
|||
|
|
|
|||
|
|
print "\n🤖 Claude:"
|
|||
|
|
print "⚙️ Ejecutando: provision_deploy_taskserv"
|
|||
|
|
print "Instalando Kubernetes + youki..."
|
|||
|
|
|
|||
|
|
sleep 2sec
|
|||
|
|
print "\n✅ Servicios instalados:"
|
|||
|
|
let installed_services = [
|
|||
|
|
{
|
|||
|
|
service: "kubernetes"
|
|||
|
|
version: "v1.29.0"
|
|||
|
|
status: "running"
|
|||
|
|
nodes_ready: "3/3"
|
|||
|
|
}
|
|||
|
|
{
|
|||
|
|
service: "youki"
|
|||
|
|
version: "0.3.0"
|
|||
|
|
status: "active"
|
|||
|
|
runtime: "OCI compliant"
|
|||
|
|
}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
print ($installed_services | table)
|
|||
|
|
|
|||
|
|
print "\n🎯 Demo MCP completada!"
|
|||
|
|
print "⭐ Ventajas mostradas:"
|
|||
|
|
print " - Lenguaje natural → comandos estructurados"
|
|||
|
|
print " - Análisis inteligente del estado"
|
|||
|
|
print " - Automatización conversacional"
|
|||
|
|
print " - Integración seamless con herramientas existentes"
|
|||
|
|
|
|||
|
|
print "\n🔧 Para configurar MCP en tu sistema:"
|
|||
|
|
print "1. Instalar Claude Desktop"
|
|||
|
|
print "2. Configurar claude_desktop_config.json"
|
|||
|
|
print "3. Iniciar MCP server: python3 mcp/server.py"
|
|||
|
|
print "4. ¡Conversar con tu infraestructura!"
|