OffshoreVps
Tutoriales6 oct 20266 min de lecturaPor el equipo de OffshoreVps

Cómo alojar un servidor MCP en un VPS

Ejecuta un servidor remoto de Model Context Protocol: local frente a remoto, un ejemplo en Python, un servicio systemd, HTTPS con token y una lista de verificación de seguridad.

El Model Context Protocol (MCP) permite que los asistentes de IA llamen a herramientas y lean datos de servidores que tú ejecutas. Muchos servidores MCP se ejecutan en local, pero uno remoto en un VPS es útil cuando varias personas, herramientas o agentes necesitan compartir las mismas capacidades. Esta guía cubre las decisiones de configuración y una base segura.

Ventana de terminal en un VPS que muestra los comandos usados para alojar un servidor MCP, empezando por “sudo adduser --disabled-password --gecos "" mcp”
El tipo de comandos que ejecutarás en tu servidor en esta guía.

¿MCP local o remoto?

  • Local (stdio). El cliente inicia el servidor como proceso hijo en tu propia máquina. Es simple y privado, pero solo funciona en esa máquina.
  • Remoto (HTTP). El servidor se ejecuta en un VPS y los clientes se conectan por HTTPS. Esto es lo que alojas. Conviene para herramientas compartidas, trabajos de larga duración y herramientas que necesitan una IP fija.

Consulta la especificación MCP vigente para ver el transporte que admite tu cliente. Streamable HTTP es la opción habitual para servidores remotos. Los tamaños para cargas de trabajo típicas están en nuestra página de hosting para servidores MCP.

Paso 1: prepara el servidor

Usa un servidor Ubuntu LTS nuevo y los pasos de cómo proteger un VPS nuevo. Crea un usuario para el servicio.

sudo adduser --disabled-password --gecos "" mcp

Paso 2: ejecuta el servidor

Usa el SDK oficial o un servidor existente. Este ejemplo en Python usa el helper FastMCP del SDK de MCP:

sudo -iu mcp
python3 -m venv ~/venv && . ~/venv/bin/activate
pip install "mcp[cli]"
# server.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("demo", host="127.0.0.1", port=8000)

@mcp.tool()
def add(a: int, b: int) -> int:
    """Add two numbers."""
    return a + b

if __name__ == "__main__":
    mcp.run(transport="streamable-http")
Los pasos de esta guía en orden: 1. ¿MCP local o remoto?; 2. prepara el servidor; 3. ejecuta el servidor; 4. ejecútalo como servicio; 5. HTTPS y autenticación; 6. Lista de verificación de seguridad
Los pasos de esta guía, en orden.

Paso 3: ejecútalo como servicio

[Unit]
Description=MCP server
After=network-online.target

[Service]
User=mcp
WorkingDirectory=/home/mcp
ExecStart=/home/mcp/venv/bin/python server.py
Restart=always

[Install]
WantedBy=multi-user.target

Guárdalo como /etc/systemd/system/mcp.service y ejecuta sudo systemctl enable --now mcp.

Paso 4: HTTPS y autenticación

Un servidor MCP puede ejecutar código y leer datos, así que nunca lo dejes abierto. Ponlo detrás de un proxy inverso con TLS y exige un token:

mcp.example.com {
  @noauth not header Authorization "Bearer YOUR_LONG_RANDOM_TOKEN"
  respond @noauth 401
  reverse_proxy 127.0.0.1:8000
}

Para una configuración de producción, usa OAuth como describe la especificación de autorización de MCP en lugar de un único token compartido.

Lista de verificación de seguridad

  • Da a las herramientas el menor acceso que necesiten. No des acceso al shell a una herramienta salvo que ese sea el objetivo.
  • Guarda los secretos en archivos de entorno con chmod 600.
  • Registra las llamadas a las herramientas para poder ver qué pasó.
  • Mantén el puerto vinculado a 127.0.0.1 y expón solo el proxy.