ACMP MCP Server
Servidor MCP para gerenciamento de clientes Aagon ACMP: clientes, inventário, CVEs, atualizações ausentes, tarefas, comandos de cliente, chamados de helpdesk, ativos e quiosque. Leituras são executadas instantaneamente; gravações, execuções de scripts e exclusões aguardam aprovação de quatro olhos por humanos. Um único EXE Windows no servidor ACMP.
Documentação
ACMP-MCP-Server
Aagon ACMP para qualquer IA – com aprovação de quatro olhos, diretamente no seu servidor ACMP.
Início rápido · Conectar cliente · Ferramentas · Segurança · Documentação
[!NOTE] English: MCP server for Aagon ACMP's Public API, with a built-in four-eyes approval gate for write/execute/delete actions. Runs as a single Windows EXE on the ACMP server and works with any MCP client. Docs are in German because ACMP's user base is mostly DACH; issues in English are welcome.
Um servidor MCP para a ACMP Public API (Aagon Client Management Platform). Você pergunta em linguagem natural, por exemplo: "Quais computadores estão offline há 30 dias?", e a IA busca a resposta diretamente no ACMP.
De relance
- Qualquer cliente MCP: Claude, ChatGPT/Codex, GitHub Copilot, Gemini, Cursor …
- Ampla cobertura: Clientes, contêineres, jobs/client commands, chamados, ativos, inventário, vulnerabilidades e dados mestre.
- Aprovação de quatro olhos: Leitura é imediata. Tudo o que altera, executa ou exclui só acontece quando uma pessoa aprova na página de aprovação; para ações críticas, duas pessoas diferentes.
- Por operador: chave de API própria e, opcionalmente, identidade ACMP própria. O ACMP verifica então as permissões reais da pessoa.
- Um EXE, sem nuvem: roda diretamente no servidor ACMP. Sem IIS, sem .NET-SDK.
- Opcional: criar, aprovar e organizar client commands, além de manter o kiosk, diretamente no banco de dados do ACMP. Desativado por padrão.
- Modelos prontos: Na ACMP CTL (Community Template Library) há modelos de client command com cada etapa em texto claro.
acmp_lib_installos cria como rascunho na sua console.
Compatibilidade
| Testado ou pré-requisito | |
|---|---|
| ACMP | 6.9 e 6.10, com AESB/SICS e Public API habilitada |
| CC-Writer / Kiosk-Writer | ACMP 6.10. Em caso de divergências, por exemplo após uma atualização do ACMP, a pré-verificação bloqueia a escrita |
| Servidor | Windows Server com .NET Framework 4.8, direitos de administrador no servidor ACMP |
| MCP | Streamable HTTP (JSON-RPC 2.0), versão do protocolo 2025-06-18 |
| Clientes de IA | Modelos para Claude Code, Claude Desktop (também como extensão .mcpb), Codex CLI, VS Code/GitHub Copilot, Cursor e Gemini CLI em docs/CLIENTS.md |
Início rápido
A) Configurar pela sua IA
No servidor ACMP, clone o repositório ou descompacte como ZIP. Inicie um agente de IA que possa executar comandos (Claude Code, Codex CLI, GitHub Copilot no modo agente, Gemini CLI, Cursor ou similar) e digite:
Richte diesen ACMP-MCP-Server auf diesem Rechner ein. Folge AGENTS.md Schritt für Schritt,
erkläre mir jeden Admin-Schritt, bevor ich ihn ausführe, und frag mich nie nach Passwörtern
oder API-Keys im Chat.
AGENTS.md contém o fluxo completo: verificação, instalação, configuração inicial, liberação na rede, conexão do cliente e solução de problemas. A maioria dos agentes lê o arquivo por conta própria. Para Claude Code (CLAUDE.md), Gemini CLI (GEMINI.md) e GitHub Copilot (.github/copilot-instructions.md) há referências incluídas.
B) Manualmente: o assistente no terminal
No servidor ACMP, abra um PowerShell, entre no repositório e inicie. Se faltarem direitos de administrador, o script se reinicia após uma confirmação do Windows (UAC):
.\install.ps1
Ao final, o assistente mostra sua chave de API e os links para a página de aprovação, o painel e o onboarding; se desejar, ele copia a chave para a área de transferência. Depois, ele pergunta sobre seu cliente de IA e mostra a configuração pronta para ele.
O que o assistente faz em 9 etapas
Em cada etapa, ele explica o que está acontecendo e sugere valores (Enter confirma):
- Verifica os pré-requisitos (AESB SICS, porta 3950, .NET, porta livre). Em caso de erro, ele diz o que fazer.
- Pergunta sobre a Public API na console do ACMP e mostra o caminho de cliques.
- Instala e compila conforme
C:\ProgramData\AcmpMcp. Config, segredos e logs são legíveis apenas por administradores e SYSTEM. - Solicita o usuário SICS. A senha é digitada de forma oculta.
- Configura o serviço e verifica o login no ACMP. Se não funcionar, ele pede as credenciais novamente.
- Cria você como primeiro administrador e aprovador.
- Vincula sua própria identidade ACMP, se você quiser. Assim, o ACMP verifica suas permissões reais.
- Funções opcionais: PowerShell ad-hoc, relatórios de banco de dados, notificação por e-mail.
- Rede: sugere IP da LAN e sub-rede e libera o servidor para os PCs administrativos.
Os cliques na console do ACMP são descritos em docs/ACMP-VORBEREITUNG.md, por exemplo, para o modelo de client command do PowerShell ad-hoc.
Outros comandos: criar, atualizar e desinstalar colegas
Você cria outros colegas no terminal ou no navegador via /onboarding:
cd C:\ProgramData\AcmpMcp
.\add-user.ps1
| Comando | Finalidade |
|---|---|
.\install.ps1 -CheckOnly | apenas verificar, sem alterar nada (não requer admin) |
.\install.ps1 | executar novamente = atualizar. Configuração e operadores são mantidos; o que já foi feito é pulado |
.\install.ps1 -NonInteractive -SicsUser … -AdminName … -AdminEmail … | sem perguntas, por exemplo, para scripts. A senha vem de $env:ACMP_SICS_PASSWORD |
.\set-network-admin.ps1 -BindAddress <IP> | alterar a rede depois |
.\uninstall-admin.ps1 | remover o serviço e a regra de firewall |
Conectar cliente
Qualquer cliente MCP que suporte Streamable HTTP com cabeçalho próprio conecta-se diretamente:
| URL | http://<HOST>:8765/ |
| Cabeçalho | Authorization: Bearer <KEY> (chave de API pessoal da página de configuração ou onboarding) |
Por exemplo, Claude Code:
claude mcp add --transport http acmp http://<HOST>:8765/ --header "Authorization: Bearer <KEY>" --scope user
Claude Desktop: instale acmp-mcp-<version>.mcpb dos Releases com um duplo clique e insira o endereço do servidor e a chave de API nas configurações da extensão.
Configurações prontas para todos os clientes comuns estão em docs/CLIENTS.md. Clientes que só conhecem servidores locais (stdio) podem ser conectados pela ponte mcp-remote.
Como funciona
flowchart TB
KI["KI-Client<br/>Claude · Codex · Copilot · Gemini · Cursor"]
subgraph SRV["ACMP-Server"]
MCP["ACMP-MCP-Server<br/>(Windows-EXE)"]
GATE{{"Freigabe-Seite"}}
ACMP[("ACMP<br/>Public API über SICS/AESB")]
DB[("ACMP-Datenbank")]
end
TEAM(["Freigeber im Browser"])
KI -->|"MCP · HTTP + API-Key"| MCP
MCP -->|"lesen: sofort"| ACMP
MCP -->|"schreiben · ausführen · löschen"| GATE
TEAM -->|"1 bzw. 2 Personen stimmen zu"| GATE
GATE -->|"erst dann"| ACMP
MCP -.->|"optional: DB-Reports, Writer"| DB
Detalhes técnicos
- O servidor conecta-se via DLLs de cliente da própria Aagon (
Aagon.Sis.Sics.*, já presentes na instalação do ACMP) ao SICS/AESB (wss://127.0.0.1:3950). Protocolo, criptografia e login são, portanto, os mesmos das ferramentas da própria Aagon. - Ele envia comandos ICQL ao ACMP. A chave de roteamento é determinada automaticamente; o Virtual Router é lido da configuração (padrão
VCMN). - Os comandos ficam disponíveis como ferramentas MCP via JSON-RPC 2.0/HTTP (
TcpListenerpróprio, sem necessidade de URL-ACL). - Por usuário: cada operador tem uma chave de API própria e, opcionalmente, uma identidade ACMP própria. O ACMP verifica então as permissões reais dele (
GetOwnUserRights). - Aprovação de quatro olhos: chamadas de escrita, execução e exclusão não são executadas imediatamente; ficam congeladas como solicitação. Somente quando 1 pessoa (Write) ou 2 pessoas diferentes (Destructive) aprovam na interface web é que a chamada ACMP real é iniciada. A aprovação ocorre, portanto, fora do LLM.
Como é a aprovação
Quando a IA solicita um comando de escrita, execução ou exclusão, ele chega como solicitação na página de aprovação. Nada é executado até que pessoas diferentes suficientes tenham aprovado. As imagens mostram uma instância de demonstração com dados fictícios.

Visão detalhada e aprovação
A visão detalhada mostra a intenção informada, o solicitante e os computadores de destino, bem como o script em texto claro, exatamente como será executado no cliente:

Abaixo estão o comando bruto enviado ao ACMP, uma explicação passo a passo com avisos e os botões de aprovação:

Um exemplo do fluxo:
- Você escreve: "O disco do PC-0815 está cheio; limpe a pasta Temp do Windows."
- A IA procura o computador (
acmp_get_client_id), verifica os discos (acmp_low_disk_space) e cria uma solicitação de PowerShell (acmp_run_powershell). - Na página de aprovação, dois colegas veem o script em texto claro e clicam em "Aprovar".
- Somente então o script é executado no cliente, e a IA informa o resultado.
Ferramentas
118 ferramentas em 10 áreas. Um clique em uma área mostra todas as ferramentas com seu nível de aprovação:
🟢 executa imediatamente (somente leitura) · 🟡 aprovação por 1 pessoa · 🔴 aprovação por 2 pessoas diferentes
Os níveis são os valores padrão do código e podem ser ajustados por ferramenta em /settings. Algumas ferramentas exigem uma função opcional: (DB) a conexão com o banco de dados (db.connectionString, somente leitura), (PS) o modelo de client command (runPowershell.clientCommandId), (CW) o CC-Writer (ccWriter), (KW) o Kiosk-Writer (kioskWriter). A lista atual é fornecida por tools/list. Cada ferramenta aceita opcionalmente format: "json".
Sistema e geral · 11 ferramentas · Informações do servidor, permissões próprias, acmp_call para cada um dos 167 comandos da API
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_server_info | Versão do ACMP e dados do servidor |
| 🟢 | acmp_whoami | com qual usuário ACMP e quais permissões você está trabalhando |
| 🟢 | acmp_logout | restabelecer a conexão, por exemplo, após troca de token |
| 🟢 | acmp_list_commands, acmp_describe | listar todos os 167 comandos da Public API e explicá-los com parâmetros |
| 🟡 | acmp_call | qualquer comando da API sem ferramenta própria. Comandos de leitura executam imediatamente; comandos de escrita exigem aprovação |
| 🟢 | acmp_approval_status | status de uma solicitação de aprovação |
| 🟢 | acmp_discover_tables (DB) | pesquisar tabelas no banco de dados do ACMP ("O que tem a ver com BitLocker?") |
| 🟢 | acmp_db_columns (DB) | colunas de uma tabela ou view |
| 🟢 | acmp_db_script_rows, acmp_db_script_blob (ambos DB) | linhas e colunas binárias das tabelas de client command, kiosk e file repository (somente essas) |
Clientes e inventário · 12 ferramentas · "Quem foi o último a usar o PC-0815?", hardware, computadores offline, espaço em disco
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_get_clients, acmp_get_client_id, acmp_client_info (DB) | listar computadores, encontrar por nome ou MAC, ficha com IP, MAC e versão do agente |
| 🟢 | acmp_get_os_info | sistema operacional e último usuário conectado ("Quem foi o último a usar o PC-0815?") |
| 🟢 | acmp_get_hardware, acmp_hardware_profile (DB) | CPU, RAM, discos, serviços, fabricante, modelo, número de série |
| 🟢 | acmp_offline_clients (DB) | computadores sem contato há X dias |
| 🟢 | acmp_agent_versions (DB) | distribuição das versões do agente |
| 🟢 | acmp_low_disk_space (DB) | unidades com pouco espaço livre |
| 🟢 | acmp_read_registry, acmp_read_registry_result (ambos PS) | ler um valor do registro no cliente (script de leitura fixo) |
| 🟢 | acmp_db_client_attributes (DB) | campos personalizados de um cliente |
Software e segurança · 12 ferramentas · CVEs, atualizações ausentes, Defender, BitLocker, licenças
| | Ferramenta | Finalidade | |---|---|---| | 🟢 | `acmp_get_software`, `acmp_software_inventory` *(DB)*, `acmp_software_search` *(DB)* | software instalada por computador e pesquisa ("Onde está o 7-Zip?") | | 🟢 | `acmp_outdated_software` *(DB)* | software desatualizado | | 🟢 | `acmp_missing_updates`, `acmp_failed_updates` *(ambos DB)* | atualizações do Windows ausentes e com falha | | 🟢 | `acmp_vulnerabilities`, `acmp_oval_scan_status` *(ambos DB)* | vulnerabilidades (CVEs) com pontuação e data da última verificação | | 🟢 | `acmp_defender_health` *(DB)* | status do Defender ("Onde a proteção em tempo real está desativada?") | | 🟢 | `acmp_bitlocker_status` *(DB)* | status do BitLocker por unidade | | 🟢 | `acmp_get_licenses`, `acmp_license_compliance` *(DB)* | licenças com excesso e falta de cobertura |Jobs e execução · 6 ferramentas · Iniciar Client Command, PowerShell como SYSTEM 🔴
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_get_client_commands | Client Commands disponíveis |
| 🟢 | acmp_get_jobs, acmp_job_results (DB), acmp_script_history (DB) | o que foi executado em um computador e com qual resultado |
| 🟡 | acmp_enqueue_client_command | iniciar um Client Command existente |
| 🔴 | acmp_run_powershell (PS) | executar qualquer PowerShell como SYSTEM em um cliente |
Client Commands · 15 ferramentas · opcional · criar rascunho, nova versão, aprovar, organizar
A Public API só pode iniciar Client Commands, não criá-los. Por isso, estas ferramentas os leem diretamente do banco de dados ACMP, criam rascunhos quando desejado, aprovam rascunhos próprios e organizam comandos em pastas. A escrita não é prevista pela Aagon e, portanto, está desativada por padrão. Configuração: docs/ACMP-VORBEREITUNG.md → "Escrever Client Commands diretamente".
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_cc_decode (DB) | etapas de um Client Command em texto claro, utilizável como entrada para um novo rascunho. Senhas são mascaradas |
| 🟢 | acmp_cc_catalog (DB) | quais tipos de etapa ocorrem nos seus comandos, com campos e exemplos |
| 🟢 | acmp_cc_folders (DB) | árvore de pastas dos Client Commands, opcionalmente com os comandos por pasta |
| 🟢 | acmp_cc_writer_status (DB) | status do writer e resultado da verificação de compatibilidade |
| 🟡 | acmp_cc_create_draft, acmp_cc_update_draft (CW) | criar rascunho ou substituir suas etapas (com backup automático antes) |
| 🟡 | acmp_cc_restore_draft (CW) | restaurar rascunho a partir de um backup |
| 🟡 | acmp_cc_add_file, acmp_cc_remove_file (CW) | anexar ou remover arquivo de instalação de um rascunho (File Repository, com SHA-256) |
| 🟡 | acmp_cc_new_version (CW) | nova versão de um comando existente como rascunho, inclusive de comandos aprovados e de terceiros (como "Salvar" no console). A versão aprovada continua ativa até que a nova seja aprovada (acmp_cc_release ou console). Sempre passa pela página de aprovação; a pré-visualização mostra as alterações em relação à versão aprovada |
| 🟡 | acmp_cc_release (CW) | aprovar rascunhos como no console, vários em um único pedido: novos comandos próprios e novas versões de acmp_cc_new_version (a versão anteriormente aprovada é substituída). Sempre passa pela página de aprovação, mesmo que esteja desativada |
| 🟡 | acmp_cc_move (CW) | mover vários comandos para outras pastas em um único pedido, com undo |
| 🟡 | acmp_cc_add_folder, acmp_cc_update_folder (CW) | criar pasta (com permissões da pasta pai), renomear ou mover |
| 🟡 | acmp_lib_install (DB, CW) | instalar modelo da ACMP CTL (Community Template Library) ou de uma pasta de modelos própria como rascunho. Com dryRun 🟢 também sem writer |
O writer altera apenas rascunhos próprios na pasta permitida e apenas para operadores autorizados. Comandos existentes são modificados somente via acmp_cc_new_version: como nova versão, nunca em pastas padrão da Aagon; IDs de etapa e senhas salvas são preservados; um rascunho de terceiros só é sobrescrito mediante solicitação explícita (com backup). Cada ação de escrita passa pela página de aprovação; a pré-visualização mostra cada etapa com seus campos.
Antes de escrever, o servidor verifica a versão do ACMP, tabelas, triggers e permissões do login de escrita. Ele também testa empacotar e desempacotar os 50 comandos mais recentes. Se algo divergir, por exemplo após uma atualização do ACMP, ele não escreve nada. A aprovação é possível para rascunhos próprios e para versões salvas por último pelo MCP, e somente se o conteúdo permanecer inalterado desde a solicitação. Versões subsequentes com arquivos alterados não são aprovadas; essas permanecem responsabilidade do console. Espaços reservados como "INSERIR AQUI …" bloqueiam a aprovação. Testado com ACMP 6.10.
Kiosk · 12 ferramentas · opcional · entradas, pastas, visibilidade, ícones
A Public API também não pode gerenciar o kiosk do ACMP. Por isso, estas ferramentas leem e escrevem diretamente no banco de dados do ACMP. Isso também está desativado por padrão. Configuração: docs/ACMP-VORBEREITUNG.md → "Gerenciar kiosk".
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_kiosk_tree (DB) | pastas do kiosk, entradas e filtros de visibilidade em texto claro; com status: true o resultado da pré-verificação |
| 🟢 | acmp_kiosk_images (DB) | ícones e arquivos de imagem existentes nas fontes permitidas, com pré-visualização no chat |
| 🟡 | acmp_kiosk_add_item (KW) | criar Client Command ou software gerenciado como entrada do kiosk, com ícone e filtro de visibilidade (grupo AD, OU, usuário, contêiner, dados mestre …) |
| 🟡 | acmp_kiosk_update_items (KW) | mover, renomear, alterar descrição, ícone ou filtro de várias entradas em um único pedido |
| 🟡 | acmp_kiosk_set_filter, acmp_kiosk_remove_item (KW) | alterar visibilidade de uma entrada, remover entrada |
| 🟡 | acmp_kiosk_add_group, acmp_kiosk_update_group (KW) | criar pasta do kiosk, renomear (DE/EN), alterar ícone e filtro |
| 🟡 | acmp_kiosk_add_image, acmp_kiosk_set_image, acmp_kiosk_remove_image (KW) | enviar ícone (PNG, JPG, ICO, SVG), definir, remover ícone próprio não utilizado |
| 🟡 | acmp_kiosk_restore (KW) | restaurar uma alteração do kiosk a partir do backup automático |
A escrita ocorre apenas em pastas do kiosk que vocês liberarem e em pastas criadas pelo próprio MCP. Antes de cada alteração, o servidor faz backup do estado anterior. Os usuários veem as alterações após "Atualizar" no kiosk.
Contêiner · 5 ferramentas · ler, criar, alterar, excluir membros 🔴
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_container_members, acmp_client_containers (ambos DB) | computadores em um contêiner e contêineres de um computador |
| 🟡 | acmp_create_container, acmp_save_containers | criar ou alterar contêiner |
| 🔴 | acmp_delete_containers | excluir contêiner |
Assets e dados mestre · 25 ferramentas · emprestar assets, contatos, locais, contratos
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_get_asset_list, acmp_get_asset_types | assets e tipos de asset |
| 🟡 | acmp_create_asset, acmp_update_asset | criar ou alterar asset |
| 🟡 | acmp_lend_asset, acmp_return_asset | emprestar ou devolver asset |
| 🟢 | acmp_get_contacts, _companies, _locations, _departments, _cost_centers | ler dados mestre |
| 🟡 | acmp_create_*, acmp_update_* para contact, company, location, department | criar ou alterar dados mestre |
| 🟢 | acmp_get_contracts, acmp_contracts_expiring (DB) | contratos e contratos que expiram em breve |
| 🟢 | acmp_get_custom_fields, _custom_field_list, _master_data_settings, _app_settings | ler campos adicionais e configurações |
Helpdesk · 18 ferramentas · "Abra um ticket: a impressora do 2º andar não imprime."
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_get_tickets, acmp_get_ticket, acmp_tickets_by_query | ler tickets, inclusive via consultas salvas |
| 🟢 | acmp_get_ticket_comments, _worktime, _costs, acmp_get_linked_tickets | histórico, tempos, custos, vínculos |
| 🟢 | acmp_helpdesk_settings, acmp_get_assignees, _ticket_templates, _ticket_categories, _ticket_resolutions, _queries | configurações do helpdesk |
| 🟡 | acmp_create_ticket | criar ticket ("Abra um ticket: a impressora do 2º andar não imprime.") |
| 🟡 | acmp_update_ticket | alterar responsável ou prioridade |
| 🟡 | acmp_close_ticket, acmp_reopen_ticket | fechar ou reabrir ticket |
| 🟡 | acmp_add_ticket_comment | adicionar comentário |
Suporte remoto · 2 ferramentas · ID do TeamViewer e link de conexão
| Ferramenta | Finalidade | |
|---|---|---|
| 🟢 | acmp_teamviewer_ids (DB) | IDs do TeamViewer de todos os clientes |
| 🟢 | acmp_teamviewer_connect (DB) | link do TeamViewer para um computador, pesquisa também por nome de usuário |
Exemplos de prompts estão em docs/USAGE.md. Novos comandos nativos são adicionados declarativamente em api-tools.json, novos relatórios SQL em db-tools.json. Ambos não exigem recompilação.
Interface web
| Página | Finalidade |
|---|---|
/dashboard | visão geral: solicitações abertas, executadas e rejeitadas |
/approvals | verificar e aprovar aprovações pendentes |
/history | histórico de todas as solicitações |
/settings | limites de aprovação por ferramenta |
/onboarding | criar outros operadores |
/changelog | histórico de patches do servidor |
/setup | configuração inicial, ativa apenas enquanto não houver aprovador |
O login usa um token próprio por aprovador e é independente da chave ACMP ou MCP: uma chave de API vazada não concede direitos de aprovação.
Configuração
config.example.json é comentado (campos _hinweis). install.ps1 gera config.local.json a partir dele.
Chaves importantes
| Chave | Significado |
|---|---|
sics.username / password | conexão base SICS-/AESB |
sics.virtualRouter / wssPort | padrão VCMN / 3950 |
mcp.bindAddress / httpPort | padrão 127.0.0.1 / 8765. Acesso LAN via set-network-admin.ps1 |
approval.* | aprovação com quatro olhos, limites, notificação SMTP |
runPowershell.clientCommandId | opcional, ativa acmp_run_powershell / acmp_read_registry |
db.connectionString | opcional, ativa as ferramentas de relatório do banco de dados |
helpdesk.createdStateId | opcional, status de ticket para novos tickets |
ccWriter.* | opcional, desativado por padrão: escrever Client Commands como rascunho, aprovar, organizar. Configurar com setup-cc-writer.ps1, outros operadores com setup-cc-writer.ps1 -AddRequester <name> |
kioskWriter.* | opcional, desativado por padrão: gerenciar kiosk. Exige o CC-writer (mesmo login SQL). Configurar com setup-kiosk-writer.ps1 |
ctl.sources | opcional, fontes para acmp_lib_install. Padrão: pasta ctl no diretório de instalação, depois o repositório Herzog-GmbH/acmp-ctl |
Segurança
[!WARNING] O servidor concede acesso total ao ACMP, incluindo execução de comandos em todos os dispositivos finais. Trate cada chave de API como uma senha de administrador.
- Sem TLS integrado. O servidor escuta apenas em
127.0.0.1por padrão e recusa operação em LAN sem chave de API. Na LAN, restrinja os subnets de origem via firewall. Através de limites de rede, coloque um proxy TLS ou VPN na frente. install.ps1restringe a pasta de instalação a administradores e SYSTEM, pois é onde ficam as credenciais.- Senhas de operadores nunca são armazenadas:
acmp-token-setup.exearmazena apenas um token criptografado com DPAPI (LocalMachine). /regresult(canal de retorno paraacmp_read_registry) está intencionalmente acessível sem chave, porque o cliente não conhece a chave. Ele aceita apenas resultados para tokens abertos e não adivinháveis.- Por favor, não relate vulnerabilidades de segurança como issue público, mas sim conforme descrito em
SECURITY.md.
CC-Writer e Kiosk-Writer
- O CC-Writer opcional grava com um login SQL próprio com exatamente os direitos necessários (
grant-cc-writer.sql), nunca com o acesso de leitura. EmSYS_SCRIPTS, ele não pode excluir nada. Ele apenas cria rascunhos, faz backup antes de cada alteração e altera ou libera apenas comandos que ele mesmo criou. Comandos de terceiros, ele altera apenas como nova versão (acmp_cc_new_version, sempre com solicitação de liberação) e os move se desejado. Ele não pode excluir nada. - O Kiosk-Writer opcional usa o mesmo login com os direitos de
grant-kiosk-writer.sql. Ele não pode excluir pastas e grava apenas em pastas de kiosk compartilhadas. - Importante para o onboarding: O login SQL pertence ao servidor, não aos operadores. Quem pode solicitar as ferramentas de gravação está em
ccWriter.allowedRequesters(add-user.ps1pergunta sobre isso, para operadores de/onboarding:setup-cc-writer.ps1 -AddRequester <name>). Mesmo assim, um aprovador deve concordar. O ACMP não verifica os direitos ACMP da pessoa nessas ferramentas, porque elas gravam no banco de dados fora da API pública.
Documentação
| Arquivo | Conteúdo |
|---|---|
AGENTS.md | Fluxo de configuração para agentes de IA, incluindo solução de problemas |
docs/ACMP-VORBEREITUNG.md | Cliques no console ACMP: API pública, usuários SICS, funções opcionais |
docs/CLIENTS.md | Configuração para todos os clientes MCP comuns |
docs/USAGE.md | Folha de referência com exemplos de prompts para usuários |
config.example.json | Exemplo de configuração comentado |
SECURITY.md | Relatar vulnerabilidades de segurança confidencialmente |
Contribuir
Issues e pull requests são bem-vindos. Por favor, não poste logs com nomes de host, IPs, nomes de usuário, chaves ou tokens em issues, mas masque-os antes.
Licença
MIT. Não é um produto oficial da Aagon GmbH. ACMP e AESB são marcas da Aagon GmbH.