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."
Ver también: SDK de TypeScript · Referencia de la API REST · Registro de cambios · Consigue un token de API
Configuración#
- 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.
- 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.tgzClaude 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.
| Variable | Significado |
|---|---|
HOSTWOLF_APPS_TOKEN | Obligatorio. Tu token de API de Claves y tokens. |
HOSTWOLF_READONLY | 1 para ofrecer solo herramientas de lectura, que nunca cambian nada. |
HOSTWOLF_APPS_URL | URL de la consola (por defecto https://console.app.hostwolf.net). |
HOSTWOLF_NO_UPDATE_CHECK | 1 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/healthDocker
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-mcpPonlo detrás de tu proxy HTTPS y luego apunta los clientes a https://your-host/mcp como en la configuración alojada de arriba.
| Variable | Significado |
|---|---|
PORT / HOST | Dirección de escucha (por defecto 127.0.0.1:8791). |
MCP_PATH | Ruta del endpoint (por defecto /mcp; health check en /mcp/health). |
HOSTWOLF_APPS_URL | URL de la consola (por defecto https://console.app.hostwolf.net). |
MCP_TRUST_CF_IP | 1 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 comoDATABASE_URLy la directa comoDATABASE_DIRECT_URL(oREDIS_URL) sin mostrarlas. Si la app ya usa esos nombres para otra cosa, no guarda nada y ofrece un nombre libre (env_key) uoverwrite.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
destructiveHinty se niegan a ejecutarse hasta que el asistente paseconfirm: 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 sinconfirm, 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_databaseentrega una URL a una app sin que el asistente llegue a verla. HOSTWOLF_READONLY=1(o?readonly=1en 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