Arcane MCP

Servidor MCP para interactuar con la API de Arcane

Documentación

arcane-mcp

Un servidor MCP que expone las capacidades de gestión de Docker de Arcane a agentes de IA mediante el Protocolo de Contexto de Modelos. Construido con FastMCP.

Cubre la API principal de gestión de Docker: contenedores, imágenes, volúmenes, redes, proyectos Compose, registros, escaneo de vulnerabilidades, asignaciones de puertos, webhooks, gestión del sistema, actualizador, actividades/eventos y gestión de entornos.

125 herramientas en 14 módulos.

Instalación

No está en PyPI. Instala directamente desde GitHub:

# pip
pip install git+https://github.com/MikeCase/arcane-mcp.git

# uv
uv tool install git+https://github.com/MikeCase/arcane-mcp.git

# or clone and install locally
git clone https://github.com/MikeCase/arcane-mcp.git
cd arcane-mcp
uv sync

Configuración

Establece estas variables de entorno (o colócalas en un archivo .env en el directorio de trabajo):

ARCANE_API_KEY=arc_your_api_key_here
ARCANE_BASE_URL=http://localhost:3552

OpenCode

Añade a tu opencode.json:

{
  "mcp": {
    "arcane-docker": {
      "type": "local",
      "command": ["arcane-mcp"],
      "env": {
        "ARCANE_API_KEY": "arc_your_key_here",
        "ARCANE_BASE_URL": "http://localhost:3552"
      }
    }
  }
}

O establece las variables de entorno globalmente y omítelas de la configuración.

Herramientas (125 en total)

Contenedores (18)

list_containers, inspect_container, create_container, start_container, stop_container, restart_container, kill_container, pause_container, unpause_container, remove_container, redeploy_container, commit_container, update_container, set_container_auto_update, exec_in_container, get_container_logs, get_container_stats, get_container_counts

Imágenes (19)

list_images, inspect_image, pull_image, remove_image, tag_image, prune_images, get_image_counts, build_image, search_images, upload_image, get_image_history, get_image_export, get_image_attestations, scan_image_vulnerabilities, get_image_vulnerabilities, get_vulnerability_summary, check_image_update, check_all_image_updates, get_image_update_summary

Volúmenes (18)

list_volumes, create_volume, inspect_volume, remove_volume, prune_volumes, get_volume_counts, get_volume_sizes, get_volume_usage, list_volume_backups, create_volume_backup, restore_volume_backup, delete_volume_backup, download_volume_backup, browse_volume, read_volume_file, create_volume_directory, upload_to_volume, delete_volume_file

Proyectos / Compose (17)

list_projects, get_project, deploy_project, redeploy_project, remove_project, update_project, get_project_counts, project_down, restart_project, build_project, archive_project, unarchive_project, pull_project_images, get_project_compose, get_project_file, update_project_services, get_project_runtime

Redes (9)

list_networks, create_network, inspect_network, remove_network, connect_container_to_network, disconnect_container_from_network, prune_networks, get_network_counts, get_network_topology

Entornos (5)

list_environments, get_environment, create_environment, update_environment, remove_environment

Sistema (9)

get_docker_info, get_docker_version, prune_system, get_system_health, check_system_upgrade, trigger_upgrade, start_all_containers, start_stopped_containers, stop_all_containers

Actividades y Eventos (7)

list_activities, get_activity, cancel_activity, clear_activity_history, list_events, get_environment_events, delete_event

Registros de Contenedores (6)

list_registries, create_registry, get_registry, update_registry, delete_registry, test_registry

Vulnerabilidades (6)

get_vulnerability_summary_all, list_all_vulnerabilities, ignore_vulnerability, list_ignored_vulnerabilities, unignore_vulnerability, get_scanner_status

Webhooks (5)

trigger_webhook, list_webhooks, create_webhook, update_webhook, delete_webhook

Actualizador (3)

run_updater, get_updater_status, get_updater_history

Puertos (1)

list_ports

Operaciones / Seguridad (2)

confirm_operation, read_audit_log

Uso

Todas las herramientas de recursos aceptan env_id: str = "0" para apuntar a un entorno específico de Arcane (Docker local es "0", los agentes remotos usan UUIDs). Las operaciones de agentes remotos pueden pasar agent_token: str | None para autenticación mediante el encabezado X-Arcane-Agent-Token.

Seguridad

Las operaciones destructivas utilizan un sistema de seguridad de tres capas:

1. Tokens de confirmación (protocolo de dos pasos)

Cada herramienta que elimina, poda, mata, restaura o sobrescribe devuelve un confirmation_token de corta duración en lugar de ejecutarse. El agente debe llamar a confirm_operation(token) como una llamada de herramienta separada para continuar. Los tokens expiran después de 120 segundos.

remove_container("my-app")
→ {"warning": "...", "confirmation_token": "a1b2c3d4e5f6", "target": "my-app"}

confirm_operation(token="a1b2c3d4e5f6")
→ {"success": true, ...}

Esto evita que un agente atraviese una barrera de seguridad en una sola llamada: debe detenerse, procesar la advertencia y realizar una segunda llamada.

2. Modo de prueba en seco (herramientas de poda/limpieza)

Las operaciones de poda (prune_images, prune_volumes, prune_networks, prune_system, clear_activity_history) tienen como valor predeterminado dry_run=True, mostrando qué se vería afectado sin realizar cambios:

prune_images()
→ {"dry_run": true, "warning": "Dry-run. Set dry_run=False to proceed.", "target": "all"}

prune_images(dry_run=False)
→ {"warning": "...", "confirmation_token": "..."}

3. Registro de auditoría

Cada operación destructiva confirmada se registra en un registro de auditoría estructurado en líneas JSON. Puedes leerlo en cualquier momento:

read_audit_log(lines=10)
→ [{"timestamp": "2026-06-29T...", "action": "remove_container", "target": "my-app", "env_id": "0"}]

Establece la variable de entorno ARCANE_MCP_AUDIT_LOG para cambiar la ruta del archivo de registro (valor predeterminado: ~/.arcane-mcp-audit.log).

Desarrollo

git clone https://github.com/MikeCase/arcane-mcp.git
cd arcane-mcp
uv sync
uv run fastmcp run src/arcane_mcp/server.py

Licencia

MIT