Tutorial

Desplegar un servidor MCP autoalojado en VPS

Inteligencia Artificial8 min de lectura10 pasos

El protocolo MCP (Model Context Protocol) se ha consolidado como la capa estándar para conectar un agente de IA a tus herramientas: bases de datos, sistemas de archivos, APIs internas. Alojar este servidor en tu propio VPS te da control total sobre los datos procesados, la latencia y los costes. Esta guía cubre la instalación, la seguridad en producción, la integración con Claude Desktop y Cursor, y los errores más frecuentes.

Contenido· Por qué alojar tu propio servidor MCP1/11
  1. 01Por qué alojar tu propio servidor MCP
  2. 02Qué ganas con el autoalojamiento
  3. 03Requisitos previos antes de empezar
  4. 04Desplegar un servidor MCP en 10 pasos
  5. 05Activa siempre los registros de acceso de nginx para tu servidor
  6. 06Servidores MCP de código abierto recomendados
  7. 07Asegurar el servidor MCP en producción
  8. 08Integrar Claude Desktop y Cursor con tu servidor MCP
  9. 09MCP vs API REST vs WebSocket para agentes de IA
  10. 10Resolución de problemas: 4 errores frecuentes
  11. 11Hacia un entorno de IA completo en tu VPS

Por qué alojar tu propio servidor MCP

Los servicios MCP alojados en terceros introducen una dependencia externa: tus datos, prompts y contextos pasan por una infraestructura que no controlas. En un VPS, el servidor MCP funciona dentro de tu red, con tus reglas de acceso y tu cadena de confianza. Es la misma lógica que autoalojar un repositorio Git o un registro Docker: la autonomía tiene prioridad sobre la comodidad.

Qué ganas con el autoalojamiento

  • Confidencialidad de los datos: ningún contexto sale de tu infraestructura.
  • Latencia reducida: el servidor MCP y tu aplicación funcionan en la misma red o en VPS vecinos.
  • Personalización total: herramientas propias, conectores propietarios, entorno de ejecución a medida.
  • Coste predecible: una suscripción VPS fija, sin facturación por llamada.
  • Control de versiones: decides cuándo actualizar el servidor y sus dependencias.

Requisitos previos antes de empezar

Necesitas un VPS con acceso root, una distribución Linux reciente (Ubuntu 22.04 LTS o Debian 12 son recomendables), Node.js 18+ o Python 3.11+ según la implementación elegida, y un nombre de dominio apuntando a la IP de tu servidor. Un plan con al menos 1 vCPU y 2 GB de RAM es suficiente para un servidor MCP de uso moderado. Para cargas pesadas o varios servidores MCP en paralelo, planifica 2 vCPU y 4 GB.

Desplegar un servidor MCP en 10 pasos

  1. Actualizar el sistema e instalar Node.js

    Conéctate por SSH con tu clave y ejecuta apt update && apt upgrade -y. Instala Node.js desde el repositorio oficial NodeSource: curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && apt install -y nodejs. Verifica con node -v y npm -v.

  2. Crear un usuario dedicado

    Nunca ejecutes el servidor MCP como root. Crea un usuario de aplicación: useradd -m -s /bin/bash mcp && su - mcp. Todos los comandos posteriores se ejecutan bajo este usuario.

  3. Clonar e instalar el servidor MCP

    Elige tu implementación (ver la sección 'Servidores MCP de código abierto recomendados' más abajo). Para @modelcontextprotocol/server-filesystem: npm install -g @modelcontextprotocol/server-filesystem. Prueba localmente: npx @modelcontextprotocol/server-filesystem /tmp/test.

  4. Crear un archivo de servicio systemd

    Crea /etc/systemd/system/mcp-server.service con las directivas User=mcp, ExecStart=/usr/bin/npx @modelcontextprotocol/server-filesystem /home/mcp/data, Restart=always y Environment=NODE_ENV=production. Activa e inicia: systemctl enable --now mcp-server.

  5. Instalar nginx

    Nginx actúa como reverse proxy frente a tu servidor MCP. apt install -y nginx. Crea un vhost en /etc/nginx/sites-available/mcp con un location / que haga proxy_pass http://127.0.0.1:3000;. Activa: ln -s /etc/nginx/sites-available/mcp /etc/nginx/sites-enabled/ && nginx -t && systemctl reload nginx.

  6. Obtener un certificado TLS con Certbot

    apt install -y certbot python3-certbot-nginx && certbot --nginx -d tu-dominio.com. Certbot modifica automáticamente tu vhost nginx para redirigir HTTP a HTTPS y configura la renovación automática. Verifica la renovación: certbot renew --dry-run.

  7. Activar la autenticación Bearer

    Edita tu vhost nginx para requerir un token en el encabezado HTTP: if ($http_authorization != 'Bearer TU_TOKEN_SECRETO') { return 401; }. Genera un token fuerte con openssl rand -hex 32.

  8. Configurar el cortafuegos

    Cierra todos los puertos excepto 22, 80 y 443: ufw allow 22/tcp && ufw allow 80/tcp && ufw allow 443/tcp && ufw enable. El puerto interno del servidor MCP (3000 por defecto) nunca debe estar expuesto directamente.

  9. Probar el endpoint con curl

    curl -H 'Authorization: Bearer TU_TOKEN_SECRETO' https://tu-dominio.com/health. Debes obtener un JSON de estado. Una respuesta 401 indica un token incorrecto; una respuesta 502 indica que el servicio systemd no está funcionando.

  10. Activar los registros de acceso de nginx

    Añade a tu vhost: access_log /var/log/nginx/mcp_access.log; error_log /var/log/nginx/mcp_error.log warn;. Estos registros son esenciales para detectar llamadas no autorizadas o bucles de peticiones.

Activa siempre los registros de acceso de nginx para tu servidor

Un servidor MCP recibe llamadas máquina a máquina: sin registros, no puedes detectar intentos de acceso no autorizados ni errores de integración. Configura también log_format para registrar el encabezado Authorization truncado (los primeros 8 caracteres son suficientes para identificar el origen sin exponer el token completo).

Servidores MCP de código abierto recomendados

  • @modelcontextprotocol/server-filesystem — acceso controlado al sistema de archivos, lectura y escritura de archivos locales.
  • @modelcontextprotocol/server-git — clone, log, diff, commit a través de un repositorio local.
  • @modelcontextprotocol/server-fetch — delega las peticiones HTTP salientes al servidor MCP.
  • @modelcontextprotocol/server-postgres — conexión a una base de datos PostgreSQL: consultas SELECT, esquema, describe table.
  • @modelcontextprotocol/server-playwright — control de un navegador Chromium headless desde el agente.
  • mcp-server-sqlite (comunidad) — alternativa ligera para bases de datos SQLite locales.
  • mcp-obsidian (comunidad) — acceso a un vault de Obsidian, útil para bases de conocimiento en Markdown.

Asegurar el servidor MCP en producción

Un servidor MCP expuesto en Internet es una superficie de ataque. Cuatro medidas son innegociables antes de conectar un cliente de IA a este servidor en producción.

Autenticación por token Bearer. Introduce un token único por cliente en el encabezado Authorization. Revoca inmediatamente un token comprometido y genera uno nuevo con openssl rand -hex 32.

Rate-limiting en nginx. Añade en tu vhost: limit_req_zone $binary_remote_addr zone=mcp:10m rate=30r/m; limit_req zone=mcp burst=10 nodelay;.

HTTPS obligatorio y HSTS. Tras instalar Certbot, añade en el bloque server HTTPS: add_header Strict-Transport-Security "max-age=31536000" always;.

Rotación de tokens. Programa una rotación cada 90 días mediante cron o tu herramienta de gestión de secretos.

Integrar Claude Desktop y Cursor con tu servidor MCP

Una vez que el servidor está en línea y asegurado, la conexión desde un cliente de IA lleva menos de dos minutos.

Claude Desktop. Abre ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows). Añade una entrada en la clave mcpServers:

{
  "mcpServers": {
    "mi-vps": {
      "url": "https://tu-dominio.com",
      "headers": {
        "Authorization": "Bearer TU_TOKEN_SECRETO"
      }
    }
  }
}

Reinicia Claude Desktop. El servidor aparece en la lista de herramientas disponibles.

Cursor. En los ajustes (Cursor > Settings > MCP), haz clic en 'Añadir servidor', elige el tipo HTTP, introduce la URL y añade el encabezado Authorization.

MCP vs API REST vs WebSocket para agentes de IA

Desplace la tabla

CriterioMCPAPI RESTWebSocket
Modelo de comunicaciónLlamadas de herramientas tipadas, descubrimiento dinámico del esquemaSolicitud/respuesta HTTP sin estado, contrato OpenAPICanal bidireccional persistente, eventos en tiempo real
Integración nativa con LLMNativa: Claude, Cursor, Cline, Continue leen el esquema MCP directamenteRequiere un wrapper de function-calling o un pluginRequiere un adaptador en el lado del agente
Complejidad de despliegueBaja: un proceso Node/Python, un vhost nginxBaja a media: framework REST estándarMedia a alta: gestión de conexiones, reconexión, estado
Adecuado paraHerramientas locales, acceso a archivos, bases de datos, automatización de agentesIntegraciones de terceros, webhooks, microservicios existentesNotificaciones push, colaboración en tiempo real, streaming
Versionado y evoluciónEsquema declarado en el servidor, autodescubierto por el clienteVersionado explícito en la URL o el encabezadoProtocolo de aplicación a gestionar manualmente

Resolución de problemas: 4 errores frecuentes

1. MCP transport error: Failed to fetch
Este mensaje aparece en Claude Desktop o Cursor cuando el cliente no puede llegar a la URL configurada. Causas frecuentes: el servicio systemd no está funcionando, nginx no se ha recargado tras modificar el vhost, o un cortafuegos bloquea el puerto 443.

2. Connection refused on 127.0.0.1:3000
El servidor MCP no se inició o se bloqueó al arrancar. Consulta los registros systemd: journalctl -u mcp-server -n 50.

3. Request timed out after 30000ms
El servidor responde pero demasiado lento. Verifica el tamaño del directorio o si el disco está lleno (df -h). Aumenta el timeout de nginx como último recurso: proxy_read_timeout 120s;.

4. 401 Unauthorized sistemático
El token enviado por el cliente no coincide con el esperado por nginx. Verifica la exactitud del token en la configuración del cliente.

Hacia un entorno de IA completo en tu VPS

Un servidor MCP es un componente entre muchos en un entorno de IA autoalojado. En el mismo VPS, puedes ejecutar un modelo local a través de Ollama, una base de datos vectorial como Qdrant o Chroma, y un orquestador como n8n o Flowise. ServOrbit ofrece plantillas VPS listas para usar para estos entornos, instalables en pocos clics desde la Marketplace, en infraestructura alojada en centros de datos europeos con IPv4 dedicada y acceso root.

Su servidor MCP merece una infraestructura fiable

Despliegue su servidor MCP en un VPS ServOrbit: recursos dedicados, IPv4 fija, snapshots bajo demanda. Desde 99 DH/mes.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva