Traducción automática, no revisada por un hablante nativo. El inglés es la referencia.

API e integracionesEditar en GitHubFuente: docs/deploy/mcp-http.md

Ejecución de kshana-mcp por HTTP (autoalojado)

Aquí se omite un pasaje que nombra clientes de IA de terceros; está en docs/deploy/mcp-http.md en GitHub.

Kshana no aloja ningún endpoint. No existe un servidor kshana compartido al que apuntar un cliente. Usted lo ejecuta en su propia máquina, contenedor o proyecto en la nube, y es responsable de su control de acceso y de su coste. El servidor 0.40.0 es el de este repositorio: sus cifras llevan sus etiquetas VALIDATED o MODELLED exactamente igual que por stdio.

Los valores por defecto seguros#

Control Comportamiento
Dirección de enlace Solo bucle local (127.0.0.1, ::1). Un puerto solo (--http 8080) significa 127.0.0.1:8080.
Non-loopback Necesita --allow-remote y un token de portador en la variable de entorno KSHANA_MCP_HTTP_TOKEN (16 caracteres o más). Sin ambos, el servidor se niega a arrancar. Con ambos, imprime una advertencia de que está escuchando más allá de esta máquina.
Autenticación Authorization: Bearer <token> en cada petición cuando se ha fijado un token (también puede fijarse en el bucle local). Se compara en tiempo constante. Ausente o erróneo: 401.
Sistema de archivos Ninguno. Las herramientas de archivos IQ (iq_*) están desactivadas en modo HTTP diga lo que diga KSHANA_MCP_IQ_DIR; todas las demás herramientas reciben su escenario en línea y rechazan uno que nombre un archivo. Ningún argumento de herramienta lee ni escribe una ruta.
Tamaño del cuerpo --max-body-bytes, por defecto 5 MiB (el tope de escenario es 4 MiB). Por encima: 413, tanto si se declara la longitud como si el cuerpo se envía por fragmentos.
Tiempo de respuesta --request-timeout-secs, por defecto 120. Por encima: 408. Esto acota cuánto espera quien llama, no el trabajo: una ejecución ya en curso no puede detenerse, de modo que continúa tras el 408 y termina en segundo plano.
Concurrencia --max-concurrent, por defecto 8. Más allá, una petición recibe 503 con Retry-After de inmediato; ninguna se pone en cola.
Reserva de trabajo Cada llamada a una herramienta se ejecuta en un hilo bloqueante dentro de una reserva de --max-concurrent plazas, nunca en los trabajadores asíncronos, de modo que una ejecución larga no puede impedir que el servidor responda. Una plaza se libera solo cuando termina la propia ejecución, no cuando quien llama desiste: por tanto, las ejecuciones abandonadas no pueden acumularse más allá del tamaño de la reserva, y una llamada que encuentra la reserva llena se rechaza por ocupación.
Presupuesto de trabajo Un escenario que pide mucho más que los ejemplos incluidos se rechaza antes de ejecutarse: más de 1000 realizaciones Monte Carlo (runs), una malla de parámetros de más de 1000 nodos, más de 5000 ejecuciones miembro (nodos de la malla por realizaciones) o una malla temporal de más de 2 millones de épocas. El error nombra el campo que hay que reducir. El mismo presupuesto se aplica por stdio; la línea de comandos kshana no tiene ninguno.
CORS Nunca se envía ninguna cabecera Access-Control-*. Una petición que lleve una cabecera Origin se rechaza (403) salvo que se nombre con --allow-origin <scheme://host[:port]>; * no se acepta.
Cabecera Host Se comprueba frente a los nombres de bucle local, o a la dirección de enlace más cada --allowed-host. Detrás de un proxy o en la URL de una plataforma, pase --allowed-host your.domain. Cualquier otro caso: 403.
Sesiones Ninguna. Cada POST recibe una respuesta JSON; no se mantiene ninguna tabla de sesiones ni ningún flujo de eventos enviados por el servidor abierto.

kshana-mcp no termina TLS. Cuando sea accesible más allá de una sola máquina, ponga HTTPS por delante (el TLS de su plataforma o un proxy inverso) y mantenga secreto el token; un token de portador sobre HTTP plano puede leerse en la red.

Local#

kshana-mcp --http 127.0.0.1:8080

Configuración del cliente (un cliente por URL; añada la cabecera solo cuando se haya fijado un token):

{ "mcpServers": { "kshana": { "url": "http://127.0.0.1:8080/mcp",
    "headers": { "Authorization": "Bearer ${KSHANA_MCP_HTTP_TOKEN}" } } } }

Docker#

export KSHANA_MCP_HTTP_TOKEN="$(openssl rand -hex 32)"
docker run --rm -p 127.0.0.1:8080:8080 -e KSHANA_MCP_HTTP_TOKEN \
  ghcr.io/ashfordeou/kshana-mcp:0.40.0 \
  --http 0.0.0.0:8080 --allow-remote --allowed-host localhost:8080 --allowed-host 127.0.0.1:8080

Dentro del contenedor el servidor debe escuchar en 0.0.0.0, de modo que necesita --allow-remote y el token. Publicar el puerto como 127.0.0.1:8080:8080 lo mantiene en su máquina; quite el 127.0.0.1: solo cuando quiera exponerlo y entonces termine TLS por delante. Las plantillas de docker compose, Fly.io y Cloud Run están en mcp-http/.

Plantillas (las despliega usted; Kshana no ejecuta ninguna)#

Cada una ejecuta la imagen publicada, fija --allowed-host al nombre de host de la plataforma que usted sustituye en el archivo y se apoya en la plataforma para HTTPS.

Fije un límite de CPU y de memoria en la plataforma#

El tiempo de espera, la reserva y el presupuesto acotan cuánto trabajo se admite, pero una llamada admitida aún puede usar un núcleo durante mucho tiempo y un resultado grande puede usar cientos de megabytes. Ponga también un límite estricto al contenedor: las plantillas piden 2 CPU y 1 GiB (cpus y mem_limit en Compose, [[vm]] en Fly, resources.limits en Cloud Run). Mantenga --max-concurrent en el número de CPU o por debajo.

Lo que no es#

  • No es un servicio multiinquilino. Cualquiera que tenga el token ejecuta simulaciones en su hardware; no hay cuotas por usuario más allá de los límites anteriores.
  • Consultivo, no un equipo de navegación homologado: el operador sigue siendo responsable de la navegación. Los resultados del simulador son cifras modeladas o validadas para análisis, como en el resto de Kshana.