Skip to content
⚡ Tenvo AI · EN VIVO · v0.16.26 · TLS · Certificados por dispositivo · AGPL-3.0 · PLAN GRATUITO · 30 DISPOSITIVOS · INFRA AUTOHOSPEDABLE · BYO API KEY · MCP PARA CLAUDE & CURSOR
Volver al blogTutorial

mcp remote desktop: cablear un servidor MCP — ejemplo práctico

Tenvo Editorial Team7 min de lectura
mcp remote desktop: cablear un servidor MCP — ejemplo práctico

Necesitas un canal confiable desde un plano de control MCP hacia una máquina remota, y las guías de una frase que encuentras dejan de ayudar cuando aparecen NAT, firewalls corporativos o diálogos de privacidad del sistema operativo.

Necesitas un canal confiable desde un plano de control MCP hacia una máquina remota y las guías de una frase que encuentras en línea dejan de ayudar cuando aparecen NAT, firewalls corporativos o diálogos de privacidad del sistema operativo. Esta guía acompaña a un ingeniero con conocimientos técnicos a través de un ejemplo concreto de cableado, muestra las comprobaciones operativas que deberías ejecutar y documenta los modos de fallo oscuros que la mayoría de los documentos omiten.

Qué cubre esta guía

  • Un camino rápido y de poco esfuerzo usando el relay gestionado de Tenvo (recomendado)
  • Un ejemplo práctico de cableado de un servidor MCP autoalojado en Ubuntu con TLS y un proxy inverso
  • Los modos de fallo que nadie documenta — tipos de NAT, portales cautivos, MTU, desajuste de certificados, suspensión y más — con mitigaciones concretas
  • Una lista de comprobación concisa para solucionar problemas con comandos que puedes ejecutar ahora

Camino rápido: el relay gestionado de Tenvo (recomendado)

Si tu requisito es simplemente alcanzar máquinas remotas de forma fiable, la opción más rápida y fiable es el relay gestionado de Tenvo. Tenvo ofrece clientes nativos para Windows, macOS y Linux, un cliente en navegador (beta pública) y un relay gestionado multi-región para que las sesiones hagan failover entre centros de datos. Los precios son directos: Free $0 / Lite $2.99/mo / Pro $7.99/mo. El relay gestionado elimina de tu responsabilidad el parcheo en guardia, la renovación de certificados y la custodia de claves — operaciones que a menudo cuestan más que una pequeña tarifa mensual cuando incluyes tiempo y riesgo.

Nota importante de seguridad: Tenvo usa TLS con certificados por dispositivo. Cuando se logra una conexión peer-to-peer directa, la sesión es de extremo a extremo entre los dos dispositivos. Si el tráfico cae a un relay, TLS se termina en el relay, por lo que quien opere el relay puede inspeccionar el tráfico de la sesión. Ese compromiso es la razón por la que recomendamos el relay gestionado como un valor pragmático por defecto, salvo que tengas requisitos escritos que prohíban infraestructura de terceros.

Cableado de un servidor MCP: ejemplo práctico (autoalojado)

Esta sección muestra los pasos concretos de cableado cuando eliges autoalojar un servidor MCP. Autoaloja solo cuando debas: mandato regulatorio, redes aisladas o reglas explícitas de residencia de datos. El ejemplo usa Ubuntu 22.04 LTS en un VPS pequeño (203.0.113.10), Caddy v2.6+ como proxy inverso TLS, y un agente MCP en una máquina remota detrás de NAT (192.168.1.42). Reemplaza nombres de host y tokens por tus valores.

# Diagram (text)
# Public VPS (203.0.113.10)
#   - Caddy reverse proxy (443)
#   - MCP control API (127.0.0.1:8443 behind proxy)
# Remote machine (behind NAT)
#   - mcp-agent initiates outbound TLS to mcp.example.com:443 and registers itself
#   - If direct P2P works, control traffic flows peer-to-peer; otherwise control flows via proxy

1) Obtén un nombre DNS estable y certificados: mcp.example.com debe apuntar a la IP pública de tu VPS (203.0.113.10). Para TLS usamos Caddy para TLS automático y proxy inverso. Caddy v2.6+ es una elección práctica porque automatiza Let's Encrypt y la configuración de HTTP/2/3.

# Caddyfile (example)
mcp.example.com {
    reverse_proxy 127.0.0.1:8443
}
# Run Caddy as a system service; Caddy will provision managed certificates

2) Ejecuta tu API de control MCP localmente en el VPS ligada a 127.0.0.1:8443. Mantén el plano de control en loopback para que solo el proxy inverso lo exponga públicamente.

# Example systemd unit (mcp-control.service)
[Unit]
Description=MCP control API
After=network.target

[Service]
ExecStart=/usr/local/bin/mcp-control --listen 127.0.0.1:8443 --db /var/lib/mcp/control.db
Restart=on-failure

[Install]
WantedBy=multi-user.target

3) Abre reglas de firewall en el VPS: permite 443/tcp entrante y el tráfico saliente necesario. Ejemplo mínimo con UFW:

sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status numbered

4) Configura el agente en la máquina remota para que inicie la conexión (importante: los agentes deberían ser salientes en la mayoría de los entornos). Ejemplo de configuración del agente (mcp-agent.conf):

{
  "server": "https://mcp.example.com",
  "register_token": "REPLACE_WITH_LONG_TOKEN",
  "heartbeat_interval": 30,
  "local_port": 5900
}

# Start agent as a system service on the remote machine so it survives reboots

5) Verifica TLS y el registro desde la máquina remota:

# Check DNS
dig +short mcp.example.com

# Verify TLS handshakes and served certificate
openssl s_client -connect mcp.example.com:443 -servername mcp.example.com

# Check agent logs (journalctl or the agent's log file)
journalctl -u mcp-agent -f

6) Confirma la conectividad desde el plano de control: la API de control debería listar el agente y mostrar su último latido. Pasos típicos: llama a la API de control localmente (loopback) e inspecciona el estado del dispositivo.

# Example local curl check on the VPS
curl --unix-socket /run/mcp-control.sock "http://localhost/api/v1/devices" | jq '.devices[] | {id,hostname,last_seen}'

Modos de fallo que nadie documenta

  • Bloqueo saliente por firewalls restrictivos: Muchos entornos corporativos solo permiten HTTP/HTTPS a través de un proxy explícito. Un agente que solo soporte TLS directo fallará. Mitigación: haz que tu agente soporte proxies HTTP CONNECT o usa el relay gestionado.
  • Portales cautivos: Redes de hotel o cafetería que requieren un navegador para aceptar términos rompen el registro automático. Detecta esto sondeando un endpoint HTTP conocido como http://detectportal.firefox.com/; si recibes un redirect HTML a una página de login trátalo como un portal cautivo.
  • NAT simétrico: NATs que reescriben asignaciones de puerto por destino rompen el hole punching UDP y algunas optimizaciones de relay. Resultado: fallback a relay TCP y mayor latencia. Mitigación: asegúrate de que tu relay soporte fallback por TCP y aumenta la frecuencia de keepalives para evitar la expiración de mapeos NAT.
  • DNS intermitente o DNS de horizonte dividido: Si el nombre del plano de control resuelve diferente dentro de una red corporativa o una caché DNS del ISP devuelve IPs antiguas, los agentes se conectarán al host equivocado o a un servidor expirado. Usa TTL bajos al hacer rollouts y monitoriza la propagación DNS.
  • Desajuste de certificado TLS o errores SNI: Un agente que valide el certificado fallará si falta SNI o el certificado no incluye el hostname. Verifica con openssl s_client -servername y con curl --resolve o --cacert durante las pruebas.
  • MTU y fragmentación en VPNs: Los agujeros de Path MTU pueden romper la negociación de protocolo, especialmente para UDP. Si los usuarios reportan handshakes parciales, intenta reducir el tamaño de la carga útil UDP o forzar TCP.
  • Permisos y privacidad del SO: macOS requiere permisos explícitos de grabación de pantalla y accesibilidad para control remoto; los prompts UAC de Windows bloquean la captura de entrada en algunos casos. No son bugs de red pero se manifiestan como sesiones inalcanzables.
  • Suspensión, arranque rápido y gestión de energía: Los laptops en suspensión no responden hasta que despiertan. Configura wake-on-LAN para servidores o usa heartbeats salientes persistentes para detectar sesiones obsoletas rápidamente.
  • Sobrecarga de relay y failover de una sola región: Si autoalojas un único relay sin failover multi-región, una caída de la región cloud o un DoS cortará el control. El relay gestionado multi-región de Tenvo está diseñado para reducir este riesgo.

Lista práctica de solución de problemas y comandos

  1. Confirma DNS y TLS: dig +short mcp.example.com; openssl s_client -connect mcp.example.com:443 -servername mcp.example.com
  2. Revisa logs del agente: journalctl -u mcp-agent -f o tail -F /var/log/mcp-agent.log — busca mensajes de registro y heartbeat
  3. Inspecciona conexiones activas: ss -tnp | grep 443 o netstat -anp | grep ESTAB para ver si el agente tiene un socket saliente establecido
  4. Prueba portal cautivo: curl -I http://detectportal.firefox.com/ — se espera un 200 con cuerpo simple; redirects indican portal cautivo
  5. Captura paquetes para una sesión que falla: sudo tcpdump -i any host mcp.example.com and port 443 -w capture.pcap — abre en Wireshark para inspeccionar estados del handshake TLS
  6. Confirma SNI y coincidencia de certificado: openssl s_client -connect mcp.example.com:443 -servername mcp.example.com | sed -n '1,80p'
  7. Verifica problemas de tipo NAT: Si tu agente puede ejecutar una prueba STUN, hazla. Si no, fuerza una prueba solo TCP para determinar si el hole punching UDP es el problema.
  8. Verifica permisos del SO: En macOS revisa System Settings → Privacy & Security → Screen Recording; en Windows revisa UAC y el manifiesto de la aplicación para requisitos de UIAccess

Cuándo autoalojar un servidor MCP

Autoalojar un servidor MCP tiene sentido solo cuando tienes un requisito escrito: una norma de cumplimiento prohíbe relays de terceros, una red aislada sin egress, o un requisito estricto de residencia de datos. Si no, cuenta el coste operacional: ciclo de vida de certificados, parcheo de SO y apps, custodia de claves, failover multi-región, monitorización, tiempo on-call y el coste de una caída en una sola región. Para una visión equilibrada y honesta, consulta nuestro artículo más amplio sobre Self-Hosted Remote Desktop: Why, How, and What Breaks.

Enlaces y lecturas relacionadas

Resumen — runbook y próximos pasos

Runbook resumido: comienza con el relay gestionado de Tenvo a menos que tengas una restricción documentada; si debes autoalojar, usa un proxy inverso (Caddy) para gestionar TLS, liga la API de control al loopback, exige conexiones salientes iniciadas por el agente y monitoriza los heartbeats. Cuando fallan las cosas, ejecuta la lista de comprobación DNS/TLS/logs del agente/captura de paquetes arriba. Los fallos oscuros — portales cautivos, NAT simétrico, permisos del SO y MTU — son comunes, repetibles y solucionables una vez que sabes cómo probarlos.

¿Listo para probar la vía rápida? Descarga los clientes Tenvo y prueba con nuestro relay gestionado: Download Tenvo. Si necesitas una guía de autoalojamiento más profunda, comienza con nuestra guía de self-hosted remote desktop y vuelve aquí para la lista de cableado y el playbook de modos de fallo.

Obtén Tenvo

¿Listo para probarlo?

Gratis para 30 dispositivos, sin tarjeta de crédito. En funcionamiento y conectado en dos minutos.