feat(mcp): ship yt mcp serve as Docker only, drop systemd #124

Merged
Claude-Run merged 1 commit from feat/YT-72-mcp-docker-only-deprecate-systemd into main 2026-07-17 18:09:18 +02:00
Member

Remove the systemd deployment path for the MCP HTTP service and settle the container as the single supported way to run yt mcp serve. The yt mcp service install / uninstall command and crates/yt-cli/src/commands/mcp/service.rs are deleted, so nothing renders a systemd user unit or an on-disk mcp.env anymore. With the only key generator gone, the two symmetric keys are never generated: the operator mints them and the service already fails at startup (Crypto::from_env / SessionSigner::from_env) with an actionable message when either is missing or does not decode to 32 bytes.

compose.mcp.yml is now the documented deployment, configured entirely by environment variables, with resources prefixed youtrack-mcp- (service youtrack-mcp, volume youtrack-mcp-data, network youtrack-mcp-private) and the SQLite state on the named volume. The runtime image defaults YOUTRACK_MCP_DATABASE_URL to sqlite:///data/youtrack-mcp.db so state persists on that volume even when the variable is unset. docs/deployment.md is rewritten around the container (key generation and custody, reverse-proxy TLS, volume persistence, first-admin bootstrap) and gains an upgrade section telling operators to stop and disable the old systemd unit themselves; CHANGELOG.md carries the same removal note for the release notes.

yt mcp stdio is untouched. A new CLI test (mcp_service_subcommand_is_gone) fails if yt mcp service reappears, and the now-unused optional base64 / rand dependencies are dropped from yt-cli.

#YT-72

Remove the systemd deployment path for the MCP HTTP service and settle the container as the single supported way to run `yt mcp serve`. The `yt mcp service install` / `uninstall` command and `crates/yt-cli/src/commands/mcp/service.rs` are deleted, so nothing renders a systemd user unit or an on-disk `mcp.env` anymore. With the only key generator gone, the two symmetric keys are never generated: the operator mints them and the service already fails at startup (`Crypto::from_env` / `SessionSigner::from_env`) with an actionable message when either is missing or does not decode to 32 bytes. `compose.mcp.yml` is now the documented deployment, configured entirely by environment variables, with resources prefixed `youtrack-mcp-` (service `youtrack-mcp`, volume `youtrack-mcp-data`, network `youtrack-mcp-private`) and the SQLite state on the named volume. The runtime image defaults `YOUTRACK_MCP_DATABASE_URL` to `sqlite:///data/youtrack-mcp.db` so state persists on that volume even when the variable is unset. `docs/deployment.md` is rewritten around the container (key generation and custody, reverse-proxy TLS, volume persistence, first-admin bootstrap) and gains an upgrade section telling operators to stop and disable the old systemd unit themselves; `CHANGELOG.md` carries the same removal note for the release notes. `yt mcp stdio` is untouched. A new CLI test (`mcp_service_subcommand_is_gone`) fails if `yt mcp service` reappears, and the now-unused optional `base64` / `rand` dependencies are dropped from `yt-cli`. #YT-72
feat(mcp): ship yt mcp serve as Docker only, drop systemd
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 30s
Create release / Create release from merged PR (pull_request) Has been skipped
e4687b3784
Remove the systemd deployment path for the MCP HTTP service and settle the container as the single supported way to run `yt mcp serve`. The `yt mcp service install` / `uninstall` command and `crates/yt-cli/src/commands/mcp/service.rs` are deleted, so nothing renders a systemd user unit or an on-disk `mcp.env` anymore. With the only key generator gone, the two symmetric keys are never generated: the operator mints them and the service already fails at startup (`Crypto::from_env` / `SessionSigner::from_env`) with an actionable message when either is missing or does not decode to 32 bytes.

`compose.mcp.yml` is now the documented deployment, configured entirely by environment variables, with resources prefixed `youtrack-mcp-` (service `youtrack-mcp`, volume `youtrack-mcp-data`, network `youtrack-mcp-private`) and the SQLite state on the named volume. The runtime image defaults `YOUTRACK_MCP_DATABASE_URL` to `sqlite:///data/youtrack-mcp.db` so state persists on that volume even when the variable is unset. `docs/deployment.md` is rewritten around the container (key generation and custody, reverse-proxy TLS, volume persistence, first-admin bootstrap) and gains an upgrade section telling operators to stop and disable the old systemd unit themselves; `CHANGELOG.md` carries the same removal note for the release notes.

`yt mcp stdio` is untouched. A new CLI test (`mcp_service_subcommand_is_gone`) fails if `yt mcp service` reappears, and the now-unused optional `base64` / `rand` dependencies are dropped from `yt-cli`.

#YT-72
Claude-Run deleted branch feat/YT-72-mcp-docker-only-deprecate-systemd 2026-07-17 18:09:19 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
pandoras-box/youtrack-cli!124
No description provided.