ACMP MCP Server について
ACMP MCP Serverは、MCPクライアントをAagon ACMP Public APIに接続し、端末、インベントリー、脆弱性、ジョブ、チケットを扱います。ACMPサーバー上で動作し、書き込み・実行・削除を記録するとともに、Webの緊急停止機能でこれらをブロックします。
主な機能
- 01端末、インベントリー、CVE、ジョブ、チケットの照会
- 02書き込み・実行・削除操作の記録
- 03緊急停止による変更系ツールのブロック
- 04dryRunによる対応操作のプレビュー
- 05担当者ごとのAPIキーと任意のACMP ID
活用シーン
- 01長期間オフラインの端末を特定
- 02ACMPを変更する操作の履歴を確認
- 03インシデント時に書き込み・実行ツールを停止
- 04クライアントコマンドの展開状況を確認
MCP 対応
Streamable HTTPを通じてACMP APIの操作をMCPツールとして提供し、このトランスポートと認証ヘッダーに対応するクライアントから利用できます。stdioのみ対応するクライアントは`mcp-remote`経由で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ACMP-MCP-Server
Aagon ACMPをあらゆるAIで活用 — アクティビティログと緊急停止機能を備え、ACMPサーバー上で直接動作します。
メモ
英語: Aagon ACMPのPublic API向けMCPサーバーです。すべての書き込み/実行/削除アクションのアクティビティログと、それらすべてをブロックする緊急停止機能を備えています(バージョン1の二者承認機能は廃止されました)。ACMPサーバー上で単一のWindows EXEとして動作し、あらゆるMCPクライアントで利用できます。ACMPのユーザー層の大半がDACH地域にあるため、ドキュメントはドイツ語ですが、英語での課題報告も歓迎します。
ACMP Public API向けのMCPサーバーです(Aagon Client Management Platform)。「過去30日間オフラインだったコンピューターは?」のように普通の言葉で質問すると、AIがACMPから直接回答を取得します。
概要
- あらゆるMCPクライアントに対応: Claude、ChatGPT/Codex、GitHub Copilot、Gemini、Cursor …
- 幅広い範囲をカバー: クライアント、コンテナー、ジョブ/Client Commands、チケット、アセット、インベントリ、脆弱性、マスターデータ。
- アクティビティログと緊急停止機能: すべての操作は即時に反映されます。事前に
dryRunでプレビューを確認できます。すべての書き込み、実行、削除アクションは、操作担当者、対象、意図、結果とともにログに記録され、Webインターフェースの緊急停止ボタンですべての操作をワンクリックでロックできます。バージョン1の二者承認機能は廃止されました(理由)。 - 操作担当者ごとの設定: 各担当者に専用のAPIキーを割り当て、必要に応じて専用のACMP IDを設定できます。これにより、ACMPは担当者本人の実際の権限を確認します。
- 単一のEXEで、クラウド不要: ACMPサーバー上で直接動作します。IISも.NET SDKも不要です。
- ブラウザーで状況を把握: ホームページには、現在重要な項目(連絡のないコンピューター、空き容量のないディスク、古いスキャン、多数のエラーがあるジョブ)が表示されます。さらに、未対応項目の共有リスト、コンピューターごとのClient Commandのロールアウト状況、Windows Updateのエラー停止機能も利用できます。
- オプション: Client Commandsの作成、承認、分類、パラメーター設定、キオスクの管理、Windows Updateの拒否またはテストリングでの停止、Managed Softwareの登録と配布、コンテナーフィルター、メンテナンスウィンドウ、セキュリティプロファイルの設定、Unix Scriptsの作成、カスタムフィールドの追加、ACMPデータベースでのジョブの切り替えや作成ができます。デフォルトでは無効です。
- すぐに使えるテンプレート: ACMP CTL(Community Template Library)には、各手順が平文で記載されたClient Commandテンプレートがあります。
acmp_lib_installを使うと、テンプレートをConsoleにドラフトとして追加できます。
互換性
| テスト済みまたは前提条件 | |
|---|---|
| ACMP | 6.9および6.10。AESB/SICSと有効化されたPublic APIが必要です |
| データベースへの書き込みツール(CC、Kiosk、WUM、Unix Script、フィールドおよびジョブのライター) | ACMP 6.10(Unix Scriptsは6.10以降で利用できます)。ACMPのアップデート後など、差異がある場合は事前チェックによって書き込みがブロックされます |
| サーバー | .NET Framework 4.8を搭載したWindows Server、ACMPサーバーの管理者権限 |
| MCP | Streamable 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エージェント(Claude Code、Codex CLI、エージェントモードのGitHub Copilot、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への公開、クライアント接続、トラブルシューティングまでの全手順が記載されています。ほとんどのエージェントは自動的にこのファイルを読み込みます。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 キーで確定します)。
- 前提条件を確認します(AESB SICS、ポート 3950、.NET、空きポート)。問題があれば、対処方法を伝えます。
- ACMP コンソールで Public API を確認するよう求め、クリックする手順を表示します。
C:\ProgramData\AcmpMcpに インストールしてビルドします。設定、シークレット、ログは管理者と SYSTEM のみが読み取れます。- SICS ユーザーを尋ねます。 パスワードは非表示で入力します。
- サービスを設定し、ACMP へのログインを確認します。 ログインに失敗した場合は、認証情報を再入力するよう求めます。
- あなたを最初の管理者として登録します(MCP API キーと Web ログイン)。
- 希望する場合は、あなた自身の ACMP ID を関連付けます。 その後、ACMP が実際の権限を確認します。
- オプション機能: アドホック PowerShell、DB レポート、データベースの書き込みツール。
- ネットワーク: LAN IP とサブネットを提案し、管理者用 PC からサーバーに接続できるようにします。
ACMP コンソールでの操作については、docs/ACMP-VORBEREITUNG.md に記載されています。たとえば、アドホック 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 クライアントは、直接接続できます。
| URL | http://<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コマンドを送信します。ルーティングキーはサーバーが自ら特定し、Virtual Routerは設定から読み込みます(デフォルトは
VCMN)。 - コマンドはJSON-RPC 2.0/HTTP経由でMCPツールとして利用できます(独自の
TcpListenerを使用し、URL-ACLは不要です)。 - ユーザーごとの設定: 各オペレーターには専用のAPIキーがあり、必要に応じて専用のACMP IDも設定できます。ACMPはそのユーザーの実際の権限を確認します(
GetOwnUserRights)。 - アクティビティログと緊急停止: 書き込み、実行、削除を行う操作の前に、サーバーは
activity-JJJJ-MM.jsonlに記録します。書き込みに失敗した場合、操作は実行されません。その後、結果が記録されます。緊急停止(notbremse.json)を有効にすると、Webインターフェースで人が解除するまで、これらのツールはサーバー側ですべてブロックされます。呼び出しが書き込みを行うかどうかは、LLMではなくサーバーが判断します(ツール一覧またはコマンド名)。dryRunは、実際に評価するツールでのみ有効です。
バージョン2:二者承認なし
バージョン1までは、書き込み、実行、削除のコマンドは承認ページに申請として登録され、承認後にのみ実行されていました。実運用では、セキュリティ上の理由で申請が却下されたことは一度もなく、クリック操作が手間になっているだけでした。バージョン2以降、これらのツールは即座に実行されます。その代わりに、次の仕組みを用意しています。
- プレビュー: ほとんどの書き込みツールは
dryRun: trueに対応しています。サーバーからの指示により、AIはまずプレビューを表示し、チャットで人の承認を待ちます。PowerShellと削除の場合は、必ずこの手順を行います。 - アクティビティログ: 誰が、いつ、何を、どの対象に対して行ったかを、意図と結果とともに記録します。パスワードはマスクされます。
- 緊急停止: Webインターフェース上のスイッチで、すべてのオペレーターに対するすべての書き込みツールを即座にブロックします。読み取りと
dryRunは引き続き実行できます。
利用例:
- 「PC-0815のディスクがいっぱいです。WindowsのTempフォルダーを整理してください」と入力します。
- AIがコンピューターを検索し(
acmp_get_client_id)、ドライブを確認して(acmp_low_disk_space)、PowerShellスクリプトを表示します。 - 承認すると、AIがスクリプトを実行します(
acmp_run_powershell)。呼び出しはただちにアクティビティログに記録されます。 - AIが結果を報告します。
バージョン1からの更新: git pullと.\install.ps1を実行します。アシスタントが設定を切り替えます(approval → web、バックアップあり)。これまでの承認トークンは、その後Webログインとして使われます。ただし、承認メールのリンクに記載されていたトークンなので、更新後に.\renew-web-tokens.ps1を実行して新しいトークンに切り替えてください(インストールフォルダーで管理者として実行)。再インストールしなくても、サーバーは以前のapprovalセクションを引き続き読み込みます(publicUrl、requester、approversのみ)。未処理の承認申請は実行されなくなります。
重要
承認なしでは、安全性はオペレーターと、APIキーを誰に渡すかにかかっています。各キーをドメイン管理者のパスワードと同じように扱い、チケット、ファイル、Webページの指示をAIに実行させないでください。迷った場合は緊急停止を有効にしてください。
ツール
12の分野にわたる179個のツールがあります。分野をクリックすると、各ツールとその動作が表示されます。
🟢 読み取り · 🟡 書き込み(即時実行され、ログに記録) · 🔴 実行または削除(重要)。🟡と🔴は緊急停止によってブロックされます。
どのツールが変更を行うかは、/settings でも確認できます。一部のツールにはオプション機能が必要です:(DB) データベース接続(db.connectionString、読み取り専用)、(PS) クライアントコマンドテンプレート(runPowershell.clientCommandId)、(CW) CC Writer(ccWriter)、(KW) キオスクライター(kioskWriter)、(WW) WUM Writer(wumWriter)、(UW) Unix スクリプトライター(unixWriter)、(FW) フィールドライター(cfWriter)、(JW) ジョブライター(jobWriter)。現在の一覧は tools/list で取得できます。各ツールは任意で format: "json" を受け付けます。
システムと一般 · 16 個のツール · サーバー情報、自分の権限、サーバージョブ、メールキュー、未解決項目、167 個の API コマンドすべてに対応する acmp_call
| ツール | 用途 | |
|---|---|---|
| 🟢 | acmp_server_info | ACMP のバージョンとサーバーデータ |
| 🟢 | 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) | クライアントコマンド、キオスク、Unix スクリプト、ファイルリポジトリのテーブル行とバイナリ列(これらのみ) |
| 🟢 | 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_items | IT 部門の共有「未解決項目」一覧(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 アドレス、エージェントのバージョンを含むプロファイル | | 🟢 | `acmp_get_os_info` | OS と最後にログインしたユーザー(「PC-0815 に最後にログインしたのは誰ですか?」) | | 🟢 | `acmp_get_hardware`, `acmp_hardware_profile` *(DB)* | CPU、RAM、ディスク、サービス、メーカー、モデル、シリアル番号 | | 🟢 | `acmp_offline_clients` *(DB)* | X 日間連絡がないコンピューター | | 🟢 | `acmp_agent_versions` *(DB)* | エージェントのバージョン分布 | | 🟢 | `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)* | エージェントによるログイン情報:ある人物がどのコンピューターにログインしたか、あるコンピューターに誰がログインしたか | | 🟢 | `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` *(beide DB)* | 不足している Windows 更新プログラムと失敗した Windows 更新プログラム | | 🟢 | `acmp_wum_declined` *(DB)* | コメントと対象クライアントを含む拒否済み Windows 更新プログラム。`scope: "open"` を指定すると未処理の候補を取得します | | 🟡 | `acmp_wum_decline`, `acmp_wum_restore` *(WW)* | コンソールと同様に Windows 更新プログラムを拒否、または拒否を取り消します。1 ジョブにつき最大 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` *(beide 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。
Managed Software · 6 ツール · サブスクリプション、リングごとのバージョン、フリート全体への配信、テストインストール
| ツール | 目的 | |
|---|---|---|
| 🟢 | acmp_msw_packages (DB) | サブスクライブ済みパッケージ(またはカタログ全体)。最新バージョンと承認済みバージョン、パッケージがあるクライアントと更新が保留中のクライアント、継続ジョブ |
| 🟢 | acmp_msw_package (DB) | パッケージの詳細:配信リングごとのバージョン、フリート全体のバージョン分布、継続ジョブ、パラメーター |
| 🟢 | acmp_msw_client (DB) | クライアントの Managed Software の状態と直近の実行履歴 |
| 🟡 | acmp_msw_subscribe (JW) | コンソールと同様にパッケージをサブスクライブします。ダウンロードと承認は ACMP サーバーが行います |
| 🔴 | acmp_msw_job_create (JW) | コンテナーにパッケージの継続ジョブを作成します(インストール/更新、または更新のみ) |
| 🔴 | acmp_msw_test_install (JW) | 「Managed Software の割り当て」と同様に、テストなどのために 1~5 台のクライアントへパッケージを一度だけ配信します |
Public API では Managed Software を配信できません。書き込みツールは Job-Writer に属し、追加で grant-msw-writer.sql が必要です。エージェントへの即時実行指示は MCP から行えません。エージェントは次回のジョブ確認時にジョブを取得します。
ジョブと実行 · 20 ツール · 定期ジョブの確認、切り替え、作成、ステップログ、メンテナンス時間帯、エージェントスケジューラー、SYSTEM としての PowerShell 🔴
| ツール | 目的 | |
|---|---|---|
| 🟢 | acmp_get_client_commands | 利用可能な Client Commands |
| 🟢 | acmp_get_jobs, acmp_job_results, acmp_script_history (すべて DB) | コンピューターにどのジョブがあり、何が実行され、どのような結果になったか |
| 🟢 | acmp_jobs (DB) | コンテナー上の定期ジョブについて、対象、平易な説明での開始条件、過去 7 日間と 30 日間の実行回数とエラー、およびヒント(「『1 回限り』ではなく、毎時実行されるジョブはどれですか?」) |
| 🟢 | acmp_agent_tasks, acmp_scanner_status, acmp_maintenance_windows (すべて DB) | エージェントスケジューラーのタスク(スキャナー)の開始条件とコンテナー、各クライアントとスキャナーの最新データ、メンテナンス時間帯 |
| 🟡 | acmp_job_set_enabled, acmp_job_restore (JW) | コンソールと同様に定期ジョブを無効化・再有効化し、バックアップからジョブの変更を元に戻す |
| 🔴 | acmp_job_set_condition (JW) | コンテナーの開始条件を設定します(1 回限り、エージェント起動時、毎日、毎時、メンテナンス時間帯)。そのコンテナーのすべての定期ジョブに適用されます |
| 🔴 | acmp_job_delete (JW) | コンソールと同様に定期ジョブを削除します。ジョブ履歴とジョブテンプレートは残ります。1 回限りのジョブは、ジョブモニターの「削除」と同様に削除されます |
| 🔴 | acmp_job_create (JW) | Client Command(パラメーターなし)をコンテナー上の定期ジョブとして作成します |
| 🟢 | acmp_job_log (DB) | Client Command の実行に関するステップログ。各ステップの結果、所要時間、メッセージが含まれます |
| 🟡 | acmp_maintenance_window_create (JW) | コンソールと同様に、曜日ごとの時間帯を設定したメンテナンスプロファイルを作成します |
| 🔴 | acmp_maintenance_window_assign, acmp_maintenance_window_delete (JW) | メンテナンスプロファイルをコンテナーに割り当てる、または割り当てを解除するほか、未使用のプロファイルを削除します |
| 🔴 | acmp_agent_template_assign (JW) | エージェントスケジューラーのテンプレートをコンテナーに割り当てる、または割り当てを解除します |
| 🔴 | acmp_enqueue_client_command | 既存の Client Command を開始します |
| 🔴 | acmp_run_powershell (PS) | クライアント上で SYSTEM として任意の PowerShell を実行します |
Public API ではジョブを変更できません。そのため、ジョブ書き込みツールは ACMP データベースに直接書き込み、デフォルトでは無効になっています。1 件のリクエストにつき最大 10 ジョブで、事前にバックアップを作成し、acmp_job_restore ですべての変更を元に戻せます。セットアップ:docs/ACMP-VORBEREITUNG.md →「その他の書き込みツール」。
Client Commands · 20 ツール · 任意 · 下書きの作成、新しいバージョン、パラメーター、公開、フォルダーへの振り分け、削除
Public API では Client Commands を開始することはできますが、作成することはできません。そのため、これらのツールは ACMP データベースから直接読み取り、必要に応じて下書きを作成し、自分の下書きを公開して、Commands をフォルダーに振り分けます。Aagon では書き込みが想定されていないため、デフォルトでは無効になっています。セットアップ:docs/ACMP-VORBEREITUNG.md →「Client Commands への直接書き込み」。
Writer が変更できるのは、許可されたフォルダーにある自分のドラフトのみで、許可されたオペレーターに限られます。既存の Commands を変更する場合は、acmp_cc_new_version のみを使用します。新しいバージョンとして扱い、Aagon の標準フォルダーでは変更せず、手順 ID と保存済みパスワードは保持されます。他者が作成したドラフトを上書きするのは、明示的に要求された場合のみです(バックアップを作成)。プレビュー(dryRun)には、各手順とそのフィールドが表示されます。
書き込みの前に、サーバーは ACMP のバージョン、テーブル、トリガー、および書き込み用ログインの権限を確認します。また、最新の Commands 50 件を試験的に展開し、再パッケージ化します。ACMP のアップデート後などに差異がある場合は、何も書き込みません。リリースできるのは、自分が作成したドラフトと、最後に MCP が保存したバージョンです。ファイルが変更された後続バージョンはリリースされず、コンソールで処理する必要があります。「HIER … EINTRAGEN」のようなプレースホルダーがある場合、リリースはできません。ACMP 6.10 でテスト済みです。
キオスク · 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) | 1 つの操作で複数の項目を移動、名前変更し、説明、アイコン、フィルターを変更します |
| 🟡 | 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 を介して Linux および macOS クライアント上で root として実行されます。これらも Public API では作成できません。書き込みはデフォルトで無効です。設定方法: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 には Unix ジョブを開始する API も Job Collection もないため、Unix ジョブは開始できません。コンソールで(コンテナーまたはクエリ →「Unix ジョブを実行」)実行してください。結果はその後 acmp_unix_results で確認できます。Unix Script ライセンスに空きがない場合、ACMP はジョブを「成功」と報告しますが、スクリプトは実行されません。acmp_unix_results がその旨を通知します。
コンテナー · 9 個のツール · メンバーとフィルターの読み取り、作成、変更、セキュリティプロファイル、削除 🔴
| | ツール | 用途 | |---|---|---| | 🟢 | `acmp_container_members`, `acmp_client_containers` *(両方ともDB)* | コンテナー内のコンピューターと、コンピューターが所属するコンテナー | | 🟡 | `acmp_create_container`, `acmp_save_containers` | コンテナーの作成または変更 | | 🟡 | `acmp_container_set_restriction` *(JW)* | コンテナーのクライアント制限:同じOSファミリーのクライアントのみ、またはすべてのクライアント | | 🟢 | `acmp_container_filter` *(DB)* | コンテナーの動的フィルターを読み取り可能(結合、条件、サブグループ)、現在該当するコンピューターの数、MCP が変更できるかどうか | | 🔴 | `acmp_container_set_filter` *(JW)* | コンソールと同様にコンテナーのフィルターを設定します。プレビューには追加または削除されるコンピューターが表示されます。`excludeComputers` で個々のコンピューターを除外します | | 🔴 | `acmp_container_security_profile` *(JW)* | BitLocker または Defender のプロファイルをコンテナーに割り当てる、または解除します。エージェントがすべてのメンバーに適用します | | 🔴 | `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 個のツール · 「チケットを作成して。2階のプリンターが印刷できません。」
| ツール | 用途 | |
|---|---|---|
| 🟢 | 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 | チケットの作成(「チケットを作成して。2階のプリンターが印刷できません。」) |
| 🟡 | 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/updates | Windows 更新プログラムのエラー停止:保留中の更新プログラムと判断(続行、すぐに許可)、テスト用コンピューターごとの状況、メッセージ |
/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 / password | SICS/AESB への基本接続 |
sics.virtualRouter / wssPort | デフォルトは VCMN / 3950 |
mcp.bindAddress / httpPort | デフォルトは 127.0.0.1 / 8765。LAN アクセスは set-network-admin.ps1 で設定します |
web.publicUrl / web.users | Web インターフェースのアドレス(acmp_read_registry の戻りチャネルにも使用)と、Web アクセス権を持つ操作者 |
runPowershell.clientCommandId | オプション。有効にすると acmp_run_powershell / acmp_read_registry を使用できます |
runPowershell.protectedClients / protectedClientIds | オプション:MCP がジョブを開始しない追加のコンピューター(コンピューター名または ClientId)。ACMP/MCP サーバー自体は常に含まれます。DB 接続がない場合は protectedClientIds(ACMP サーバーの ClientId)を設定してください。設定しないと、サーバーはクライアント上のジョブを拒否します |
db.connectionString | オプション。有効にすると DB レポートツールを使用できます |
helpdesk.createdStateId | オプション。新しいチケットのチケットステータス |
ccWriter.* | オプション。デフォルトでは無効です。クライアントコマンドを下書きとして作成し、承認して分類します。setup-cc-writer.ps1 で設定し、追加の操作者は setup-cc-writer.ps1 -AddRequester <name> で登録します |
kioskWriter.* | オプション。デフォルトでは無効です。キオスクを管理します。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 キーを管理者パスワードと同じように扱ってください。
- TLS は組み込まれていません。 サーバーはデフォルトで
127.0.0.1のみで待ち受け、API キーなしでの 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 ライターは、読み取り専用のログインではなく、必要な権限のみを持つ専用の SQL ログイン(
grant-cc-writer.sql)で書き込みを行います。この権限だけでは、SYS_SCRIPTSの内容を削除できません。下書きのみを作成し、変更前に必ずバックアップを取り、自分が作成したコマンドのみを変更またはリリースします。ほかのユーザーが作成したコマンドは、新しいバージョンとしてのみ変更し(acmp_cc_new_version)、希望に応じて移動します。 - オプションの Kiosk ライターは、
grant-kiosk-writer.sqlの権限を持つ同じログインを使用し、許可された Kiosk フォルダーにのみ書き込みます。 - WUM、Unix スクリプト、フィールド、ジョブの各ライターも、同じログイン(
grant-wum-writer.sql、grant-unix-writer.sql、grant-cf-params.sql、grant-jobs-writer.sql)を使用します。更新の拒否は ACMP 独自のプロシージャを通じてのみ行われます。カスタムフィールドの場合、ログインには DDL 権限を付与しません。テーブルとカラムを作成するのは 2 つのプロシージャで、ACMP サーバーとまったく同じパターンのみを構築します。SYS_Jobsでは、ログインが変更できるのは開始条件とチェックサムのみです。ジョブはジョブテンプレートとの関連付けを通じて削除し、残りは ACMP トリガーが処理します。 - 削除(クライアントコマンド、空の CC および Kiosk フォルダー、Unix スクリプト、メンテナンスプロファイル)と、メンテナンスウィンドウ、セキュリティプロファイル、エージェントスケジューラーのテンプレートには、
grant-luecken-writer.sqlによる追加権限が必要です。これらのツールはすべて、トランザクション内で対象となるすべての行を処理の前後にバックアップし、途中で誰も変更していない場合に限り、acmp_job_restoreで元に戻します。このスクリプトがなければ、これらのツールはすべて無効のままです。 - オンボーディングでは重要な点があります。SQL ログインはオペレーターではなく、サーバーに属します。書き込みツールを利用できるユーザーは
ccWriter.allowedRequestersで指定します(add-user.ps1が確認します。/onboardingのオペレーターの場合はsetup-cc-writer.ps1 -AddRequester <name>を実行します)。これらのツールは Public API を経由せずにデータベースへ書き込むため、ACMP は利用者の ACMP 権限を確認しません。
| ファイル | 内容 |
|---|---|
AGENTS.md | AI エージェント向けのセットアップ手順。トラブルシューティングを含みます |
docs/ACMP-VORBEREITUNG.md | ACMP コンソールでの操作:Public API、SICS ユーザー、オプション機能 |
docs/CLIENTS.md | 一般的な MCP クライアントすべての設定 |
docs/USAGE.md | ユーザー向けのプロンプト例を含むチートシート |
config.example.json | コメント付きの設定例 |
SECURITY.md | セキュリティ上の脆弱性を機密扱いで報告する方法 |
コントリビュート
Issue とプルリクエストを歓迎します。Issue にはホスト名、IP アドレス、ユーザー名、キー、トークンを含むログを投稿しないでください。事前に伏せ字にしてください。
ライセンス
MIT。Aagon GmbH の公式製品ではありません。ACMP と AESB は Aagon GmbH の商標です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。