Action1

Um servidor não oficial e completo do Model Context Protocol (MCP) para a API REST do Action1 RMM

Documentação

Action1 RMM MCP Server

Um servidor não oficial e completo do Model Context Protocol (MCP) para a Action1 RMM REST API.

Este servidor expõe os recursos de monitoramento e gerenciamento remoto (RMM) da Action1 como ferramentas acionáveis para assistentes de codificação e agentes de IA (como Gemini CLI, Claude Desktop, Cursor, Cline e aplicações GenAI personalizadas). Ele permite que modelos de IA inspecionem endpoints, implantem atualizações/correções, executem scripts, gerenciem grupos e acionem implantações de software.


🚀 Recursos

  • Informações da Organização e do Usuário Autenticado: Recupere permissões da API e liste organizações acessíveis.
  • Monitoramento de Endpoints: Liste dispositivos gerenciados, consulte status detalhados do sistema, atualize atributos de dispositivos e busque dispositivos descobertos (não gerenciados) na rede.
  • Gerenciamento de Vulnerabilidades e Atualizações: Liste vulnerabilidades CVE pendentes, verifique status de atualizações do Windows e acione atualizações de telemetria.
  • Implantações de Tarefas e Políticas:
    • Correções (Patching): Implante atualizações do Windows / mitigações de CVE com reinicializações personalizáveis.
    • Software: Implante pacotes do Repositório de Software da Action1.
    • Scripts: Execute scripts da biblioteca com substituição de parâmetros.
  • Automação e Agendamento: Liste, crie, atualize e remova agendamentos de automação recorrentes.
  • Relatórios e Logs de Atividade: Liste e recupere linhas de dados de relatórios personalizados, exporte relatórios para CSV e acesse logs de auditoria/atividade.

📋 Pré-requisitos

  • Node.js: v18.0.0 ou superior
  • Conta Action1: Acesso ao console RMM da Action1.
  • Credenciais da API: Client ID e Client Secret criados na Action1 em Configuração > Usuários e Credenciais de API.

🛠️ Instalação e Configuração

  1. Instale as Dependências:

    npm install
    
  2. Configure as Variáveis de Ambiente: Copie .env.example para .env e preencha com suas credenciais da Action1:

    cp .env.example .env
    

    Modifique o arquivo .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. Compile o Servidor: Compile os arquivos-fonte TypeScript para JavaScript:

    npm run build
    

🔍 Executando e Testando Localmente

Os servidores MCP se comunicam via stdio (entrada/saída padrão). Testá-los em um terminal padrão bloqueará aguardando mensagens JSON-RPC. Para testar e verificar as ferramentas interativamente, use o MCP Inspector:

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

Isso iniciará uma interface web (normalmente em http://localhost:5173) onde você pode invocar ferramentas interativamente, inspecionar entradas e verificar saídas.

Para executar com recarregamento automático durante o desenvolvimento TypeScript:

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

🧪 Executando Testes Automatizados

O código inclui uma suíte abrangente de testes unitários usando Vitest para verificar os esquemas de entrada Zod (correspondência de UUID, restrições estritas de IDs alfanuméricos/hífen e limites numéricos de paginação).

Para executar a suíte de testes:

npm test

⚙️ Integrações com Hosts

Veja como você pode conectar este servidor a clientes de IA populares:

1. Gemini CLI (gemini)

Crie ou edite as configurações do seu projeto local em .gemini/settings.json (ou globalmente em ~/.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

Adicione o seguinte à configuração do 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. Navegue até Cursor Settings > Features > MCP.
  2. Clique em + Add New MCP Server.
  3. Escolha o Tipo: command
  4. Defina o Comando: node /path/to/mcp-action1/dist/index.js
  5. Configure as variáveis de ambiente correspondentes aos seus valores de .env.

🛠️ Catálogo de Ferramentas

Este servidor MCP registra as seguintes ferramentas sob esquemas padrão:

Organizações

  • get_me: Obtenha informações sobre o usuário da API atualmente autenticado.
  • list_organizations: Liste todas as organizações acessíveis às credenciais da API.

Endpoints (Dispositivos)

  • list_endpoints: Liste endpoints gerenciados (agentes). Suporta paginação, cursores e campos estendidos (ex.: status de correção).
  • get_endpoint: Obtenha informações detalhadas de telemetria sobre um único dispositivo.
  • update_endpoint: Atualize propriedades do dispositivo (nome, comentário, atributos personalizados).
  • delete_endpoint: Remova/desgerencie um dispositivo (desinstala o agente).
  • list_discovery_endpoints: Liste dispositivos não gerenciados/descobertos vistos na rede.
  • requery_installed_apps: Force uma atualização do inventário de aplicativos instalados nos endpoints.
  • requery_installed_updates: Force uma verificação de atualizações do Windows nos endpoints.

Grupos

  • list_endpoint_groups: Liste todos os grupos de endpoints definidos na organização.
  • get_endpoint_group_contents: Liste os dispositivos membros de um grupo específico.
  • add_endpoint_to_group: Adicione endpoints a um grupo de destino.
  • update_endpoint_group: Edite nomes ou descrições de grupos.
  • delete_endpoint_group: Remova um grupo de endpoints.

Vulnerabilidades e Atualizações

  • list_vulnerabilities: Liste vulnerabilidades CVE conhecidas detectadas nos endpoints. Filtrável por severidade.
  • list_windows_updates: Liste atualizações do Windows ausentes nos endpoints.

Scripts e Software

  • list_scripts: Liste o catálogo da biblioteca de scripts (modelos de script integrados e personalizados).
  • list_packages: Liste todos os pacotes de software disponíveis no catálogo gerenciado da Action1.
  • list_software_repository: Liste pacotes no repositório local e recupere versões.
  • list_installed_apps: Liste aplicativos atualmente instalados em todos os endpoints.

Implantação e Políticas

  • list_policies: Liste instâncias de implantação únicas passadas e ativas (software, correções, scripts).
  • get_policy: Recupere a configuração e os detalhes do escopo de destino de uma política.
  • get_policy_results: Busque resultados de execução por endpoint (detalhes de sucesso/falha).
  • deploy_updates: Execute um trabalho de implantação para instalar correções/atualizações. Suporta direcionamento de CVEs específicos, reinicializações automáticas e janelas de repetição.
  • deploy_software: Implante um pacote do catálogo de software para grupos ou endpoints de destino.
  • run_script: Execute um item da biblioteca de scripts com argumentos e regras de reinicialização.

Agendamentos de Automação

  • list_automations: Liste automações recorrentes configuradas.
  • create_automation: Crie um agendamento de automação de implantação recorrente diário, semanal ou mensal.
  • update_automation: Edite ou alterne uma automação.
  • delete_automation: Exclua um agendamento de automação.

Relatórios e Logs

  • list_reports: Recupere um catálogo de todos os relatórios integrados disponíveis.
  • get_report_data: Recupere linhas de dados brutos para um relatório de destino.
  • export_report: Exporte linhas de relatório diretamente para o formato CSV.
  • requery_report: Acione uma atualização de dados para um relatório específico.
  • get_activity_logs: Recupere logs de ação e auditoria em toda a organização.
  • list_setting_templates: Liste modelos usados para perfis de configuração.

📜 Licença

Este projeto é licenciado sob a Licença MIT. Consulte LICENSE para obter detalhes.