Action1

Un servidor no oficial y completamente funcional del Protocolo de Contexto de Modelo (MCP) para la API REST de Action1 RMM

Documentación

Action1 RMM MCP Server

Un servidor no oficial y completamente funcional del Protocolo de Contexto de Modelo (MCP) para la API REST de Action1 RMM.

Este servidor expone las capacidades de monitoreo y gestión remota (RMM) de Action1 como herramientas accionables para asistentes de codificación y agentes de IA (como Gemini CLI, Claude Desktop, Cursor, Cline y aplicaciones GenAI personalizadas). Permite a los modelos de IA inspeccionar endpoints, implementar actualizaciones/parches, ejecutar scripts, gestionar grupos y activar implementaciones de software.


🚀 Características

  • Información de Organización y Usuario Autenticado: Recuperar permisos de API y listar organizaciones accesibles.
  • Monitoreo de Endpoints: Listar dispositivos gestionados, consultar estados detallados del sistema, actualizar atributos de dispositivos y obtener dispositivos descubiertos (no gestionados) en la red.
  • Gestión de Vulnerabilidades y Actualizaciones: Listar vulnerabilidades CVE pendientes, escanear estados de actualizaciones de Windows y activar actualizaciones de telemetría.
  • Implementaciones de Tareas y Políticas:
    • Parcheo: Implementar actualizaciones de Windows / mitigaciones de CVE con reinicios personalizables.
    • Software: Implementar paquetes del Repositorio de Software de Action1.
    • Scripts: Ejecutar scripts de la biblioteca con anulaciones de parámetros.
  • Automatización y Programación: Listar, crear, actualizar y eliminar programaciones de automatización recurrentes.
  • Informes y Registros de Actividad: Listar y recuperar filas de datos para informes personalizados, exportar informes a CSV y acceder a registros de auditoría/actividad.

📋 Requisitos Previos

  • Node.js: v18.0.0 o superior
  • Cuenta de Action1: Acceso a una consola de Action1 RMM.
  • Credenciales de API: ID de Cliente y Secreto de Cliente creados en Action1 en Configuración > Usuarios y Credenciales de API.

🛠️ Instalación y Configuración

  1. Instalar Dependencias:

    npm install
    
  2. Configurar Variables de Entorno: Copia .env.example a .env y completa tus credenciales de Action1:

    cp .env.example .env
    

    Modifica el archivo .env:

    ACTION1_CLIENT_ID=api-key-your-client-id@action1.com
    ACTION1_CLIENT_SECRET=your_client_secret_here
    ACTION1_REGION=na # na (default), eu, or au
    ACTION1_ORG_ID=your_default_organization_id # optional — can be passed per-tool call
    
  3. Compilar el Servidor: Compila los archivos fuente de TypeScript a JavaScript:

    npm run build
    

🔍 Ejecución y Pruebas Locales

Los servidores MCP se comunican a través de stdio (entrada/salida estándar). Probarlos en un shell de terminal estándar bloqueará la espera de mensajes JSON-RPC. Para probar y verificar herramientas de forma interactiva, usa el Inspector MCP:

# Start the MCP Inspector (local environment variables in .env are loaded automatically!)
npx @modelcontextprotocol/inspector node dist/index.js

Esto iniciará una interfaz web (normalmente en http://localhost:5173) donde podrás invocar herramientas de forma interactiva, inspeccionar entradas y verificar salidas.

Para ejecutar con recarga en vivo durante el desarrollo de TypeScript:

npx @modelcontextprotocol/inspector npx tsx src/index.ts

🧪 Ejecución de Pruebas Automatizadas

El código incluye un conjunto completo de pruebas unitarias que utiliza Vitest para verificar los esquemas de entrada de Zod (coincidencia de UUID, restricciones estrictas de ID alfanuméricos/guiones y límites numéricos de paginación).

Para ejecutar el conjunto de pruebas:

npm test

⚙️ Integraciones de Host

Así es como puedes conectar este servidor a clientes de IA populares:

1. Gemini CLI (gemini)

Crea o edita la configuración de tu proyecto local en .gemini/settings.json (o globalmente en ~/.gemini/settings.json):

{
  "mcpServers": {
    "action1": {
      "command": "node",
      "args": ["/path/to/mcp-action1/dist/index.js"],
      "env": {
        "ACTION1_CLIENT_ID": "api-key-your-client-id@action1.com",
        "ACTION1_CLIENT_SECRET": "your-client-secret",
        "ACTION1_REGION": "na",
        "ACTION1_ORG_ID": "your-org-id"
      }
    }
  }
}

2. Claude Desktop

Agrega lo siguiente a tu configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "action1": {
      "command": "node",
      "args": ["/path/to/mcp-action1/dist/index.js"],
      "env": {
        "ACTION1_CLIENT_ID": "api-key-your-client-id@action1.com",
        "ACTION1_CLIENT_SECRET": "your-client-secret",
        "ACTION1_REGION": "na",
        "ACTION1_ORG_ID": "your-org-id"
      }
    }
  }
}

3. Cursor

  1. Navega a Configuración de Cursor > Funciones > MCP.
  2. Haz clic en + Agregar Nuevo Servidor MCP.
  3. Elige Tipo: command
  4. Establece el Comando: node /path/to/mcp-action1/dist/index.js
  5. Configura las variables de entorno que coincidan con tus valores de .env.

🛠️ Catálogo de Herramientas

Este servidor MCP registra las siguientes herramientas bajo esquemas estándar:

Organizaciones

  • get_me: Obtener información sobre el usuario de API actualmente autenticado.
  • list_organizations: Listar todas las organizaciones accesibles para las credenciales de API.

Endpoints (Dispositivos)

  • list_endpoints: Listar endpoints gestionados (agentes). Admite paginación, cursores y campos extendidos (p. ej., estado de parcheo).
  • get_endpoint: Obtener información detallada de telemetría sobre un solo dispositivo.
  • update_endpoint: Actualizar propiedades del dispositivo (nombre, comentario, atributos personalizados).
  • delete_endpoint: Eliminar/dejar de gestionar un dispositivo (desinstala el agente).
  • list_discovery_endpoints: Listar dispositivos no gestionados/descubiertos vistos en la red.
  • requery_installed_apps: Forzar una actualización del inventario de aplicaciones instaladas en los endpoints.
  • requery_installed_updates: Forzar un escaneo de actualizaciones de Windows en los endpoints.

Grupos

  • list_endpoint_groups: Listar todos los grupos de endpoints definidos en la organización.
  • get_endpoint_group_contents: Listar los dispositivos miembros de un grupo específico.
  • add_endpoint_to_group: Agregar endpoints a un grupo objetivo.
  • update_endpoint_group: Editar nombres o descripciones de grupos.
  • delete_endpoint_group: Eliminar un grupo de endpoints.

Vulnerabilidades y Actualizaciones

  • list_vulnerabilities: Listar vulnerabilidades CVE conocidas detectadas en los endpoints. Filtrable por severidad.
  • list_windows_updates: Listar actualizaciones de Windows faltantes en los endpoints.

Scripts y Software

  • list_scripts: Listar el catálogo de la biblioteca de scripts (tanto plantillas de scripts integradas como personalizadas).
  • list_packages: Listar todos los paquetes de software disponibles en el catálogo gestionado de Action1.
  • list_software_repository: Listar paquetes en el repositorio local y recuperar versiones.
  • list_installed_apps: Listar las aplicaciones actualmente instaladas en todos los endpoints.

Implementación y Políticas

  • list_policies: Listar instancias de implementación únicas pasadas y activas (software, parches, scripts).
  • get_policy: Recuperar la configuración y los detalles del alcance objetivo de una política.
  • get_policy_results: Obtener resultados de ejecución por endpoint (detalles de éxito/fallo).
  • deploy_updates: Ejecutar un trabajo de implementación para instalar parches/actualizaciones. Admite la selección de CVEs específicos, reinicios automáticos y ventanas de reintento.
  • deploy_software: Implementar un paquete del catálogo de software en grupos o endpoints objetivo.
  • run_script: Ejecutar un elemento de la biblioteca de scripts con argumentos y reglas de reinicio.

Programaciones de Automatización

  • list_automations: Listar automatizaciones recurrentes configuradas.
  • create_automation: Crear una programación de automatización de implementación recurrente diaria, semanal o mensual.
  • update_automation: Editar o alternar una automatización.
  • delete_automation: Eliminar una programación de automatización.

Informes y Registros

  • list_reports: Recuperar un catálogo de todos los informes integrados disponibles.
  • get_report_data: Recuperar filas de datos sin procesar para un informe objetivo.
  • export_report: Exportar filas de informes directamente a formato CSV.
  • requery_report: Activar una actualización de datos para un informe específico.
  • get_activity_logs: Recuperar registros de acciones y auditoría a nivel de organización.
  • list_setting_templates: Listar plantillas utilizadas para perfiles de configuración.

📜 Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulta LICENSE para más detalles.