Ir al contenido

Autocompletado

Los clientes que admiten el autocompletado de MCP (VS Code, Claude) pueden sugerir valores mientras rellenas un argumento de un prompt o una variable de una plantilla de recurso: escribe we en containerId y el cliente ofrece web y db-web. El cliente envía completion/complete con lo que has escrito y los valores que ya has elegido; arcane-mcp responde con los valores de Arcane que encajan.

El servidor anuncia la capacidad completions solo cuando hay algo que completar (consulta Exclusiones).

Argumento o variableDóndeValores deQué se inserta
environmentIdtodos los prompts; todas las plantillas arcane://environment/{environmentId}/...environment.listEl ID del entorno (0 es el host local de Arcane); también se busca por nombre
containerIddiagnose_container; arcane://environment/{environmentId}/container/{containerId}container.listEl nombre del contenedor; su ID cuando escribes el principio del ID
projectIdupdate_project_images; arcane://environment/{environmentId}/project/{projectId}project.listEl ID del proyecto (Arcane solo encuentra un proyecto por su ID); también se busca por nombre
servicesupdate_project_imagesproject.runtime del projectId elegidoLos nombres de los servicios del proyecto, completando el último elemento de la lista separada por comas
imageIdsecurity_reportimage.listEl ID de la imagen (sha256:...); también se busca por etiquetas como nginx:1.27 y por el ID sin sha256:
volumeNamebackup_volumevolume.listEl nombre del volumen; los volúmenes anónimos (la etiqueta com.docker.volume.anonymous de Docker) van después de los que tienen nombre
serviceIdrollback_serviceswarm_service.listEl nombre del servicio de Swarm; su ID cuando escribes el principio del ID
severitysecurity_reportel conjunto fijo CRITICAL, HIGH, MEDIUM, LOW, UNKNOWN (sin llamar a Arcane)La severidad en mayúsculas, completando el último elemento de la lista

El texto libre (symptom) no se completa.

  • No se distingue entre mayúsculas y minúsculas. Primero van los valores que empiezan por lo que has escrito, luego aquellos cuyo ID, nombre o etiqueta empieza por ello y después los que simplemente lo contienen; dentro de cada grupo, en el orden en que los lista Arcane.
  • Se devuelven como mucho 100 valores (el límite de MCP), con total (cuántos encajan) y hasMore cuando se han dejado algunos fuera: sigue escribiendo para acotar la lista.
  • Solo se ofrecen valores que un prompt acepta (letras, dígitos y ._-:/@), así que prompts/get nunca rechaza una sugerencia.
  • En una lista (services, severity) se conservan los elementos que ya has escrito y no se vuelven a ofrecer: web, w se completa como web,worker.

Cuando el cliente envía los valores que ya has elegido (los argumentos de contexto de la petición), se usan: un contenedor, proyecto, imagen, volumen o servicio de Swarm se busca en el environmentId elegido, y services en el projectId elegido. Sin environmentId se usa el entorno configurado por defecto (ARCANE_ENVIRONMENT_ID), igual que en las acciones; sin projectId, services no ofrece nada.

El autocompletado ejecuta las acciones de lectura del catálogo igual que los recursos, con el cliente de Arcane del servidor: en modo HTTP cada clave de Arcane tiene su propio servidor, así que se te ofrece lo que tu clave puede ver. No hay un segundo camino HTTP hacia Arcane. Son lecturas, así que el modo de solo lectura y el modo seguro las mantienen, y se comportan igual en las tres superficies de herramientas.

Un argumento cuya acción está excluida (ARCANE_MCP_EXCLUDE_TOOLS) no se completa y la acción nunca se llama: excluye container.list y containerId no ofrece nada, mientras que environmentId se sigue completando. Tampoco se completa un prompt o una plantilla que el servidor no ofrece. Cuando no queda nada que completar, el servidor no anuncia la capacidad y completion/complete responde método no encontrado (-32601).

Cada lista se guarda 5 segundos por servidor (es decir, por clave de Arcane en modo HTTP): al escribir un valor se envía una petición a Arcane, no una por pulsación, y las peticiones que llegan a la vez por la misma lista comparten una sola llamada. Una llamada de autocompletado está limitada a 10 segundos (o a ARCANE_MCP_ACTION_TIMEOUT si es menor); si cierras antes el cuadro de sugerencias, la llamada termina igualmente y sirve a la siguiente petición.

Una sugerencia es una pista, así que un fallo de Arcane nunca rompe el formulario del cliente:

  • Arcane inalcanzable, una credencial rechazada (401, 403), un entorno desconocido (404), Swarm sin activar (409) o un tiempo agotado: una lista vacía, no un error. El fallo se guarda los mismos 5 segundos, así que no se pregunta a un Arcane que falla en cada pulsación.
  • Un nombre de prompt que el servidor no ofrece: error JSON-RPC -32602 (parámetros no válidos), igual que responde prompts/get.
  • Un argumento que nada completa, o una URI que no es una de las plantillas ofrecidas: una lista vacía.

Cada llamada a Arcane deja un registro en el registro de auditoría, msg=completion con surface=completion, tool=completion/complete, la acción y su resultado (ok o error); lo que escribes nunca se registra. Las respuestas desde la caché no dejan ninguno.