provisioning-outreach/presentations/rust-laspalmas-250926/demos/02-mcp-ai-demo.nu

185 lines
No EOL
5.6 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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!"