ACMP MCP Server

Servidor MCP para la gestión de clientes de Aagon ACMP: clientes, inventario, CVEs, actualizaciones faltantes, trabajos, comandos de cliente, tickets de helpdesk, activos y kiosco. Las lecturas se ejecutan al instante; las escrituras, ejecuciones de scripts y eliminaciones esperan la aprobación de cuatro ojos por parte de humanos. Un único EXE de Windows en el servidor ACMP.

Documentación

ACMP-MCP-Server

Aagon ACMP para cualquier IA – con aprobación de cuatro ojos, directamente en tu servidor ACMP.

Getestet mit ACMP 6.9 und 6.10 MCP Streamable HTTP 118 Tools Vier-Augen-Freigabe
Windows Server .NET Framework 4.8 Lizenz MIT Letzter Commit

Inicio rápido · Conectar cliente · Herramientas · Seguridad · Documentación

[!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.

Un servidor MCP para la API pública de ACMP (Aagon Client Management Platform). Haces preguntas en lenguaje natural, por ejemplo: „¿Qué equipos llevan más de 30 días sin conexión?“, y la IA obtiene la respuesta directamente de ACMP.

De un vistazo

  • Cualquier cliente MCP: Claude, ChatGPT/Codex, GitHub Copilot, Gemini, Cursor …
  • Amplia cobertura: Clientes, contenedores, trabajos/comandos de cliente, tickets, activos, inventario, vulnerabilidades y datos maestros.
  • Aprobación de cuatro ojos: Leer se ejecuta de inmediato. Todo lo que modifica, ejecuta o elimina algo solo se ejecuta cuando una persona lo aprueba en la página de aprobación; en acciones críticas, dos personas distintas.
  • Por operador: clave de API propia y, opcionalmente, identidad ACMP propia. ACMP verifica entonces los permisos reales de la persona.
  • Un solo EXE, sin nube: se ejecuta directamente en el servidor ACMP. Sin IIS, sin SDK de .NET.
  • Opcional: crear, aprobar y clasificar comandos de cliente, así como mantener el kiosco, directamente en la base de datos de ACMP. Desactivado por defecto.
  • Plantillas listas: En la ACMP CTL (Community Template Library) hay plantillas de comandos de cliente con cada paso en texto plano. acmp_lib_install las crea como borrador en tu consola.

Compatibilidad

Probado o requisito
ACMP6.9 y 6.10, con AESB/SICS y API pública habilitada
CC-Writer / Kiosk-WriterACMP 6.10. En caso de desviaciones, por ejemplo tras una actualización de ACMP, la verificación previa bloquea la escritura
ServidorWindows Server con .NET Framework 4.8, derechos de administrador en el servidor ACMP
MCPStreamable HTTP (JSON-RPC 2.0), versión de protocolo 2025-06-18
Clientes de IAPlantillas para Claude Code, Claude Desktop (también como extensión .mcpb), Codex CLI, VS Code/GitHub Copilot, Cursor y Gemini CLI en docs/CLIENTS.md

Inicio rápido

A) Configurar desde tu IA

En el servidor ACMP, clona el repositorio o descomprímelo como ZIP. Inicia allí un agente de IA que pueda ejecutar comandos (Claude Code, Codex CLI, GitHub Copilot en modo agente, Gemini CLI, Cursor o similar) e introduce:

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 contiene el proceso completo: verificación, instalación, configuración inicial, habilitación en la red local, conexión de clientes y resolución de problemas. La mayoría de los agentes leen el archivo por sí mismos. Para Claude Code (CLAUDE.md), Gemini CLI (GEMINI.md) y GitHub Copilot (.github/copilot-instructions.md) se incluyen referencias.

B) Manualmente: el asistente en la terminal

Abre PowerShell en el servidor ACMP, cambia al repositorio e inicia. Si faltan derechos de administrador, el script se reinicia solo tras una consulta de Windows (UAC):

.\install.ps1

Al final, el asistente muestra tu clave de API y los enlaces a la página de aprobación, al panel de control y a la incorporación; si lo deseas, copia la clave al portapapeles. Después pregunta por tu cliente de IA y muestra la configuración lista para él.

Qué hace el asistente en 9 pasos

En cada paso explica qué ocurre y sugiere valores (Enter acepta):

  1. Verifica los requisitos (AESB SICS, puerto 3950, .NET, puerto libre). Si hay un error, indica qué hacer.
  2. Pregunta por la API pública en la consola de ACMP y muestra la ruta de clics.
  3. Instala y compila según C:\ProgramData\AcmpMcp. Config, secretos y registros solo son legibles para administradores y SYSTEM.
  4. Solicita el usuario SICS. La contraseña se introduce oculta.
  5. Configura el servicio y verifica el inicio de sesión en ACMP. Si falla, vuelve a solicitar las credenciales.
  6. Te crea como primer administrador y aprobador.
  7. Vincula tu propia identidad ACMP, si lo deseas. Entonces ACMP verifica tus permisos reales.
  8. Funciones opcionales: PowerShell ad hoc, informes de base de datos, notificación por correo electrónico.
  9. Red: sugiere IP de red local y subred, y habilita el servidor para los PC de administración.

Los clics en la consola de ACMP se describen en docs/ACMP-VORBEREITUNG.md, por ejemplo para la plantilla de comando de cliente de PowerShell ad hoc.

Más comandos: crear, actualizar y desinstalar colegas

Puedes crear más colegas en la terminal o en el navegador a través de /onboarding:

cd C:\ProgramData\AcmpMcp
.\add-user.ps1
ComandoPropósito
.\install.ps1 -CheckOnlysolo verificar, sin cambios (no requiere administrador)
.\install.ps1ejecutar de nuevo = actualizar. La configuración y los operadores se conservan; lo ya hecho se omite
.\install.ps1 -NonInteractive -SicsUser … -AdminName … -AdminEmail …sin preguntas, p. ej. para scripts. La contraseña proviene de $env:ACMP_SICS_PASSWORD
.\set-network-admin.ps1 -BindAddress <IP>cambiar la red más tarde
.\uninstall-admin.ps1eliminar el servicio y la regla de firewall

Conectar cliente

Cualquier cliente MCP que admita Streamable HTTP con cabecera propia se conecta directamente:

URLhttp://<HOST>:8765/
CabeceraAuthorization: Bearer <KEY> (clave de API personal de la página de configuración o incorporación)

Por ejemplo, Claude Code:

claude mcp add --transport http acmp http://<HOST>:8765/ --header "Authorization: Bearer <KEY>" --scope user

Claude Desktop: instala acmp-mcp-<version>.mcpb desde las versiones con doble clic; luego introduce la dirección del servidor y la clave de API en la configuración de la extensión.

Configuraciones listas para todos los clientes habituales están en docs/CLIENTS.md. Los clientes que solo admiten servidores locales (stdio) se conectan mediante el puente mcp-remote.

Funcionamiento

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
Detalles técnicos
  • El servidor se conecta mediante las DLL de cliente propias de Aagon (Aagon.Sis.Sics.*, ya presentes en la instalación de ACMP) con SICS/AESB (wss://127.0.0.1:3950). El protocolo, el cifrado y el inicio de sesión son, por tanto, los mismos que en las herramientas propias de Aagon.
  • Envía comandos ICQL a ACMP. La clave de enrutamiento la determina él mismo; el enrutador virtual lo lee de la configuración (estándar VCMN).
  • Los comandos están disponibles como herramientas MCP a través de JSON-RPC 2.0/HTTP (TcpListener propio, sin necesidad de ACL de URL).
  • Por usuario: cada operador tiene su propia clave de API y, opcionalmente, una identidad ACMP propia. ACMP verifica entonces sus permisos reales (GetOwnUserRights).
  • Aprobación de cuatro ojos: las llamadas de escritura, ejecución y eliminación no se ejecutan de inmediato, sino que se congelan como solicitud. Solo cuando 1 persona (escritura) o 2 personas distintas (destructivas) aprueban en la interfaz web, se inicia la llamada real a ACMP. La aprobación ocurre, por tanto, fuera del LLM.

Así se ve la aprobación

Si la IA solicita un comando de escritura, ejecución o eliminación, llega como solicitud a la página de aprobación. No se ejecuta nada hasta que hayan aprobado suficientes personas distintas. Las imágenes muestran una instancia de demostración con datos ficticios.

Liste der offenen Freigaben mit Risikostufe und Zustimmungen

Vista de detalle y aprobación

La vista de detalle muestra la intención indicada, el solicitante y los equipos de destino, así como el script en texto plano, exactamente como se ejecuta en el cliente:

Detailansicht einer PowerShell-Freigabe mit Absicht, Eckdaten und entschlüsseltem Skript

Debajo se muestran el comando bruto hacia ACMP, una explicación paso a paso con advertencias y los botones para aprobar:

Roh-Befehl, Schritt-für-Schritt-Erklärung und Freigeben/Ablehnen

Un ejemplo del proceso:

  1. Escribes: „En PC-0815 el disco está lleno, limpia la carpeta temporal de Windows.“
  2. La IA busca el equipo (acmp_get_client_id), verifica las unidades (acmp_low_disk_space) y presenta una solicitud de PowerShell (acmp_run_powershell).
  3. En la página de aprobación, dos colegas ven el script en texto plano y hacen clic en „Aprobar“.
  4. Solo entonces se ejecuta el script en el cliente y la IA informa del resultado.

Herramientas

118 herramientas en 10 áreas. Un clic en un área muestra todas las herramientas con su nivel de aprobación:

🟢 se ejecuta de inmediato (solo lectura) · 🟡 aprobación por 1 persona · 🔴 aprobación por 2 personas distintas

Los niveles son los valores estándar del código y se pueden ajustar por herramienta en /settings. Algunas herramientas requieren una función opcional: (DB) la conexión a la base de datos (db.connectionString, solo lectura), (PS) la plantilla de comando de cliente (runPowershell.clientCommandId), (CW) el CC-Writer (ccWriter), (KW) el Kiosk-Writer (kioskWriter). La lista actual la proporciona tools/list. Cada herramienta acepta opcionalmente format: "json".

Sistema y general · 11 herramientas · Información del servidor, permisos propios, acmp_call para cada uno de los 167 comandos de API
HerramientaPropósito
🟢acmp_server_infoVersión de ACMP y datos del servidor
🟢acmp_whoamicon qué usuario de ACMP y con qué permisos se trabaja
🟢acmp_logoutrestablecer la conexión, p. ej. tras un cambio de token
🟢acmp_list_commands, acmp_describelistar los 167 comandos de la API pública y explicarlos con parámetros
🟡acmp_callcualquier comando de API sin herramienta propia. Los comandos de lectura se ejecutan de inmediato; los de escritura requieren aprobación
🟢acmp_approval_statusestado de una solicitud de aprobación
🟢acmp_discover_tables (DB)buscar tablas en la base de datos de ACMP („¿Qué tiene que ver con BitLocker?“)
🟢acmp_db_columns (DB)columnas de una tabla o vista
🟢acmp_db_script_rows, acmp_db_script_blob (ambas DB)filas y columnas binarias de las tablas de comandos de cliente, kiosco y repositorio de archivos (solo estas)
Clientes e inventario · 12 herramientas · „¿Quién fue el último en PC-0815?“, hardware, equipos sin conexión, espacio en disco
HerramientaPropósito
🟢acmp_get_clients, acmp_get_client_id, acmp_client_info (DB)listar equipos, encontrar por nombre o MAC, ficha con IP, MAC y versión del agente
🟢acmp_get_os_infosistema operativo y último usuario que inició sesión („¿Quién fue el último en PC-0815?“)
🟢acmp_get_hardware, acmp_hardware_profile (DB)CPU, RAM, discos, servicios, fabricante, modelo, número de serie
🟢acmp_offline_clients (DB)equipos sin contacto desde hace X días
🟢acmp_agent_versions (DB)distribución de versiones del agente
🟢acmp_low_disk_space (DB)unidades con poco espacio libre
🟢acmp_read_registry, acmp_read_registry_result (ambas PS)leer un valor de registro del cliente (script de lectura fijo)
🟢acmp_db_client_attributes (DB)campos personalizados de un cliente
Software y seguridad · 12 herramientas · CVEs, actualizaciones pendientes, Defender, BitLocker, licencias | | Herramienta | Propósito | |---|---|---| | 🟢 | `acmp_get_software`, `acmp_software_inventory` *(DB)*, `acmp_software_search` *(DB)* | software instalado por equipo y búsqueda ("¿Dónde está 7-Zip?") | | 🟢 | `acmp_outdated_software` *(DB)* | software desactualizado | | 🟢 | `acmp_missing_updates`, `acmp_failed_updates` *(ambas DB)* | actualizaciones de Windows faltantes y fallidas | | 🟢 | `acmp_vulnerabilities`, `acmp_oval_scan_status` *(ambas DB)* | vulnerabilidades (CVE) con puntuación y fecha del último escaneo | | 🟢 | `acmp_defender_health` *(DB)* | estado de Defender ("¿Dónde está desactivada la protección en tiempo real?") | | 🟢 | `acmp_bitlocker_status` *(DB)* | estado de BitLocker por unidad | | 🟢 | `acmp_get_licenses`, `acmp_license_compliance` *(DB)* | licencias con exceso y déficit de cobertura |
Jobs y ejecución · 6 herramientas · Iniciar Client Command, PowerShell como SYSTEM 🔴
HerramientaPropósito
🟢acmp_get_client_commandsClient Commands disponibles
🟢acmp_get_jobs, acmp_job_results (DB), acmp_script_history (DB)qué se ha ejecutado en un equipo y con qué resultado
🟡acmp_enqueue_client_commandiniciar un Client Command existente
🔴acmp_run_powershell (PS)ejecutar PowerShell arbitrario como SYSTEM en un cliente
Client Commands · 15 herramientas · opcional · crear borrador, nueva versión, aprobar, clasificar

La Public API solo puede iniciar Client Commands, no crearlos. Por eso estas herramientas los leen directamente de la base de datos de ACMP, crean borradores si se desea, aprueban borradores propios y clasifican comandos en carpetas. La escritura no está prevista por Aagon y, por tanto, está desactivada por defecto. Configuración: docs/ACMP-VORBEREITUNG.md → "Escribir Client Commands directamente".

HerramientaPropósito
🟢acmp_cc_decode (DB)pasos de un Client Command en texto plano, utilizable como entrada para un nuevo borrador. Las contraseñas se enmascaran
🟢acmp_cc_catalog (DB)qué tipos de pasos aparecen en vuestros comandos, con campos y ejemplos
🟢acmp_cc_folders (DB)árbol de carpetas de los Client Commands, opcionalmente con los comandos por carpeta
🟢acmp_cc_writer_status (DB)estado del writer y resultado de la comprobación de compatibilidad
🟡acmp_cc_create_draft, acmp_cc_update_draft (CW)crear borrador o reemplazar sus pasos (copia de seguridad automática previa)
🟡acmp_cc_restore_draft (CW)restaurar borrador desde una copia de seguridad
🟡acmp_cc_add_file, acmp_cc_remove_file (CW)adjuntar o eliminar archivo de instalación de un borrador (File Repository, con SHA-256)
🟡acmp_cc_new_version (CW)nueva versión de un comando existente como borrador, también de aprobados y ajenos (como "Guardar" en la consola). La versión aprobada sigue funcionando hasta que se apruebe la nueva (acmp_cc_release o consola). Pasa siempre por la página de aprobación; la vista previa muestra los cambios respecto a la versión aprobada
🟡acmp_cc_release (CW)aprobar borradores como en la consola, varios en una sola operación: comandos nuevos propios y nuevas versiones de acmp_cc_new_version (la versión previamente aprobada se sustituye). Pasa siempre por la página de aprobación, incluso si está desactivada por lo demás
🟡acmp_cc_move (CW)mover muchos comandos a otras carpetas en una sola operación, con undo
🟡acmp_cc_add_folder, acmp_cc_update_folder (CW)crear carpeta (con permisos como la carpeta padre), renombrar o mover
🟡acmp_lib_install (DB, CW)instalar plantilla de la ACMP CTL (Community Template Library) o de una carpeta de plantillas propia como borrador. Con dryRun 🟢 también sin writer

El writer solo modifica borradores propios en la carpeta permitida y solo para operadores autorizados. Los comandos existentes solo los toca mediante acmp_cc_new_version: como nueva versión, nunca en carpetas estándar de Aagon; los IDs de pasos y las contraseñas guardadas se conservan; un borrador ajeno solo lo sobrescribe si se solicita expresamente (con copia de seguridad). Cada acción de escritura pasa por la página de aprobación; la vista previa muestra cada paso con sus campos.

Antes de escribir, el servidor comprueba la versión de ACMP, las tablas, los disparadores y los permisos del login de escritura. Además, desempaqueta y vuelve a empaquetar de prueba los 50 comandos más recientes. Si algo difiere, por ejemplo tras una actualización de ACMP, no escribe nada. La aprobación funciona para borradores propios y para versiones guardadas por última vez por el MCP, y solo si el contenido no ha cambiado desde la solicitud. Las versiones posteriores con archivos modificados no se aprueban; eso queda para la consola. Los marcadores de posición como "INSERTAR AQUÍ…" bloquean la aprobación. Probado con ACMP 6.10.

Kiosk · 12 herramientas · opcional · entradas, carpetas, visibilidad, iconos

La Public API tampoco puede mantener el kiosco de ACMP. Por eso estas herramientas lo leen y escriben directamente en la base de datos de ACMP. Esto también está desactivado por defecto. Configuración: docs/ACMP-VORBEREITUNG.md → "Mantener kiosco".

HerramientaPropósito
🟢acmp_kiosk_tree (DB)carpetas del kiosco, entradas y filtros de visibilidad en texto plano; con status: true el resultado de la verificación previa
🟢acmp_kiosk_images (DB)iconos y archivos de imagen existentes en las fuentes permitidas, con vista previa en el chat
🟡acmp_kiosk_add_item (KW)crear Client Command o software gestionado como entrada de kiosco, con icono y filtro de visibilidad (grupo de AD, OU, usuario, contenedor, datos maestros…)
🟡acmp_kiosk_update_items (KW)mover, renombrar, cambiar descripción, icono o filtro de muchas entradas en una sola operación
🟡acmp_kiosk_set_filter, acmp_kiosk_remove_item (KW)cambiar visibilidad de una entrada, eliminar entrada
🟡acmp_kiosk_add_group, acmp_kiosk_update_group (KW)crear carpeta de kiosco, renombrar (DE/EN), cambiar icono y filtro
🟡acmp_kiosk_add_image, acmp_kiosk_set_image, acmp_kiosk_remove_image (KW)subir icono (PNG, JPG, ICO, SVG), establecer, eliminar icono propio sin usar
🟡acmp_kiosk_restore (KW)recuperar un cambio de kiosco desde la copia de seguridad automática

Solo se escribe en carpetas de kiosco que liberéis y en carpetas creadas por el propio MCP. Antes de cada cambio, el servidor guarda el estado anterior. Los usuarios ven los cambios tras "Actualizar" en el kiosco.

Contenedor · 5 herramientas · leer miembros, crear, modificar, eliminar 🔴
HerramientaPropósito
🟢acmp_container_members, acmp_client_containers (ambas DB)equipos en un contenedor y contenedores de un equipo
🟡acmp_create_container, acmp_save_containerscrear o modificar contenedor
🔴acmp_delete_containerseliminar contenedor
Activos y datos maestros · 25 herramientas · prestar activos, contactos, ubicaciones, contratos
HerramientaPropósito
🟢acmp_get_asset_list, acmp_get_asset_typesactivos y tipos de activos
🟡acmp_create_asset, acmp_update_assetcrear o modificar activo
🟡acmp_lend_asset, acmp_return_assetprestar o devolver activo
🟢acmp_get_contacts, _companies, _locations, _departments, _cost_centersleer datos maestros
🟡acmp_create_*, acmp_update_* para contact, company, location, departmentcrear o modificar datos maestros
🟢acmp_get_contracts, acmp_contracts_expiring (DB)contratos y contratos que expiran pronto
🟢acmp_get_custom_fields, _custom_field_list, _master_data_settings, _app_settingsleer campos adicionales y ajustes
Helpdesk · 18 herramientas · "Abre un ticket: la impresora del 2º piso no imprime."
HerramientaPropósito
🟢acmp_get_tickets, acmp_get_ticket, acmp_tickets_by_queryleer tickets, también mediante consultas guardadas
🟢acmp_get_ticket_comments, _worktime, _costs, acmp_get_linked_ticketshistorial, tiempos, costes, enlaces
🟢acmp_helpdesk_settings, acmp_get_assignees, _ticket_templates, _ticket_categories, _ticket_resolutions, _queriesajustes de helpdesk
🟡acmp_create_ticketcrear ticket ("Abre un ticket: la impresora del 2º piso no imprime.")
🟡acmp_update_ticketcambiar responsable o prioridad
🟡acmp_close_ticket, acmp_reopen_ticketcerrar o reabrir ticket
🟡acmp_add_ticket_commentañadir comentario
Soporte remoto · 2 herramientas · ID de TeamViewer y enlace de conexión
HerramientaPropósito
🟢acmp_teamviewer_ids (DB)IDs de TeamViewer de todos los clientes
🟢acmp_teamviewer_connect (DB)enlace de TeamViewer a un equipo, búsqueda también por nombre de usuario

Los prompts de ejemplo están en docs/USAGE.md. Los nuevos comandos nativos se añaden de forma declarativa en api-tools.json, los nuevos informes SQL en db-tools.json. Ambos no requieren recompilación.

Interfaz web

PáginaPropósito
/dashboardresumen: solicitudes abiertas, ejecutadas y rechazadas
/approvalsrevisar y aprobar aprobaciones pendientes
/historyhistorial de todas las solicitudes
/settingsumbrales de aprobación por herramienta
/onboardingcrear operadores adicionales
/changeloghistorial de parches del servidor
/setupconfiguración inicial, solo activa mientras no exista ningún aprobador

El inicio de sesión se realiza mediante un token propio por aprobador y es independiente de la clave de ACMP o MCP: una clave API filtrada no otorga, por tanto, derechos de aprobación.

Configuración

config.example.json está comentado (campos _hinweis). install.ps1 genera a partir de ello config.local.json.

Claves importantes
ClaveSignificado
sics.username / passwordconexión base SICS-/AESB
sics.virtualRouter / wssPortestándar VCMN / 3950
mcp.bindAddress / httpPortestándar 127.0.0.1 / 8765. Acceso LAN mediante set-network-admin.ps1
approval.*aprobación de cuatro ojos, umbrales, notificación SMTP
runPowershell.clientCommandIdopcional, activa acmp_run_powershell / acmp_read_registry
db.connectionStringopcional, activa las herramientas de informes de DB
helpdesk.createdStateIdopcional, estado de ticket para tickets nuevos
ccWriter.*opcional, desactivado por defecto: escribir Client Commands como borrador, aprobar, clasificar. Configurar con setup-cc-writer.ps1, operadores adicionales con setup-cc-writer.ps1 -AddRequester <name>
kioskWriter.*opcional, desactivado por defecto: mantener kiosco. Requiere el CC-writer (mismo login SQL). Configurar con setup-kiosk-writer.ps1
ctl.sourcesopcional, fuentes para acmp_lib_install. Estándar: carpeta ctl en el directorio de instalación, luego el repositorio Herzog-GmbH/acmp-ctl

Seguridad

[!WARNING] El servidor concede acceso completo a ACMP, incluida la ejecución de comandos en todos los dispositivos finales. Trata cada clave API como una contraseña de administrador.

  • Sin TLS integrado. El servidor escucha por defecto solo en 127.0.0.1 y rechaza la operación en LAN sin API-Key. En la LAN, restringís los subredes de origen mediante el firewall. A través de límites de red, se coloca un proxy TLS o VPN delante.
  • install.ps1 restringe la carpeta de instalación a administradores y SYSTEM, porque allí se almacenan las credenciales de acceso.
  • Las contraseñas de los operadores nunca se guardan: acmp-token-setup.exe solo almacena un token cifrado con DPAPI (LocalMachine).
  • /regresult (canal de retorno para acmp_read_registry) es accesible deliberadamente sin clave, porque el cliente no conoce la clave. Solo acepta resultados para tokens abiertos que no se pueden adivinar.
  • Por favor, no informes vulnerabilidades de seguridad como un issue público, sino como se describe en SECURITY.md.
CC-Writer y Kiosk-Writer
  • El CC-Writer opcional escribe con un login SQL propio con exactamente los permisos necesarios (grant-cc-writer.sql), nunca con el acceso de lectura. En SYS_SCRIPTS no puede eliminar nada. Solo crea borradores, guarda una copia antes de cada cambio y solo modifica o libera comandos que él mismo ha creado. Los comandos ajenos solo los modifica como una nueva versión (acmp_cc_new_version, siempre con solicitud de aprobación) y los mueve si se solicita. No puede eliminar nada.
  • El Kiosk-Writer opcional usa el mismo login con los permisos de grant-kiosk-writer.sql. No puede eliminar carpetas y solo escribe en carpetas de kiosk compartidas.
  • Importante para el onboarding: El login SQL pertenece al servidor, no a los operadores. Quién puede solicitar las herramientas de escritura se indica en ccWriter.allowedRequesters (add-user.ps1 pregunta por ello, para operadores de /onboarding: setup-cc-writer.ps1 -AddRequester <name>). Aun así, un aprobador debe dar su consentimiento. ACMP no verifica los permisos de ACMP de la persona en estas herramientas, porque escriben en la base de datos sin pasar por la API pública.

Documentación

ArchivoContenido
AGENTS.mdProcedimiento de configuración para agentes de IA, incl. resolución de problemas
docs/ACMP-VORBEREITUNG.mdClics en la consola de ACMP: API pública, usuarios SICS, funciones opcionales
docs/CLIENTS.mdConfiguración para todos los clientes MCP comunes
docs/USAGE.mdHoja de referencia con ejemplos de prompts para usuarios
config.example.jsonEjemplo de configuración comentado
SECURITY.mdInformar vulnerabilidades de seguridad de forma confidencial

Participar

Los issues y pull requests son bienvenidos. Por favor, en los issues no publiques logs con nombres de host, IPs, nombres de usuario, claves o tokens, sino que enmascáralos antes.

Licencia

MIT. No es un producto oficial de Aagon GmbH. ACMP y AESB son marcas de Aagon GmbH.