-
Notifications
You must be signed in to change notification settings - Fork 35
Description
Problem
Today, apm install checks whether a primitive (MCP server, APM package, etc.) is already configured and skips it if so. This is correct for idempotency, but it means that if a user changes the configuration in apm.yml (e.g., updates env vars, changes a URL, modifies args), the change is silently ignored unless they pass --force.
This applies to all primitive types:
- Registry MCP servers (skip via
check_servers_needing_installation) - Self-defined MCP servers (skip via
_check_self_defined_servers_needing_installation, added in fix: skip already-configured self-defined MCP servers on install #191) - APM packages (skip via file collision detection)
The manifest (apm.yml) should be the source of truth. When config changes in the manifest, apm install should detect the drift and re-apply — without requiring --force.
Proposed behavior
- On
apm install, compare the manifest's declared configuration against the currently installed configuration. - If a primitive is already installed and the configuration matches, skip it (current behavior —
✓ already configured). - If a primitive is already installed but the configuration differs, re-apply it and show something like
✓ updatedor↻ reconfigured. --forceremains available for full overwrite/reset scenarios.
Context
This was discussed in #191 (PR comment thread). The PR correctly unified the skip behavior for self-defined MCP servers to match registry servers. This issue tracks the next step: making install diff-aware across all primitives.
Acceptance criteria
-
apm installdetects config drift for registry MCP servers -
apm installdetects config drift for self-defined MCP servers -
apm installdetects config drift for APM package files - Clear CLI output distinguishes "already configured" vs "updated"
- Existing
--forcebehavior is preserved