DesarrolladoresServidor MCP

Servidor MCP de Hostwolf Apps

@hostwolf/apps-mcp permite que los asistentes de IA desplieguen y gestionen tus apps en Hostwolf Apps. Funciona con Claude, Cursor, VS Code y cualquier otro cliente compatible con el Model Context Protocol. Pide cosas como:

  • "¿Por qué falló el último despliegue de mi tienda?"
  • "Despliega github.com/acme/api en mi servidor de aplicaciones, escuchando en el puerto 8080."
  • "Pon STRIPE_KEY en la app api y vuelve a desplegarla."
  • "Crea una base de datos Postgres pequeña en Ámsterdam y conéctala a la tienda."
  • "Deja que la tienda escale a 4 copias, pero mantén el autoescalado por debajo de 40 $ al mes."
  • "Añade un disco de 50 GB con copias de seguridad a mi servidor de aplicaciones y dime antes el precio."

Configuración#

  1. Crea un token de API en la consola en Claves y tokens → Tokens de API. Marca Lectura, Escritura y Despliegue para un uso completo; añade Lectura de datos sensibles si el asistente debe leer registros y valores de variables.
  2. Conecta tu cliente. Puedes usar el servidor alojado en https://app.hostwolf.net/mcp (sin instalar nada) o ejecutarlo tú mismo desde la descarga (necesita Node.js 18+).

Alojado: https://app.hostwolf.net/mcp#

Nada que instalar, y siempre la última versión. Tu cliente envía tu token en cada petición; nunca lo guardamos.

Claude Code

claude mcp add --transport http hostwolf-apps https://app.hostwolf.net/mcp --header "Authorization: Bearer your_token"

Claude Desktop

Claude Desktop solo ejecuta servidores locales, así que se conecta al alojado mediante mcp-remote. Añade esto a claude_desktop_config.json (Ajustes → Desarrollador → Editar configuración):

{
  "mcpServers": {
    "hostwolf-apps": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://app.hostwolf.net/mcp", "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer your_token" }
    }
  }
}

Cursor

Añade esto a ~/.cursor/mcp.json, o a .cursor/mcp.json dentro de un proyecto:

{
  "mcpServers": {
    "hostwolf-apps": {
      "url": "https://app.hostwolf.net/mcp",
      "headers": { "Authorization": "Bearer your_token" }
    }
  }
}

VS Code

Añade esto a .vscode/mcp.json:

{
  "servers": {
    "hostwolf-apps": {
      "type": "http",
      "url": "https://app.hostwolf.net/mcp",
      "headers": { "Authorization": "Bearer your_token" }
    }
  }
}

Añade ?readonly=1 a la URL (https://app.hostwolf.net/mcp?readonly=1) para exponer solo las herramientas de lectura.

Ejecútalo tú mismo#

El mismo servidor como descarga. Se ejecuta en tu ordenador, así que tu token nunca sale de él.

Claude Code

claude mcp add hostwolf-apps -e HOSTWOLF_APPS_TOKEN=your_token -- npx -y https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz

Claude Desktop

Añade esto a claude_desktop_config.json (Ajustes → Desarrollador → Editar configuración):

{
  "mcpServers": {
    "hostwolf-apps": {
      "command": "npx",
      "args": ["-y", "https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz"],
      "env": { "HOSTWOLF_APPS_TOKEN": "your_token" }
    }
  }
}

Cursor

Añade esto a ~/.cursor/mcp.json, o a .cursor/mcp.json dentro de un proyecto:

{
  "mcpServers": {
    "hostwolf-apps": {
      "command": "npx",
      "args": ["-y", "https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz"],
      "env": { "HOSTWOLF_APPS_TOKEN": "your_token" }
    }
  }
}

VS Code

Añade esto a .vscode/mcp.json:

{
  "servers": {
    "hostwolf-apps": {
      "command": "npx",
      "args": ["-y", "https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz"],
      "env": { "HOSTWOLF_APPS_TOKEN": "your_token" }
    }
  }
}

Ajustes#

Para el servidor que ejecutas tú; el alojado acepta ?readonly=1 en su URL.

VariableSignificado
HOSTWOLF_APPS_TOKENObligatorio. Tu token de API de Claves y tokens.
HOSTWOLF_READONLY1 para ofrecer solo herramientas de lectura, que nunca cambian nada.
HOSTWOLF_APPS_URLURL de la consola (por defecto https://console.app.hostwolf.net).
HOSTWOLF_NO_UPDATE_CHECK1 para omitir la comprobación de versiones nuevas al iniciar.

Alojar tú mismo el servidor HTTP#

hostwolf-apps-mcp --http ejecuta el mismo endpoint Streamable HTTP que alojamos en app.hostwolf.net/mcp, para equipos que quieran el suyo propio. No guarda estado: cada petición lleva el token del propio usuario como Authorization: Bearer …, y no se almacena nada.

Node

npm install -g https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz
HOST=0.0.0.0 PORT=8791 hostwolf-apps-mcp --http
curl http://localhost:8791/mcp/health

Docker

cat > Dockerfile <<'EOF'
FROM node:22-alpine
RUN npm install -g --omit=dev https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz && npm cache clean --force
ENV HOST=0.0.0.0 PORT=8791
USER node
EXPOSE 8791
CMD ["hostwolf-apps-mcp", "--http"]
EOF
docker build -t hostwolf-apps-mcp .
docker run -d --name hostwolf-apps-mcp --memory 192m -p 127.0.0.1:8791:8791 hostwolf-apps-mcp

Ponlo detrás de tu proxy HTTPS y luego apunta los clientes a https://your-host/mcp como en la configuración alojada de arriba.

VariableSignificado
PORT / HOSTDirección de escucha (por defecto 127.0.0.1:8791).
MCP_PATHRuta del endpoint (por defecto /mcp; health check en /mcp/health).
HOSTWOLF_APPS_URLURL de la consola (por defecto https://console.app.hostwolf.net).
MCP_TRUST_CF_IP1 para limitar las peticiones según la cabecera CF-Connecting-IP. Ponlo solo cuando únicamente Cloudflare pueda llegar a tu proxy.

Límites: 300 peticiones por minuto por dirección de cliente y 180 por token, cuerpos de petición de 2 MB, 32 peticiones a la vez. El registro de acceso muestra la hora, la dirección, los primeros 8 caracteres de un SHA-256 del token, el nombre de la herramienta y el estado, nunca el token ni los argumentos de la herramienta.

Herramientas#

Aplicaciones:

  • list_apps: todas las apps con estado, dominios, origen, proyecto y entorno.
  • get_app: ajustes, servidores, últimos despliegues y nombres de variables.
  • get_app_logs: salida reciente del contenedor (el token necesita lectura de datos sensibles).
  • get_app_metrics: CPU y memoria.
  • create_app_from_git, create_app_from_dockerfile, create_app_from_image.
  • update_app: nombre, dominios, puertos, rama, comandos, health check.
  • deploy_app: hace el build y espera hasta unos 40 segundos el resultado.
  • restart_app, stop_app, delete_app.

Variables de entorno:

  • list_env_vars: los valores aparecen ocultos salvo que le pidas al asistente que los muestre.
  • set_env_vars: crea o actualiza varias a la vez, opcionalmente como secretos que no se pueden volver a leer.
  • delete_env_var.

Despliegues:

  • list_deployments: los despliegues recientes de una app, o lo que se está ejecutando ahora.
  • get_deployment: estado y el final del registro de build.
  • cancel_deployment.

Proyectos:

  • list_projects, create_project, create_environment, delete_project.

Servidores:

  • list_servers: tus servidores de aplicaciones y VPS con tamaño, ciudad, estado y precio.
  • get_server: qué se ejecuta en un servidor, sus dominios y su carga.
  • add_app_server, remove_app_server: ejecutan copias de una app en varios de tus servidores.
  • get_traffic: tráfico saliente de este mes y lo que lleva facturado, por servidor o para todo el equipo.
  • list_regions: ciudades con el precio por tamaño y dónde puede añadir servidores el autoescalado.

Volúmenes de almacenamiento (discos de tus servidores):

  • list_storage_volumes, get_storage_volume_price.
  • add_storage_volume, update_storage_volume (ampliar, copias de seguridad, crecimiento automático): el asistente muestra el precio y necesita tu confirmación.
  • detach_storage_volume, attach_storage_volume: mueven un volumen entre tus servidores de una misma ciudad.
  • list_storage_volume_backups, backup_storage_volume, restore_storage_volume, delete_storage_volume.

Volúmenes de apps:

  • list_volumes, add_volume, delete_volume.
  • backup_volume: una programación de copias de seguridad, una copia ahora mismo, o ambas.

Bases de datos gestionadas:

  • list_databases, get_database_plans.
  • get_database: estado y las URLs de conexión con pool y directa, con la contraseña oculta salvo que la pidas.
  • create_database: se factura por hora, así que necesita tu confirmación.
  • attach_database: guarda la URL con pool como DATABASE_URL y la directa como DATABASE_DIRECT_URL (o REDIS_URL) sin mostrarlas. Si la app ya usa esos nombres para otra cosa, no guarda nada y ofrece un nombre libre (env_key) u overwrite.
  • upgrade_database: un plan más grande; el asistente muestra el nuevo precio y necesita tu confirmación.
  • set_database_eviction_policy: qué hace Redis cuando se llena su memoria.
  • backup_database, delete_database.

Autoescalado y equipo:

  • get_autoscaling: política, copias activas, CPU y gasto de este mes.
  • set_autoscaling: activarlo o subir los límites necesita tu confirmación.
  • get_team.

Seguridad#

  • Las herramientas destructivas (detener, eliminar, quitar una copia de un servidor, eliminar variables, volúmenes o bases de datos) están marcadas con destructiveHint y se niegan a ejecutarse hasta que el asistente pase confirm: true, cosa que solo puede hacer después de que tú lo hayas aceptado. Lo mismo ocurre con las herramientas que cuestan dinero: crear o subir de plan una base de datos, añadir o ampliar un volumen de almacenamiento y subir los límites del autoescalado. Si se llaman sin confirm, responden con el precio, para que el asistente te lo muestre antes.
  • Las contraseñas de bases de datos y los valores de variables aparecen ocultos salvo que los pidas. attach_database entrega una URL a una app sin que el asistente llegue a verla.
  • HOSTWOLF_READONLY=1 (o ?readonly=1 en la URL alojada) quita todas las herramientas que escriben. Un token con solo el permiso Lectura hace lo mismo en el lado de la API.
  • El servidor alojado comprueba tu token con la consola, no guarda nada entre peticiones y nunca registra tokens ni argumentos de herramientas. Tiene límites de peticiones por dirección y por token.
  • Los tokens de API no pueden comprar ni cancelar servidores. Esas acciones solo funcionan en la consola.
  • Crea un token aparte solo para tu asistente y revócalo cuando quieras en Claves y tokens.

Actualizar#

El servidor alojado siempre está al día. En el que ejecutas tú, npx guarda el servidor en caché por su URL, así que nunca se actualiza solo. Cada versión tiene su propia URL, y el servidor consulta app.hostwolf.net/dl/index.json al arrancar. Si hay una versión más reciente, lo anota en el registro y lo añade al resultado de list_apps, para que tu asistente te avise. Para actualizar, cambia la versión en la URL de tu configuración y reinicia tu cliente.

Basado en el SDK#

Las herramientas usan @hostwolf/apps-sdk, que viene incluido en este paquete. Para integrar el servidor en tu propia app, instala ambos paquetes:

npm install https://app.hostwolf.net/dl/hostwolf-apps-sdk-0.2.1.tgz https://app.hostwolf.net/dl/hostwolf-apps-mcp-0.2.1.tgz
import { HostwolfApps } from '@hostwolf/apps-sdk';
import { createHostwolfAppsMcp } from '@hostwolf/apps-mcp/server';

Licencia#

MIT

¿Atascado, o te falta un endpoint? Escríbenos en app.hostwolf.net/contact o a [email protected].