Node Lodge para agentes de IA (MCP)
Permita que Claude Code, Claude Desktop o su propio agente encuentre una GPU, lance una sesión con un límite de gasto estricto, se conecte por SSH y la detenga.
El servidor MCP de Node Lodge permite que un agente de IA alquile máquinas GPU por usted. El agente consulta las ofertas, verifica su saldo, lanza una sesión con un costo máximo, lee los datos de SSH y detiene la sesión cuando termina el trabajo. Cada sesión se paga con el crédito de su organización, y el agente nunca puede gastar más que los límites que usted fija en su clave de API.
Funciona con cualquier cliente compatible con el Model Context Protocol (MCP), incluidos Claude Code y Claude Desktop.
Antes de empezar
- Node.js 22 o posterior en la máquina que ejecuta el agente.
- Crédito en su organización. Consulte Facturación.
- Un par de claves SSH. Consulte Claves SSH.
1. Cree una clave para el agente
- En la consola, abra Keys y elija Create key.
- Póngale el nombre del agente, por ejemplo
claude-code. - Elija los alcances
workloads:read,workloads:writeybilling:read. - Defina sus Spending limits:
- Per session: lo máximo que puede costar una sesión.
- Total: lo máximo que la clave puede gastar en total.
- Calendar month y Sessions at a time son opcionales.
- Copie la clave. Se muestra una sola vez.
Node Lodge aplica estos límites en sus servidores, al presupuesto de cada sesión: una sesión que superaría alguno se rechaza antes de reservar o iniciar nada. Una sesión en curso cuenta por todo su presupuesto, una finalizada por lo que se le facturó. Puede bajar o subir los límites más tarde con Edit limits, tras un nuevo código de doble factor. Un límite más bajo se aplica a la siguiente sesión.
2. Descargue el servidor
mkdir -p ~/.nodelodge && cd ~/.nodelodge
curl -fsSLO https://nodelodge.com/downloads/nodelodge-mcp.mjs
curl -fsSLO https://nodelodge.com/downloads/nodelodge-mcp.mjs.sha256
sha256sum -c nodelodge-mcp.mjs.sha256
En macOS, use shasum -a 256 -c nodelodge-mcp.mjs.sha256 en la última línea. El archivo es un único script que se ejecuta con Node. Para actualizarlo, descárguelo de nuevo.
3. Conecte su cliente
Claude Code
claude mcp add nodelodge \
--env NODELODGE_API_KEY=nl_live_... \
-- node ~/.nodelodge/nodelodge-mcp.mjs
Ejecute claude mcp list para comprobar que nodelodge está conectado, o escriba /mcp en una sesión.
Claude Desktop
Abra Settings, luego Developer, luego Edit Config, y añada el servidor a claude_desktop_config.json:
{
"mcpServers": {
"nodelodge": {
"command": "node",
"args": ["/Users/you/.nodelodge/nodelodge-mcp.mjs"],
"env": { "NODELODGE_API_KEY": "nl_live_..." }
}
}
}
Use la ruta completa del archivo: en Windows, por ejemplo C:\\Users\\you\\.nodelodge\\nodelodge-mcp.mjs. Reinicie Claude Desktop. Las herramientas de Node Lodge aparecen en el menú de herramientas de un chat nuevo.
Por HTTP
Para los clientes que se conectan a una URL, inicie el servidor en modo HTTP en su propia máquina:
node ~/.nodelodge/nodelodge-mcp.mjs --http
Escucha en http://127.0.0.1:3101/mcp y no guarda ninguna clave: cada solicitud envía su propia clave como token Bearer. Con Claude Code:
claude mcp add --transport http nodelodge http://127.0.0.1:3101/mcp \
--header "Authorization: Bearer nl_live_..."
Defina NODELODGE_MCP_PORT para usar otro puerto. El servidor solo responde a las solicitudes dirigidas a esta máquina.
Herramientas
| Herramienta | Qué hace |
|---|---|
list_offers |
Lista las máquinas Node Lodge Secure con GPU, VRAM, CPU, RAM, disco, precio por hora en USD, país y ciudad. Filtra por modelo de GPU, número de GPU, VRAM y precio. |
get_balance |
Muestra el crédito disponible para una nueva sesión, lo retenido y lo adeudado. |
list_environments |
Lista los entornos que launch_session acepta en las máquinas Node Lodge Secure. |
launch_session |
Inicia una máquina con un presupuesto. max_cost_usd es obligatorio: se reserva sobre su crédito y la sesión nunca cuesta más. |
get_session |
Muestra el estado, el costo acumulado, el paso de arranque en curso mientras la máquina arranca (launch_step) y, cuando la máquina está en marcha, el comando ssh y cómo abrir JupyterLab. |
stop_session |
Detiene una sesión: la facturación se detiene y la máquina y su disco se eliminan. |
raise_session_budget |
Aumenta el presupuesto de una sesión en curso a un nuevo max_cost_usd, dentro de los límites de la clave. |
list_sessions |
Lista las sesiones activas o finalizadas. |
Cómo funciona max_cost_usd
launch_session recibe max_cost_usd, lo máximo que puede costar la sesión. Ese importe se reserva sobre su crédito al lanzar, como presupuesto de la sesión. La facturación sigue el tiempo real en que la máquina está en marcha, desde que está lista, y Budget Guard detiene la sesión antes de que se gaste el presupuesto: nunca se le factura más allá. Con duration_hours, la sesión también se detiene tras ese número de horas.
El lanzamiento se rechaza, antes de reservar o iniciar nada, cuando max_cost_usd supera su crédito disponible o un límite de la clave. Una sesión detenida antes de tiempo se factura por el tiempo que estuvo en marcha, y el resto del presupuesto se libera. Para que una sesión dure más, raise_session_budget reserva más, con las mismas comprobaciones.
launch_session también necesita la clave pública SSH que se instalará en la máquina y la dirección IPv4 pública desde la que se conectará (o un rango de hasta /24). Solo esa dirección puede llegar a la máquina por SSH. La clave pública abre solo esta sesión y no se guarda en su cuenta. environment_id es opcional, jupyterlab por defecto, el entorno de las máquinas de centro de datos.
JupyterLab
JupyterLab se ejecuta en la máquina y solo escucha en ella. Cuando la sesión está en marcha, get_session devuelve connect.jupyter: un ssh_command que abre la misma shell y lleva JupyterLab al puerto 8888 de su equipo, la url que debe abrir mientras esa conexión siga abierta y el token que se escribe en la página de inicio de sesión. El token es secreto: no lo ponga en direcciones ni en registros. connect.jupyter llega a la clave que lanzó la sesión, con workloads:write.
Recursos y prompts
Además de sus herramientas, el servidor ofrece recursos de solo lectura que un cliente puede adjuntar a una conversación:
| Recurso | Contenido |
|---|---|
nodelodge://offers |
Las máquinas reservables ahora, de la más barata a la más cara |
nodelodge://sessions |
Sus sesiones activas |
nodelodge://sessions/{session_id} |
Una sesión, con su costo acumulado y sus datos de SSH |
Y dos prompts, solicitudes predefinidas que fijan los pasos y las reglas:
launch_cheapest_gpu(model,max_cost_usd,min_vram_gbopcional): estima la VRAM que necesita el modelo e indica que es una estimación, busca la máquina más barata con esa cantidad, verifica su saldo, le pide confirmación y luego lanza con su máximo, sin subirlo nunca.stop_all_sessions: lista sus sesiones activas, advierte que detenerlas elimina cada máquina y su disco, le pide confirmación, las detiene y comprueba que no quede ninguna.
En Claude Desktop y Claude Code, los recursos aparecen en el menú de adjuntos (@ en Claude Code) y los prompts como comandos de barra, por ejemplo /mcp__nodelodge__stop_all_sessions en Claude Code.
Ejemplo completo
Usted le pide a Claude Code:
Busca la GPU más barata con al menos 48 GB de VRAM, ejecuta en ella mi script de fine-tuning dentro del presupuesto que te doy y detén la máquina al terminar. Mi clave pública está en ~/.ssh/id_ed25519.pub.
El agente entonces:
-
Llama a
list_offersconmin_vram_gb: 48y elige la oferta reservable más barata, por ejemplo una máquina 1× RTX A6000 en Montreal. -
Llama a
get_balancey comprueba que su crédito disponible cubre el presupuesto. -
Le pide confirmación y luego llama a
launch_session:{ "offer_id": "3f0c8f5e-8c3a-4f39-9a8e-2d9b4c1e7a10", "max_cost_usd": 20, "ssh_public_key": "ssh-ed25519 AAAAC3... you@laptop", "allowed_cidr": "203.0.113.7" }El presupuesto
max_cost_usdse reserva sobre su crédito y la máquina empieza a aprovisionarse. -
Llama a
get_sessionhasta queconnecttenga valor, luego ejecutassh ubuntu@198.51.100.4, copia el script, lo ejecuta y recupera los resultados. -
Llama a
stop_session. La sesión se factura por el tiempo en marcha y el resto del presupuesto se libera.
Si el agente hubiera fijado max_cost_usd por encima del límite por sesión de su clave, Node Lodge habría rechazado el lanzamiento con API_KEY_LIMIT, sin reservar ni iniciar nada.
Errores que puede ver el agente
| Código | Significado |
|---|---|
CREDIT_INSUFFICIENT |
max_cost_usd supera su crédito disponible. Añada crédito en Billing o baje el máximo. |
API_KEY_LIMIT |
El presupuesto superaría un límite de la clave. Baje max_cost_usd, suba el límite en Keys o espere a que termine una sesión. |
MAX_COST_EXCEEDED |
Las horas pedidas cuestan más que max_cost_usd. Acorte duration_hours o suba el máximo. |
API_KEY_NOT_ALLOWED |
A la clave le falta un alcance que la herramienta necesita. Cree una clave con los tres alcances indicados arriba. |
OFFER_UNAVAILABLE |
Otra persona tomó la máquina entretanto. Vuelva a llamar a list_offers. |
Buenas prácticas
- Dé a cada agente su propia clave con límites ajustados, para poder revocar una sin tocar las demás.
- Mantenga la clave fuera de archivos y repositorios compartidos. Claude Code la guarda en su configuración local.
- Pida al agente que confirme antes de lanzar una sesión o de subir
max_cost_usd. - Cada lanzamiento, aumento de presupuesto y detención realizados con la clave figuran en Activity, con la clave que los hizo.