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.
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_installlas crea como borrador en tu consola.
Compatibilidad
| Probado o requisito | |
|---|---|
| ACMP | 6.9 y 6.10, con AESB/SICS y API pública habilitada |
| CC-Writer / Kiosk-Writer | ACMP 6.10. En caso de desviaciones, por ejemplo tras una actualización de ACMP, la verificación previa bloquea la escritura |
| Servidor | Windows Server con .NET Framework 4.8, derechos de administrador en el servidor ACMP |
| MCP | Streamable HTTP (JSON-RPC 2.0), versión de protocolo 2025-06-18 |
| Clientes de IA | Plantillas 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):
- Verifica los requisitos (AESB SICS, puerto 3950, .NET, puerto libre). Si hay un error, indica qué hacer.
- Pregunta por la API pública en la consola de ACMP y muestra la ruta de clics.
- Instala y compila según
C:\ProgramData\AcmpMcp. Config, secretos y registros solo son legibles para administradores y SYSTEM. - Solicita el usuario SICS. La contraseña se introduce oculta.
- Configura el servicio y verifica el inicio de sesión en ACMP. Si falla, vuelve a solicitar las credenciales.
- Te crea como primer administrador y aprobador.
- Vincula tu propia identidad ACMP, si lo deseas. Entonces ACMP verifica tus permisos reales.
- Funciones opcionales: PowerShell ad hoc, informes de base de datos, notificación por correo electrónico.
- 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
| Comando | Propósito |
|---|---|
.\install.ps1 -CheckOnly | solo verificar, sin cambios (no requiere administrador) |
.\install.ps1 | ejecutar 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.ps1 | eliminar el servicio y la regla de firewall |
Conectar cliente
Cualquier cliente MCP que admita Streamable HTTP con cabecera propia se conecta directamente:
| URL | http://<HOST>:8765/ |
| Cabecera | Authorization: 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 (
TcpListenerpropio, 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.

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:

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

Un ejemplo del proceso:
- Escribes: „En PC-0815 el disco está lleno, limpia la carpeta temporal de Windows.“
- 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). - En la página de aprobación, dos colegas ven el script en texto plano y hacen clic en „Aprobar“.
- 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
| Herramienta | Propósito | |
|---|---|---|
| 🟢 | acmp_server_info | Versión de ACMP y datos del servidor |
| 🟢 | acmp_whoami | con qué usuario de ACMP y con qué permisos se trabaja |
| 🟢 | acmp_logout | restablecer la conexión, p. ej. tras un cambio de token |
| 🟢 | acmp_list_commands, acmp_describe | listar los 167 comandos de la API pública y explicarlos con parámetros |
| 🟡 | acmp_call | cualquier comando de API sin herramienta propia. Los comandos de lectura se ejecutan de inmediato; los de escritura requieren aprobación |
| 🟢 | acmp_approval_status | estado 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
| Herramienta | Propó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_info | sistema 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 🔴
| Herramienta | Propósito | |
|---|---|---|
| 🟢 | acmp_get_client_commands | Client 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_command | iniciar 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".
| Herramienta | Propó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".
| Herramienta | Propó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 🔴
| Herramienta | Propósito | |
|---|---|---|
| 🟢 | acmp_container_members, acmp_client_containers (ambas DB) | equipos en un contenedor y contenedores de un equipo |
| 🟡 | acmp_create_container, acmp_save_containers | crear o modificar contenedor |
| 🔴 | acmp_delete_containers | eliminar contenedor |
Activos y datos maestros · 25 herramientas · prestar activos, contactos, ubicaciones, contratos
| Herramienta | Propósito | |
|---|---|---|
| 🟢 | acmp_get_asset_list, acmp_get_asset_types | activos y tipos de activos |
| 🟡 | acmp_create_asset, acmp_update_asset | crear o modificar activo |
| 🟡 | acmp_lend_asset, acmp_return_asset | prestar o devolver activo |
| 🟢 | acmp_get_contacts, _companies, _locations, _departments, _cost_centers | leer datos maestros |
| 🟡 | acmp_create_*, acmp_update_* para contact, company, location, department | crear 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_settings | leer campos adicionales y ajustes |
Helpdesk · 18 herramientas · "Abre un ticket: la impresora del 2º piso no imprime."
| Herramienta | Propósito | |
|---|---|---|
| 🟢 | acmp_get_tickets, acmp_get_ticket, acmp_tickets_by_query | leer tickets, también mediante consultas guardadas |
| 🟢 | acmp_get_ticket_comments, _worktime, _costs, acmp_get_linked_tickets | historial, tiempos, costes, enlaces |
| 🟢 | acmp_helpdesk_settings, acmp_get_assignees, _ticket_templates, _ticket_categories, _ticket_resolutions, _queries | ajustes de helpdesk |
| 🟡 | acmp_create_ticket | crear ticket ("Abre un ticket: la impresora del 2º piso no imprime.") |
| 🟡 | acmp_update_ticket | cambiar responsable o prioridad |
| 🟡 | acmp_close_ticket, acmp_reopen_ticket | cerrar o reabrir ticket |
| 🟡 | acmp_add_ticket_comment | añadir comentario |
Soporte remoto · 2 herramientas · ID de TeamViewer y enlace de conexión
| Herramienta | Propó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ágina | Propósito |
|---|---|
/dashboard | resumen: solicitudes abiertas, ejecutadas y rechazadas |
/approvals | revisar y aprobar aprobaciones pendientes |
/history | historial de todas las solicitudes |
/settings | umbrales de aprobación por herramienta |
/onboarding | crear operadores adicionales |
/changelog | historial de parches del servidor |
/setup | configuració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
| Clave | Significado |
|---|---|
sics.username / password | conexión base SICS-/AESB |
sics.virtualRouter / wssPort | estándar VCMN / 3950 |
mcp.bindAddress / httpPort | estándar 127.0.0.1 / 8765. Acceso LAN mediante set-network-admin.ps1 |
approval.* | aprobación de cuatro ojos, umbrales, notificación SMTP |
runPowershell.clientCommandId | opcional, activa acmp_run_powershell / acmp_read_registry |
db.connectionString | opcional, activa las herramientas de informes de DB |
helpdesk.createdStateId | opcional, 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.sources | opcional, 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.1y 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.ps1restringe 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.exesolo almacena un token cifrado con DPAPI (LocalMachine). /regresult(canal de retorno paraacmp_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. EnSYS_SCRIPTSno 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.ps1pregunta 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
| Archivo | Contenido |
|---|---|
AGENTS.md | Procedimiento de configuración para agentes de IA, incl. resolución de problemas |
docs/ACMP-VORBEREITUNG.md | Clics en la consola de ACMP: API pública, usuarios SICS, funciones opcionales |
docs/CLIENTS.md | Configuración para todos los clientes MCP comunes |
docs/USAGE.md | Hoja de referencia con ejemplos de prompts para usuarios |
config.example.json | Ejemplo de configuración comentado |
SECURITY.md | Informar 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.