Hanoo MCP
Gestiona tu propio servidor Ubuntu para aplicaciones PHP
Documentación
Resumen
El Protocolo de Contexto de Modelos (MCP) permite que un asistente utilice herramientas que un servicio proporciona. El servidor MCP de Hanoo ofrece al asistente siete herramientas de solo lectura sobre tu organización, para que pueda responder basándose en lo que realmente está en ejecución, no en lo que supone. Actúa como la persona que creó el token, y nunca más allá de lo que esa persona puede ver.
Preguntas que puedes hacer
- "¿Cuáles de mis servidores no están respondiendo, y desde cuándo?"
- "¿Qué se ejecuta en web-1, y qué versiones de PHP están instaladas allí?"
- "¿Por qué falló el último despliegue de Shop?"
- "¿Qué aplicaciones siguen en PHP 8.2?"
1. Crear un token de API
- 1 Inicia sesión en el panel y abre API tokens, luego New token.
- 2 Ponle un nombre según dónde se usará — "Claude Code en mi portátil" — y elige cuándo expira: 7, 30 o 90 días.
- 3 Elige qué puede leer — servidores, aplicaciones, despliegues, operaciones — y si eso cubre todo lo que puedes ver o solo los servidores y aplicaciones que selecciones.
- 4 Críalo y cópialo. Se muestra una sola vez; Hanoo guarda solo una huella digital y no puede mostrarlo de nuevo.
Crear tokens requiere el permiso api_token.manage. Los propietarios lo tienen; un propietario puede otorgarlo a cualquier otra persona desde Team → Edit access.
2. Conectar tu asistente
Reemplaza hnmcp_… con tu token, o establece HANOO_API_TOKEN en tu entorno. Mantén los tokens fuera de los archivos que confirmas en el repositorio.
Claude Code
Añade el servidor una vez, para ti, desde la terminal:
terminal
claude mcp add --transport http hanoo https://mcp.hanoo.io/mcp \
--header "Authorization: Bearer hnmcp_…"
claude mcp list # hanoo: … ✔ Connected
.mcp.json — compartido con tu equipo; cada persona establece HANOO_API_TOKEN
{
"mcpServers": {
"hanoo": {
"type": "http",
"url": "https://mcp.hanoo.io/mcp",
"headers": {
"Authorization": "Bearer ${HANOO_API_TOKEN}"
}
}
}
}
Cursor
En .cursor/mcp.json en un proyecto, o ~/.cursor/mcp.json para cada proyecto:
.cursor/mcp.json
{
"mcpServers": {
"hanoo": {
"url": "https://mcp.hanoo.io/mcp",
"headers": {
"Authorization": "Bearer ${env:HANOO_API_TOKEN}"
}
}
}
}
VS Code
En .vscode/mcp.json. VS Code solicita el token una vez y lo almacena de forma segura:
.vscode/mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "hanoo-token",
"description": "Hanoo API token",
"password": true
}
],
"servers": {
"hanoo": {
"type": "http",
"url": "https://mcp.hanoo.io/mcp",
"headers": {
"Authorization": "Bearer ${input:hanoo-token}"
}
}
}
}
Cualquier otro cliente MCP
Apunta al endpoint a través de Streamable HTTP y envía el token como encabezado de portador. Para verificar un token manualmente:
terminal
curl -s https://mcp.hanoo.io/mcp \
-H "Authorization: Bearer $HANOO_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: tools/list" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{"_meta":{
"io.modelcontextprotocol/protocolVersion":"2026-07-28",
"io.modelcontextprotocol/clientCapabilities":{}}}}'
ChatGPT, Claude en la web, Claude Desktop y móvil
OAuth
Los clientes alojados pueden conectarse sin necesidad de pegar un token. Hanoo utiliza el descubrimiento OAuth 2.1, por lo que cada persona inicia sesión y aprueba solo el acceso que esa conexión necesita.
- 1
Añade un servidor MCP personalizado o conector en tu cliente y usa
https://mcp.hanoo.io/mcpcomo su URL. - 2 Elige OAuth o Sign in, si el cliente lo solicita. Hanoo se abre en tu navegador.
- 3 Inicia sesión, elige la organización, lecturas, servidores, aplicaciones y caducidad, luego aprueba. La conexión aparece en API tokens, donde puedes revocarla de inmediato.
Herramientas
Al asistente solo se le ofrecen las herramientas que su token permite. Las listas vienen una página a la vez: pasa next_cursor de vuelta como cursor para la siguiente.
| Herramienta | Qué lee | Token necesita |
|---|---|---|
| whoami | La organización, miembro y token bajo los que actúa esta conexión, y qué puede leer en este momento. | Cualquier token |
| list_servers | Servidores, más recientes primero: si el agente está respondiendo, sistema operativo, versión del agente, aplicaciones, cualquier operación en curso. | Servidores |
| get_server | Un servidor: hardware, versiones de PHP instaladas, CPU más reciente, uso de memoria y disco, y sus aplicaciones. | Servidores |
| list_applications | Aplicaciones, opcionalmente en un servidor: tipo, estado, servidor, dominio principal, versión de PHP. | Aplicaciones |
| get_application | Una aplicación: dominios y TLS, runtime de PHP, fuente (repositorio Git y rama, o paquete) y su último despliegue. | Aplicaciones (y Despliegues para el último despliegue) |
| list_deployments | Los despliegues Git de una aplicación: estado, commit, rama, tiempos, si falló, y el resultado de cada paso del pipeline — nunca su salida. | Despliegues |
| get_job | Una operación por su job_ id: qué hace, su estado, tiempos, un estado de fallo fijo y su historial. | Operaciones |
Seguridad
Un asistente es un nuevo tipo de llamador: lee todo lo que se le muestra, y puede ser dirigido por lo que lee. El servidor MCP está construido en torno a eso.
-
Solo lectura
Ninguna herramienta cambia nada. No hay herramienta para ejecutar un comando, desplegar, reiniciar o eliminar. -
Como tú, nunca más
Un token solo puede tener el acceso que tú tienes, y cada llamada se verifica contra tu acceso en ese momento. Si un propietario reduce tu acceso o te elimina, tus tokens se reducen o se detienen en su próxima llamada. -
Nunca un secreto
Valores de entorno; contraseñas SSH, claves públicas o privadas; claves de despliegue; nombres de usuario de bases de datos, contraseñas, detalles de conexión, sentencias SQL y resultados; tokens; y cargas útiles o salidas de trabajos sin procesar nunca se devuelven. -
Texto seguro y fallos
Los nombres, dominios y mensajes de commit se tratan como datos no confiables y se limpian de instrucciones ocultas y valores con forma de credenciales. Los errores de backend de formato libre nunca salen de Hanoo; el trabajo fallido se informa solo como operation_failed. -
Tokens en los que puedes confiar
Se muestran una vez, se almacenan solo como huella digital, siempre expiran, están limitados a lo que elijas y se revocan al instante desde API tokens. -
Todo queda registrado
Cada llamada aparece en el Registro de Auditoría con la persona y el token a través del cual llegó. Una página web no puede llamar al endpoint en absoluto.
Límites
Solicitudes
Alrededor de 60 por minuto por token. Más allá de eso: 429, con Retry-After.
Tamaño de solicitud
64 KB
Duración
Tokens de API: 7, 30 o 90 días. Acceso OAuth: 1 hora; conexión: hasta 90 días.
Tokens por persona
25 activos, por organización
Solución de problemas
401 invalid_token
El token falta, está mal escrito, revocado o caducado — o tu acceso ya no incluye tokens de API. Un cliente alojado debe iniciar sesión de nuevo; un cliente manual debe enviar Authorization: Bearer hnmcp_….
permission_denied de una herramienta
El token no incluye ese tipo de lectura. Crea uno que sí lo incluya; el acceso de un token no se puede cambiar después de crearse.
not_found de una herramienta
El servidor, aplicación u operación no existe, o está fuera de lo que este token puede ver.
403 origin_not_allowed
La solicitud provino de una página web. Usa un cliente de escritorio, editor o línea de comandos.
429 rate_limited
Espera el número de segundos en Retry-After y luego continúa.
404 o 405
Usa el endpoint exactamente — https://mcp.hanoo.io/mcp — y POST, que todo cliente MCP hace.