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. 1 Inicia sesión en el panel y abre API tokens, luego New token.
  2. 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. 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. 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. 1 Añade un servidor MCP personalizado o conector en tu cliente y usa https://mcp.hanoo.io/mcp como su URL.
  2. 2 Elige OAuth o Sign in, si el cliente lo solicita. Hanoo se abre en tu navegador.
  3. 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.

HerramientaQué leeToken necesita
whoamiLa organización, miembro y token bajo los que actúa esta conexión, y qué puede leer en este momento.Cualquier token
list_serversServidores, más recientes primero: si el agente está respondiendo, sistema operativo, versión del agente, aplicaciones, cualquier operación en curso.Servidores
get_serverUn servidor: hardware, versiones de PHP instaladas, CPU más reciente, uso de memoria y disco, y sus aplicaciones.Servidores
list_applicationsAplicaciones, opcionalmente en un servidor: tipo, estado, servidor, dominio principal, versión de PHP.Aplicaciones
get_applicationUna 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_deploymentsLos 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_jobUna 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.