mcpField
A
ACMP MCP Server

ACMP MCP Server

本地服务
github.com云与基础设施13 天前更新

关于 ACMP MCP Server

ACMP MCP Server 将 MCP 客户端连接到 Aagon ACMP Public API,可查询设备、库存、漏洞、作业和工单。它运行在 ACMP 服务器上,记录写入、执行和删除操作,并提供网页紧急制动开关以阻止这些操作。

主要功能

  1. 01查询客户端、库存、CVE、作业和工单
  2. 02记录写入、执行及删除操作
  3. 03通过紧急制动阻止修改类工具
  4. 04用 dryRun 预览支持的变更
  5. 05为每位操作员配置 API 密钥和可选 ACMP 身份

适用场景

  1. 01查找长期离线的设备
  2. 02检查会更改 ACMP 的操作记录
  3. 03发生事件时停止所有写入和执行工具
  4. 04查看客户端命令的部署进度

MCP 相关

该服务通过 Streamable HTTP 将 ACMP API 操作作为 MCP 工具提供,供支持此传输方式及授权请求头的客户端使用。仅支持 stdio 的客户端可通过 `mcp-remote` 接入。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbacmp-mcp-1.2.0.mcpb

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

ACMP-MCP-Server

让任何 AI 都能使用 Aagon ACMP——活动日志和紧急制动功能,直接运行在你们的 ACMP 服务上。

已通过 ACMP 6.9 和 6.10 测试 MCP Streamable HTTP 179 个工具 活动日志和紧急制动
Windows Server .NET Framework 4.8 MIT 许可证 最近提交

快速开始 · 连接客户端 · 工具 · 安全 · 文档

说明

English: MCP server for Aagon ACMP's Public API, with an activity log of every write/execute/delete action and an emergency brake that blocks them all (the four-eyes approval of version 1 is gone). 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.

一个用于 ACMP 公共 API(Aagon Client Management Platform)的 MCP 服务。你可以用日常语言提问,例如“哪些计算机已离线 30 天?”,AI 会直接从 ACMP 获取答案。

概览

  • 支持任何 MCP 客户端: Claude、ChatGPT/Codex、GitHub Copilot、Gemini、Cursor……
  • 覆盖范围广: 客户端、容器、作业/客户端命令、工单、资产、库存、漏洞和主数据。
  • 活动日志和紧急制动: 所有操作立即生效,执行前 dryRun 会显示预览。每项写入、执行和删除操作都会记录操作人员、目标、意图和结果;网页界面上的紧急制动功能可以一键锁定所有这些操作。版本 1 的双人审批已取消(原因)。
  • 按操作人员区分: 每人使用自己的 API 密钥,也可以选择使用自己的 ACMP 身份。这样 ACMP 就会检查该人员的实际权限。
  • 单个 EXE,无需云服务: 直接运行在 ACMP 服务上。无需 IIS,也无需 .NET SDK。
  • 浏览器中的运行概况: 首页显示当前的重要信息(失去联系的计算机、磁盘已满的计算机、过期扫描、错误较多的作业),并提供共用的待办事项列表、按计算机查看客户端命令的部署状态,以及 Windows 更新的错误停止信息。
  • 可选功能: 创建、审批、分类并设置参数的客户端命令;维护 Kiosk;拒绝 Windows 更新或在测试环中暂停更新;订阅并分发 Managed Software;设置容器筛选器、维护时段和安全配置文件;编写 Unix 脚本;创建自定义字段;以及在 ACMP 数据库中直接启用或创建作业。默认关闭。
  • 现成模板: ACMP CTL(Community Template Library,社区模板库)中提供客户端命令模板,其中每个步骤都以明文列出。acmp_lib_install 会将模板作为草稿添加到你们的 Console 中。

兼容性

已测试或要求
ACMP6.9 和 6.10,搭配 AESB/SICS,且已启用 Public API
数据库写入工具(CC、Kiosk、WUM、Unix 脚本、字段和作业写入工具)ACMP 6.10(Unix 脚本从 6.10 开始提供)。如果存在差异,例如 ACMP 更新后,预检会阻止写入
服务器Windows Server,安装 .NET Framework 4.8,并在 ACMP 服务器上拥有管理员权限
MCPStreamable HTTP(JSON-RPC 2.0),协议版本 2025-06-18
AI 客户端Claude Code、Claude Desktop(也可作为扩展 .mcpb)、Codex CLI、VS Code/GitHub Copilot、Cursor 和 Gemini CLI 的模板见 docs/CLIENTS.md

快速开始

A) 让 AI 为你完成设置

在 ACMP 服务器上克隆仓库或解压 ZIP 文件。在该服务器上启动一个能够执行命令的 AI Agent(Claude Code、Codex CLI、GitHub Copilot Agent 模式、Gemini CLI、Cursor 等),然后输入:

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 包含完整流程:检查、安装、初始设置、LAN 共享、客户端连接和故障排除。大多数 Agent 会自动读取该文件。我们还提供了指向该文件的引用,供 Claude Code(CLAUDE.md)、Gemini CLI(GEMINI.md)和 GitHub Copilot(.github/copilot-instructions.md)使用。

B)手动操作:在终端中运行助手

在 ACMP 服务器上打开 PowerShell,切换到仓库目录并启动。如果没有管理员权限,脚本会在 Windows 提示(UAC)后自动以管理员身份重新启动:

.\install.ps1

最后,助手会显示你们的 API 密钥和 Web 登录信息(用于概览、活动、紧急停止和引导的短名称 + Web 令牌),并可按需将密钥复制到剪贴板。随后,它会询问你们使用的 AI 客户端,并显示相应的完整配置。

助手会执行的 9 个步骤

每个步骤都会说明正在进行的操作,并提供建议值(按 Enter 键即可采用):

  1. 检查前提条件(AESB SICS、端口 3950、.NET、可用端口)。如有问题,会说明该怎么处理。
  2. 询问 ACMP 控制台中的 Public API,并显示点击路径。
  3. 安装并构建到 C:\ProgramData\AcmpMcp。配置、机密和日志仅对管理员和 SYSTEM 可读。
  4. 询问 SICS 用户。 输入密码时会隐藏内容。
  5. 设置服务并检查 ACMP 登录。 如果登录失败,会再次询问凭据。
  6. 将你设为首位管理员(MCP API 密钥和 Web 登录信息)。
  7. 如果你愿意,关联你自己的 ACMP 身份。之后 ACMP 会检查你的实际权限。
  8. 可选功能: 即时 PowerShell、数据库报告、数据库写入工具。
  9. 网络: 建议 LAN IP 和子网,并允许管理员电脑访问服务器。

docs/ACMP-VORBEREITUNG.md 介绍了 ACMP 控制台中的点击操作,例如即时 PowerShell 的客户端命令模板。

其他命令:添加同事、更新、卸载

你们可以在终端中添加其他同事,也可以通过浏览器访问 /onboarding 添加:

cd C:\ProgramData\AcmpMcp
.\add-user.ps1
命令用途
.\install.ps1 -CheckOnly仅检查,不做任何更改(无需管理员权限)
.\install.ps1再次运行即可更新。配置和操作人员会保留,已完成的步骤会跳过。版本 1 的配置会在此过程中转换(approval → web)
.\install.ps1 -NonInteractive -SicsUser … -AdminName …无需交互确认,例如用于脚本。密码从 $env:ACMP_SICS_PASSWORD 读取
.\set-network-admin.ps1 -BindAddress <IP>稍后更改网络设置
.\renew-web-tokens.ps1更新 Web 令牌(全部更新,或使用 -Name … 指定)。更新后旧令牌将失效,新令牌只会在窗口中显示一次
.\uninstall-admin.ps1移除服务和防火墙规则

连接客户端

任何支持 Streamable HTTP 且可设置自定义请求头的 MCP 客户端都可以直接连接:

URLhttp://<HOST>:8765/
请求头Authorization: Bearer <KEY>(个人 API 密钥,可在设置或引导页面获取)

例如,Claude Code:

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

Claude Desktop: 双击从 Releases 下载的 acmp-mcp-<version>.mcpb 进行安装,然后在扩展程序的设置中填写服务器地址和 API 密钥。

所有常见客户端的完整配置请见 docs/CLIENTS.md。仅支持本地(stdio)服务的客户端,可通过 mcp-remote 桥接接入。

工作原理

flowchart TB
    KI["KI-Client<br/>Claude · Codex · Copilot · Gemini · Cursor"]
    subgraph SRV["ACMP-Server"]
        MCP["ACMP-MCP-Server<br/>(Windows-EXE)"]
        LOG[("Aktivitätsprotokoll<br/>+ Notbremse")]
        ACMP[("ACMP<br/>Public API über SICS/AESB")]
        DB[("ACMP-Datenbank")]
    end
    TEAM(["IT im Browser<br/>Weboberfläche"])
    KI -->|"MCP · HTTP + API-Key"| MCP
    MCP -->|"lesen · schreiben · ausführen"| ACMP
    MCP -->|"jede Schreibaktion"| LOG
    TEAM -->|"Aktivität ansehen · Notbremse ziehen"| LOG
    MCP -.->|"optional: DB-Reports, Writer"| DB
技术细节
  • 服务通过 Aagon 自己的客户端 DLL(Aagon.Sis.Sics.*,已包含在 ACMP 安装程序中)连接到 SICS/AESB(wss://127.0.0.1:3950)。因此,协议、加密和登录方式与 Aagon 自己的工具相同。
  • 服务向 ACMP 发送 ICQL 命令。路由密钥由服务自行确定,虚拟路由器则从配置中读取(默认值为 VCMN)。
  • 这些命令通过 JSON-RPC 2.0/HTTP 作为 MCP 工具提供(使用自有的 TcpListener,无需 URL ACL)。
  • **按用户区分:**每位操作人员都有独立的 API 密钥,也可以配置独立的 ACMP 身份。这样,ACMP 会检查该身份的实际权限(GetOwnUserRights)。
  • **活动日志和紧急停止:**每次写入、执行或删除操作之前,服务都会向 activity-JJJJ-MM.jsonl 写入一条记录。如果无法写入,操作就不会执行。操作结束后还会记录结果。紧急停止开关(notbremse.json)会在服务端锁定所有这些工具,直到有人在 Web 界面中解除锁定。某次调用是否会写入,由服务(工具列表或命令名称)决定,而不是由大模型决定。只有确实会处理 dryRun 的工具才支持它。

版本 2:无需双人审批

在版本 1 中,写入、执行和删除命令会作为申请提交到审批页面,只有获批后才会执行。根据我们的实际经验,从未有申请因安全原因被拒绝,点击审批只会拖慢流程。从版本 2 开始,这些工具会立即生效。为此,我们提供了:

  • **预览:**几乎所有写入工具都支持 dryRun: true。服务的提示会要求 AI 先显示预览,并在聊天中等待人工确认;对于 PowerShell 和删除操作,则始终如此。
  • **活动日志:**记录谁在何时对哪个目标执行了什么操作,以及操作意图和结果。密码会被遮盖。
  • **紧急停止:**Web 界面上的一个开关,可立即锁定所有操作人员的全部写入工具。读取和 dryRun 操作仍可继续。

操作流程示例:

  1. 你们说:“PC-0815 的磁盘满了,清理一下 Windows 临时文件夹。”
  2. AI 会查找这台计算机(acmp_get_client_id)、检查磁盘空间(acmp_low_disk_space),并向你们展示 PowerShell 脚本。
  3. 你们确认后,AI 会运行脚本(acmp_run_powershell)。此次调用会立即记录在活动日志中。
  4. AI 会报告结果。

**从版本 1 更新:**运行 git pull 和 .\install.ps1。助手会更改配置(approval → web,并创建备份)。你们之前的审批令牌之后将作为 Web 登录凭据使用。但这些令牌曾出现在审批邮件的链接中,因此请在更新后使用 .\renew-web-tokens.ps1 重新生成令牌(以管理员身份在安装目录中运行)。即使不重新安装,服务仍会读取旧的 approval 配置段(仅包含 publicUrl、requester 和 approvers)。未处理的审批申请将不再执行。

重要

无需审批后,安全性取决于你们的操作人员以及获得 API 密钥的对象。请将每个密钥视同域管理员密码;不要让 AI 执行来自工单、文件或网页的指令;如有疑虑,请立即启动紧急停止。

工具

12 个类别中共有 179 个工具。点击类别即可查看其中的所有工具及其作用:

🟢 读取 · 🟡 写入(立即生效,并记录在日志中) · 🔴 执行或删除(关键操作)。紧急停止会锁定 🟡 和 🔴 工具。 哪些工具会修改内容,也可通过 /settings 查看。部分工具需要可选功能:(DB) 数据库连接(db.connectionString,只读)、(PS) 客户端命令模板(runPowershell.clientCommandId)、(CW) CC Writer(ccWriter)、(KW) Kiosk Writer(kioskWriter)、(WW) WUM Writer(wumWriter)、(UW) Unix 脚本 Writer(unixWriter)、(FW) 字段 Writer(cfWriter)、(JW) Job Writer(jobWriter)。当前列表由 tools/list 提供。每个工具都可选接受 format: "json"。

系统与常规 · 16 个工具 · 服务器信息、自己的权限、服务器作业、邮件队列、待处理事项、适用于 167 个 API 命令中每一个的 acmp_call
工具用途
🟢acmp_server_infoACMP 版本和服务器数据
🟢acmp_whoami当前使用的 ACMP 用户和权限
🟢acmp_logout重新建立连接,例如在令牌更换后
🟢acmp_list_commands, acmp_describe列出所有 167 个 Public API 命令并说明其参数
🟡acmp_call无需专用工具即可调用任何 API 命令。是否写入由命令名称决定(Get…/List… 表示读取,Delete…/Remove… 表示删除,其他则表示写入)
🟢acmp_discover_tables (DB)在 ACMP 数据库中搜索表(“哪些内容与 BitLocker 有关?”)
🟢acmp_db_columns (DB)查看表或视图的列
🟢acmp_db_script_rows, acmp_db_script_blob (均为 DB)Client Command、Kiosk、Unix Script 和 File Repository 表中的行和二进制列(仅限这些表)
🟢acmp_server_jobs (DB)ACMP 服务器自身的任务(同步、下载、清理、报告),包含最近一次运行和最近一次错误消息
🟢acmp_mail_queue (DB)ACMP 服务器中滞留在队列里的邮件,以及邮件服务器的错误消息
🟢acmp_console_users (DB)ACMP Console 的用户和组,包含角色、AD 映射以及当前已登录的用户
🟡acmp_send_report立即生成一份 Console 报告并通过邮件发送,仅发送到 reports.allowedMailDomains 中的域
🟢acmp_open_itemsIT 团队的共享“待处理事项”列表(显示在 Web 界面的仪表板中)
🟡acmp_open_item_set创建、修改、完成或重新打开待处理事项;“创建者”始终是 API 密钥的操作人员
客户端与资产清单 · 22 个工具 · “最近谁用过 PC-0815?”,硬件、电池和 TPM、服务、共享、个性化字段 | | 工具 | 用途 | |---|---|---| | 🟢 | `acmp_get_clients`, `acmp_get_client_id`, `acmp_client_info` *(DB)* | 列出计算机,通过计算机名称(经由 DB)或 MachineId 和 MAC 查找 ClientId,查看包含 IP、MAC 和 Agent 版本的资料 | | 🟢 | `acmp_get_os_info` | 操作系统和最近登录的用户(“谁最近使用过 PC-0815?”) | | 🟢 | `acmp_get_hardware`, `acmp_hardware_profile` *(DB)* | CPU、RAM、磁盘、服务、制造商、型号、序列号 | | 🟢 | `acmp_offline_clients` *(DB)* | X 天内未联系的计算机 | | 🟢 | `acmp_agent_versions` *(DB)* | Agent 版本分布 | | 🟢 | `acmp_low_disk_space` *(DB)* | 可用空间不足的驱动器 | | 🟡 | `acmp_read_registry`, `acmp_read_registry_result` *(两者均为 PS)* | 从客户端读取一个注册表值(固定的读取脚本;作为作业在客户端运行,因此在协议中以及触发紧急停止时会被拦截) | | 🟢 | `acmp_db_client_attributes` *(DB)* | 客户端的自定义字段 | | 🟢 | `acmp_cf_list` *(DB)* | 包含表、列和类型的自定义字段;也可按需查看各客户端的值 | | 🟡 | `acmp_cf_create` *(FW)* | 像在控制台中一样为客户端创建自定义字段(整数或文本,可选创建新表) | | 🟡 | `acmp_cf_set_value` | 像在控制台中一样设置客户端某个自定义字段的值(Public API,不运行脚本),并检查长度、数值范围和选项列表 | | 🟢 | `acmp_os_builds` *(DB)* | 各客户端的 Windows 版本和修订号(UBR):累积更新是否确实已安装? | | 🟢 | `acmp_user_logons` *(DB)* | 根据 Agent 的记录查看登录情况:某人使用过哪些计算机,某台计算机由谁使用过 | | 🟢 | `acmp_hardware_health` *(DB)* | 各客户端的电池剩余容量和 TPM 版本,按电池状况从差到好排序 | | 🟢 | `acmp_services_search` *(DB)* | 全网的 Windows 服务:服务在哪些计算机上运行、已停止或已禁用,以及使用的账户 | | 🟢 | `acmp_shares` *(DB)* | 客户端的网络共享,不包括管理共享 | | 🟢 | `acmp_windows_features` *(DB)* | 全网的可选 Windows 功能(“哪些地方仍启用了 SMB1?”) | | 🔴 | `acmp_delete_clients` | 像在控制台中执行“删除客户端”一样从 ACMP 中移除旧客户端(最多 25 个,无法撤销)。受保护的客户端以及过去 30 天内联系过的计算机会被拒绝(除非使用 `force`) |
软件与安全 · 22 个工具 · CVE、缺失的更新、拒绝更新、测试环中的错误停止、Defender、BitLocker、许可证 | | 工具 | 用途 | |---|---|---| | 🟢 | `acmp_get_software`, `acmp_software_inventory` *(DB)*, `acmp_software_search` *(DB)* | 按计算机查看已安装的软件并搜索(“7-Zip 安装在哪?”) | | 🟢 | `acmp_outdated_software` *(DB)* | 过时的软件 | | 🟢 | `acmp_missing_updates`, `acmp_failed_updates` *(两者均为 DB)* | 缺失和安装失败的 Windows 更新 | | 🟢 | `acmp_wum_declined` *(DB)* | 已拒绝的 Windows 更新、备注及受影响的客户端;使用 `scope: "open"` 查看尚未处理的候选项 | | 🟡 | `acmp_wum_decline`, `acmp_wum_restore` *(WW)* | 像在控制台中一样拒绝 Windows 更新或撤销拒绝;每个任务最多 10 项,且必须填写备注 | | 🟢 | `acmp_wum_update_clients` *(DB)* | 哪些客户端需要、已安装或安装失败的更新(ID、KB 编号或标题) | | 🟢 | `acmp_wu_diagnosis` *(DB)* | 更新管理的注册表检查:缺失的 WSUS 策略、已暂停的更新、Windows Update for Business | | 🟢 | `acmp_wum_rings` *(DB)* | 带故障停止的分发环:每项处于测试环的更新在测试计算机上的状态、计划的后续发布,以及停止原因 | | 🟡 | `acmp_wum_ring_hold` *(WW)* | 暂停测试环中的更新(关闭自动过渡) | | 🔴 | `acmp_wum_ring_release` *(WW)* | 让已暂停的更新继续运行或立即放行(针对严重漏洞的紧急处理) | | 🟢 | `acmp_security_profiles` *(DB)* | ACMP 的 BitLocker 和 Defender 配置文件、容器及设置 | | 🟢 | `acmp_vulnerabilities`, `acmp_oval_scan_status` *(两者均为 DB)* | 漏洞(CVE)的评分和上次扫描时间 | | 🟢 | `acmp_oval_definitions` *(DB)* | 在整个设备群的 OVAL 定义中按 CVE 或产品搜索(“ACMP 已知该 CVE 吗?哪些设备受影响?”),并提示自发布以来已扫描的客户端数量 | | 🟢 | `acmp_defender_health` *(DB)* | Defender 状态(“哪些设备关闭了实时保护?”) | | 🟢 | `acmp_bitlocker_status` *(DB)* | 各驱动器的 BitLocker 状态 | | 🟢 | `acmp_get_licenses`, `acmp_license_compliance` *(DB)* | 许可证及超额和不足情况 |

如果某项更新在测试计算机上因实际错误而安装失败,或者即将发布时尚未安装到任何测试计算机上,故障停止机制会暂停该更新。可按需启用服务器上的监控程序,每小时检查一次并通过邮件报告(wumWatch 默认关闭)。规则见:docs/USAGE.md。

托管软件 · 6 个工具 · 订阅、各环版本、设备群分发、测试安装
工具用途
🟢acmp_msw_packages (DB)已订阅的软件包(或整个目录),包括最新版本和已批准版本、安装该软件包及有待处理更新的客户端、定期任务
🟢acmp_msw_package (DB)软件包详情:各分发环的版本、设备群中的版本分布、定期任务、参数
🟢acmp_msw_client (DB)客户端的托管软件状态及最近的运行记录
🟡acmp_msw_subscribe (JW)像在控制台中一样订阅软件包;下载和批准由 ACMP 服务完成
🔴acmp_msw_job_create (JW)为某个容器中的软件包创建定期任务(安装/更新或仅更新)
🔴acmp_msw_test_install (JW)像“分配托管软件”一样,将软件包一次性发送给 1–5 个客户端,例如用于测试

Public API 无法分发托管软件。写入工具属于 Job-Writer,还需要 grant-msw-writer.sql。MCP 无法立即通知 Agent:Agent 会在下次查询任务时获取该任务。

作业与执行 · 20 个工具 · 检查、启用和创建定期作业,步骤日志,维护时段,Agent 计划程序,以 SYSTEM 身份运行 PowerShell 🔴
工具用途
🟢acmp_get_client_commands可用的客户端命令
🟢acmp_get_jobs、acmp_job_results、acmp_script_history (均为 DB)查看某台计算机有哪些作业、运行过什么以及运行结果
🟢acmp_jobs (DB)容器上的定期作业,包括目标、以明文显示的启动条件、最近 7 天和 30 天的运行及错误,以及提示(“哪些作业每小时运行且未设置为‘一次性’?”)
🟢acmp_agent_tasks、acmp_scanner_status、acmp_maintenance_windows (均为 DB)Agent 计划程序任务(扫描器),包括启动条件和容器;每个客户端和扫描器的最新数据;维护时段
🟡acmp_job_set_enabled、acmp_job_restore (JW)像在控制台中一样启用或禁用定期作业;从备份还原任何作业更改
🔴acmp_job_set_condition (JW)为容器设置启动条件(一次性、Agent 启动时、每天、每小时、维护时段内)。适用于该容器的所有定期作业
🔴acmp_job_delete (JW)像在控制台中一样删除定期作业;保留作业历史记录和作业模板;一次性作业的删除方式与作业监视器中的“删除”相同
🔴acmp_job_create (JW)在容器上创建不带参数的客户端命令定期作业
🟢acmp_job_log (DB)客户端命令运行的步骤日志:每个步骤的结果、耗时和消息
🟡acmp_maintenance_window_create (JW)像在控制台中一样创建维护配置文件(按星期几设置时段)
🔴acmp_maintenance_window_assign、acmp_maintenance_window_delete (JW)为容器分配或取消分配维护配置文件,删除未使用的配置文件
🔴acmp_agent_template_assign (JW)为容器分配或取消分配 Agent 计划程序模板
🔴acmp_enqueue_client_command启动现有客户端命令
🔴acmp_run_powershell (PS)以 SYSTEM 身份在客户端上运行任意 PowerShell

Public API 无法修改作业。因此,作业写入工具会直接写入 ACMP 数据库,且默认处于禁用状态。每个请求最多处理 10 个作业,操作前会先备份;acmp_job_restore 可还原任何更改。设置方法:docs/ACMP-VORBEREITUNG.md →“其他写入工具”。

客户端命令 · 20 个工具 · 可选 · 创建草稿、新建版本、设置参数、发布、整理归档、删除

Public API 只能启动客户端命令,不能创建客户端命令。因此,这些工具会直接从 ACMP 数据库读取客户端命令,按需创建草稿、发布自行创建的草稿,并将命令整理到文件夹中。Aagon 不支持写入,因此默认处于禁用状态。设置方法:docs/ACMP-VORBEREITUNG.md →“直接写入客户端命令”。

| | 工具 | 用途 | |---|---|---| | 🟢 | `acmp_cc_decode` *(DB)* | 以纯文本形式解码 Client Command 的步骤,可用作新草稿的输入。密码会被遮蔽 | | 🟢 | `acmp_cc_catalog` *(DB)* | 查看 Commands 中包含哪些步骤类型,以及相应字段和示例 | | 🟢 | `acmp_cc_folders` *(DB)* | 查看 Client Commands 的文件夹树,也可选择显示各文件夹中的 Commands | | 🟢 | `acmp_cc_writer_status` *(DB)* | 查看 Writer 状态和兼容性检查结果 | | 🟡 | `acmp_cc_create_draft`, `acmp_cc_update_draft` *(CW)* | 创建草稿或替换其中的步骤(会先自动备份) | | 🟡 | `acmp_cc_restore_draft` *(CW)* | 将草稿还原到某个备份 | | 🟡 | `acmp_cc_add_file`, `acmp_cc_remove_file` *(CW)* | 为草稿附加或移除安装文件(File Repository,带 SHA-256) | | 🟡 | `acmp_cc_new_version` *(CW)* | 将现有 Command 创建为新版本草稿,也适用于已发布和他人创建的 Command(类似于控制台中的“保存”)。新版本发布前,已发布版本会继续运行(通过 `acmp_cc_release` 或控制台发布)。预览(`dryRun`)会显示与已发布版本相比的更改 | | 🟡 | `acmp_cc_release` *(CW)* | 像在控制台中一样发布草稿;可在一个任务中发布多个草稿:自己新建的 Commands,以及通过 `acmp_cc_new_version` 创建的新版本(会取代之前发布的版本)。请先运行 `dryRun`,预览会显示每个 Command | | 🟢 | `acmp_cc_parameters` *(DB)* | 查看 Command 的参数(文本、选项、复选框),这些参数由 ACMP 在作业和 Kiosk 中询问 | | 🟡 | `acmp_cc_set_parameters` *(CW)* | 像控制台中的对话框一样设置参数,设置会立即生效,无需新建版本 | | 🟡 | `acmp_cc_move` *(CW)* | 在一个任务中将多个 Commands 移动到其他文件夹,并支持 `undo` | | 🟡 | `acmp_cc_add_folder`, `acmp_cc_update_folder` *(CW)* | 创建文件夹(权限与父文件夹相同)、重命名或移动文件夹 | | 🟢 | `acmp_lib_search` | 在 [ACMP CTL](https://herzog-gmbh.github.io/acmp-ctl/) 或自定义模板文件夹中搜索模板,并查看参数和前提条件 | | 🟡 | `acmp_lib_install` *(DB, CW)* | 将 [ACMP CTL](https://herzog-gmbh.github.io/acmp-ctl/)(Community Template Library)或自定义模板文件夹中的模板安装为草稿。使用 `dryRun` 时 🟢 即使没有 Writer 也可运行 | | 🔴 | `acmp_cc_delete` *(JW)* | 像在控制台中一样删除 Client Command 及其所有版本。拒绝删除:有定期作业的 Commands、位于 Aagon 标准文件夹中的 Commands、在控制台中已打开的 Commands,以及 MCP 自身的模板 | | 🔴 | `acmp_cc_delete_folder` *(JW)* | 删除空的 Client Command 文件夹及其空子文件夹 |

Writer 只会修改允许文件夹中由自己创建的草稿,并且仅供获准的操作员使用。对于现有 Commands,它只会通过 acmp_cc_new_version 进行修改:创建新版本,绝不修改 Aagon 标准文件夹中的内容,保留步骤 ID 和已保存的密码;只有在明确要求时才会覆盖他人创建的草稿(并进行备份)。预览(dryRun)会显示每个步骤及其字段。

写入前,服务端会检查 ACMP 版本、表、触发器和写入登录帐号的权限。此外,还会试着解包并重新打包最近的 50 个 Commands。如果发现差异(例如 ACMP 更新后),则不会写入。可发布自己创建的草稿,以及最近由 MCP 保存的版本。对于包含已更改文件的后续版本,不会进行发布,需由控制台处理。像“HIER … EINTRAGEN”这样的占位符会阻止发布。已在 ACMP 6.10 上测试。

Kiosk · 13 个工具 · 可选 · 条目、文件夹、可见性、图标 Public API 也无法维护 ACMP-Kiosk。因此,这些工具会直接在 ACMP 数据库中读取和写入。此功能默认也处于关闭状态。设置方法:[`docs/ACMP-VORBEREITUNG.md`](docs/ACMP-VORBEREITUNG.md#kiosk-pflegen-kiosk-writer) →“维护 Kiosk”。
工具用途
🟢acmp_kiosk_tree (DB)以纯文本形式显示 Kiosk 文件夹、条目和可见性筛选条件;使用 status: true 可查看预检结果
🟢acmp_kiosk_images (DB)显示允许来源中现有的图标和图像文件,并在聊天中预览
🟡acmp_kiosk_add_item (KW)将 Client Command 或 Managed Software 添加为 Kiosk 条目,并设置图标和可见性筛选条件(AD 组、OU、用户、容器、主数据等)
🟡acmp_kiosk_update_items (KW)在一个任务中移动多个条目、重命名条目,或更改描述、图标或筛选条件
🟡acmp_kiosk_set_filter, acmp_kiosk_remove_item (KW)更改条目的可见性、移除条目
🟡acmp_kiosk_add_group, acmp_kiosk_update_group (KW)新建 Kiosk 文件夹、重命名(DE/EN),更改图标和筛选条件
🟡acmp_kiosk_add_image, acmp_kiosk_set_image, acmp_kiosk_remove_image (KW)上传图标(PNG、JPG、ICO、SVG)、设置图标、移除未使用的自定义图标
🟡acmp_kiosk_restore (KW)从自动备份中恢复 Kiosk 更改
🔴acmp_kiosk_delete_group (JW)删除空的 Kiosk 文件夹

仅会在你们授权的 Kiosk 文件夹以及 MCP 自行创建的文件夹中写入。每次更改前,服务都会备份旧状态。用户在 Kiosk 中点击“刷新”后即可看到更改。

Unix Scripts · 6 个工具 · 可选 · 适用于 Linux 和 macOS 的 Bash/Zsh,每个客户端分别显示输出

Unix Scripts(ACMP 6.10,Desktop Automation)通过 ACMP Unix Agent,以 root 身份在 Linux 和 macOS 客户端上运行。Public API 同样无法创建 Unix Scripts。写入功能默认处于关闭状态。设置方法:docs/ACMP-VORBEREITUNG.md →“其他写入工具”。

工具用途
🟢acmp_unix_scripts (DB)显示脚本、文件夹、解释器和已授权版本;也可按需显示所有版本、分发环和内容
🟢acmp_unix_results (DB)从作业监视器中查看每个客户端的运行记录及完整输出(StdOut/StdErr)
🟡acmp_unix_script_create (UW)新建脚本,并将版本 1 放入测试环 1
🟡acmp_unix_script_new_version (UW)新建版本,预览会显示已更改的行
🟡acmp_unix_script_set_ring (UW)更改版本的分发环;ring: 255 表示发布该版本
🔴acmp_unix_script_delete (JW)按照控制台中的方式删除脚本及其所有版本;以往的输出会保留

MCP 不会修改现有版本;只能删除整个脚本。由于 ACMP 既没有 API,也没有 Job Collection,因此无法启动 Unix 作业。你们需要在控制台中操作(容器或查询 →“运行 Unix 作业”),之后可通过 acmp_unix_results 读取结果。如果没有可用的 Unix Script 许可证,ACMP 会将作业报告为“成功”,但脚本实际上不会运行。acmp_unix_results 会对此作出提示。

容器 · 9 个工具 · 读取、新建和更改成员及筛选条件、安全配置文件,以及删除 🔴 | | 工具 | 用途 | |---|---|---| | 🟢 | `acmp_container_members`, `acmp_client_containers` *(beide DB)* | 查看容器中的计算机和计算机所属的容器 | | 🟡 | `acmp_create_container`, `acmp_save_containers` | 创建或修改容器 | | 🟡 | `acmp_container_set_restriction` *(JW)* | 设置容器的客户端限制:仅允许其操作系统系列中的客户端,或允许所有客户端 | | 🟢 | `acmp_container_filter` *(DB)* | 查看容器的动态筛选器(连接方式、条件、子组)、当前匹配的计算机数量,以及 MCP 是否可以修改筛选器 | | 🔴 | `acmp_container_set_filter` *(JW)* | 像在控制台中一样设置容器筛选器;预览会列出将加入或移出的计算机。使用 `excludeComputers` 排除单台计算机 | | 🔴 | `acmp_container_security_profile` *(JW)* | 为容器分配或移除 BitLocker 或 Defender 配置文件。Agent 会在所有成员计算机上应用该配置 | | 🔴 | `acmp_delete_containers` | 删除容器 |
资产与主数据 · 25 个工具 · 借出资产、联系人、地点、合同
工具用途
🟢acmp_get_asset_list, acmp_get_asset_types查看资产和资产类型
🟡acmp_create_asset, acmp_update_asset创建或修改资产
🟡acmp_lend_asset, acmp_return_asset借出或收回资产
🟢acmp_get_contacts, _companies, _locations, _departments, _cost_centers查看主数据
🟡acmp_create_*, acmp_update_*,适用于 contact、company、location、department创建或修改主数据
🟢acmp_get_contracts, acmp_contracts_expiring (DB)查看合同和即将到期的合同
🟢acmp_get_custom_fields, _custom_field_list, _master_data_settings, _app_settings查看自定义字段和设置
服务台 · 18 个工具 · “创建工单:二楼的打印机无法打印。”
工具用途
🟢acmp_get_tickets, acmp_get_ticket, acmp_tickets_by_query查看工单,也可通过已保存的查询查看
🟢acmp_get_ticket_comments, _worktime, _costs, acmp_get_linked_tickets查看历史记录、工时、费用和关联项
🟢acmp_helpdesk_settings, acmp_get_assignees, _ticket_templates, _ticket_categories, _ticket_resolutions, _queries查看服务台设置
🟡acmp_create_ticket创建工单(“创建工单:二楼的打印机无法打印。”)
🟡acmp_update_ticket更改负责人或优先级
🟡acmp_close_ticket, acmp_reopen_ticket关闭或重新打开工单
🟡acmp_add_ticket_comment添加评论
远程维护 · 2 个工具 · TeamViewer ID 和连接链接
工具用途
🟢acmp_teamviewer_ids (DB)查看所有客户端的 TeamViewer ID
🟢acmp_teamviewer_connect (DB)获取连接到某台计算机的 TeamViewer 链接,也可通过用户名搜索

示例提示词见 docs/USAGE.md。要添加新的原生命令,只需在 api-tools.json 中声明;要添加新的 SQL 报告,只需在 db-tools.json 中声明。两者都无需重新编译。

Web 界面

页面用途
/dashboard概览:当前的重要事项(失联的计算机、空间不足、扫描过旧、错误较多的作业、服务器作业)、带表单的待处理事项、紧急停止开关和最新活动。需要 db.connectionString,以及 dashboard 中的阈值
/dashboard/rollout按计算机查看客户端命令的部署状态:任务、最近一次运行、结果、输出中的关键行
/dashboard/updatesWindows 更新的错误停止机制:已暂停的更新及其决策(继续运行、立即放行)、各测试计算机的状态、通知
/activity活动日志,可按操作员、工具和错误筛选
/settings启用和解除紧急停止、配置可访问 Web 界面的操作员、查看所有会更改内容的工具
/onboarding添加其他操作员
/changelog服务器补丁记录
/setup初始设置;仅在还没有可访问 Web 界面的操作员时启用

登录(/login)使用操作员的短名称和专属 Web 令牌,之后通过会话 Cookie(HttpOnly、SameSite=Strict,有效期 12 小时)维持登录。Web 令牌与 ACMP 或 MCP 密钥相互独立:即使 API 密钥泄露,也无法解除紧急停止。版本 1 中的旧链接(?approver=…&token=…)不再用于登录,因为地址中的令牌会进入邮件、浏览历史记录和代理日志。renew-web-tokens.ps1 用于更新 Web 令牌。

配置

config.example.json 带有注释(_hinweis 字段)。install.ps1 会据此生成 config.local.json。

重要键
键含义
sics.username / passwordSICS/AESB 基础连接
sics.virtualRouter / wssPort默认值:VCMN / 3950
mcp.bindAddress / httpPort默认值:127.0.0.1 / 8765。通过 set-network-admin.ps1 访问局域网
web.publicUrl / web.usersWeb 界面的地址(也用于 acmp_read_registry 的回传通道)以及可访问 Web 界面的操作员
runPowershell.clientCommandId可选,启用 acmp_run_powershell / acmp_read_registry
runPowershell.protectedClients / protectedClientIds可选:其他不允许 MCP 启动作业的计算机(计算机名称或 ClientId)。ACMP/MCP 服务器本身始终包含在内。如果没有数据库连接,请设置 protectedClientIds(ACMP 服务器的 ClientId),否则服务器会拒绝在客户端上执行作业
db.connectionString可选,启用数据库报告工具
helpdesk.createdStateId可选,新工单的状态
ccWriter.*可选,默认关闭:将客户端命令保存为草稿、批准并归类。使用 setup-cc-writer.ps1 设置,使用 setup-cc-writer.ps1 -AddRequester <name> 添加其他操作员
kioskWriter.*可选,默认关闭:维护 Kiosk。需要 CC-Writer(使用相同的 SQL 登录名)。使用 setup-kiosk-writer.ps1 设置
wumWriter.*、unixWriter.*、cfWriter.*、jobWriter.*可选,默认关闭:拒绝 Windows 更新并在测试环中暂停、编写 Unix 脚本、创建自定义字段、启用和创建作业、管理软件、容器筛选器、维护时段、安全配置文件、删除。需要 CC-Writer(使用相同的 SQL 登录名和操作员)。使用 setup-extra-writers.ps1 设置
wumWatch.*可选,默认关闭:错误停止机制的监视器(mode: report 仅报告,hold 也会暂停),汇总邮件使用 mail.smtpHost
reports.allowedMailDomains可选:允许 acmp_send_report 发送报告的域名。留空 = 工具关闭
dashboard.*可选:概览的阈值(无联系天数、可用空间、扫描时间、作业错误率)
ctl.sources可选,acmp_lib_install 的来源。默认:安装目录中的 ctl 文件夹,然后是仓库 Herzog-GmbH/acmp-ctl
## 安全

警告

服务器提供完整的 ACMP 访问权限,甚至可以在所有终端设备上执行命令。请将每个 API-Key 都视为管理员密码。

  • 未内置 TLS。 服务器默认只监听 127.0.0.1,且没有 API-Key 时拒绝在 LAN 中运行。在 LAN 中,请通过防火墙限制源子网。跨网络边界时,应在前面部署 TLS 代理或 VPN。
  • install.ps1 将安装目录的权限限制为管理员和 SYSTEM,因为其中存放着凭据。
  • 紧急停止开关和日志位于安装目录中(notbremse.json、activity-*.jsonl)。能够在此处写入的人也能绕过两者,因此仅允许管理员和 SYSTEM 访问。在 ACMP/MCP 服务器本机上,MCP 不会启动任何作业(acmp_run_powershell、acmp_enqueue_client_command、acmp_read_registry、acmp_call),因为以 SYSTEM 身份运行的脚本可能会读取其中包含所有密钥的 config.local.json。其他计算机(例如 SQL 服务器)则通过 runPowershell.protectedClients 进行保护。
  • 操作员密码从不保存:acmp-token-setup.exe 只保存经过 DPAPI 加密的令牌(LocalMachine)。
  • /regresult(acmp_read_registry 的回传通道)有意不要求密钥,因为客户端不知道该密钥。它只接受与尚未关闭且不可猜测的令牌对应的结果。
  • 请不要通过公开 Issue 报告安全漏洞,而应按照 SECURITY.md 中的说明处理。
数据库写入工具
  • 可选的 CC Writer 使用专用 SQL 登录账号进行写入,该账号仅具有必要权限(grant-cc-writer.sql),绝不使用只读账号。仅凭这些权限,它无法删除 SYS_SCRIPTS 中的任何内容。它只会创建草稿,在每次更改前进行备份,并且只会修改或发布由其自身创建的命令。对于其他人创建的命令,它只会创建新版本(acmp_cc_new_version),并可按需移动该命令。
  • 可选的 Kiosk Writer 使用相同的登录账号,具备 grant-kiosk-writer.sql 中的权限,并且只会写入已授权的 Kiosk 文件夹。
  • WUM、Unix Script、字段和作业 Writer 也使用该登录账号(grant-wum-writer.sql、grant-unix-writer.sql、grant-cf-params.sql、grant-jobs-writer.sql)。服务器只通过 ACMP 自有过程拒绝更新。对于自定义字段,该登录账号没有 DDL 权限:表和列由两个过程创建,它们只会按 ACMP 服务器的固定模式构建。在 SYS_Jobs 中,该账号只能修改启动条件和校验和;删除作业时,它通过与作业模板的关联进行删除,其余操作由 ACMP 触发器完成。
  • 删除(客户端命令、空的 CC 和 Kiosk 文件夹、Unix 脚本、维护配置文件)以及维护时段、安全配置文件和 Agent 调度器模板,只有额外授予 grant-luecken-writer.sql 中的权限后才能操作。每个工具都会在操作前后于事务中备份所有受影响的行,并通过 acmp_job_restore 还原这些行,前提是期间没有其他人修改它们。不执行该脚本,这些工具就会保持禁用状态。
  • 入门配置时请注意:SQL 登录账号属于服务器,而非操作员。谁可以使用写入工具,由 ccWriter.allowedRequesters 决定(add-user.ps1 会询问此项;对于来自 /onboarding 的操作员,使用 setup-cc-writer.ps1 -AddRequester <name>)。ACMP 不会在这些工具中检查个人的 ACMP 权限,因为它们绕过 Public API 直接写入数据库。
## 文档
文件内容
AGENTS.mdAI Agent 的设置流程,包括故障排查
docs/ACMP-VORBEREITUNG.mdACMP 控制台中的操作:Public API、SICS 用户、可选功能
docs/CLIENTS.md各类常见 MCP 客户端的配置
docs/USAGE.md面向用户的速查表,含提示词示例
config.example.json带注释的示例配置
SECURITY.md私下报告安全漏洞

参与贡献

欢迎提交 Issues 和 Pull Requests。请勿在 Issue 中发布包含主机名、IP、用户名、密钥或令牌的日志,发布前请先打码。

许可证

MIT。这不是 Aagon GmbH 的官方产品。ACMP 和 AESB 是 Aagon GmbH 的商标。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。