Repository navigation
epic(mcp): migrate Redis database tools to redis-mcp #1170
Copy link
Copy link
Open
Labels
dependenciesPull requests that update a dependency filePull requests that update a dependency fileepicParent issue tracking multiple related issuesParent issue tracking multiple related issuesmcpRelated to the MCP serverRelated to the MCP server
Description
Activity
- addedepicParent issue tracking multiple related issuesParent issue tracking multiple related issuesmcpRelated to the MCP serverRelated to the MCP serverdependenciesPull requests that update a dependency filePull requests that update a dependency file
on Oct 2, 2026 Initial child issues:
- design(mcp): define the database target contract for redis-mcp adoption #1171 — settle the fixed-target and 1.0 schema contract
- feat(mcp): add a feature-gated redis-mcp read-only pilot #1172 — feature-gated read-only Keyspace/Strings pilot
External gates:
- chore: align Tower-MCP with redisctl on 0.23.2 redis-developer/redis-database-mcp-rs#123 — merged Tower-MCP 0.23.2 alignment
- Integration: migrate redisctl database MCP onto redis-mcp redis-developer/redis-database-mcp-rs#76 — library-side consumer tracker
- feat(client): replay connection setup across reconnects and Cluster topology changes joshrotenberg/redis-tower#736 — reconnect- and Cluster-safe connection setup/client naming
Later family cutover issues should be filed only after the pilot produces an evidence-backed catalog/parity report.
Migration status after the 0.12.1 baseline:
- redis-database-mcp-rs feat(cloud): implement task commands #123 is merged, aligning the library with Tower-MCP 0.23.2.
- redis-tower issue feat(mcp): add composed Redis diagnostic tools #737 is being prepared in draft PR feat(mcp): add profile-based connection support for Redis database tools #738 as the first-consumer hardening release. Release review found that the existing unreleased changelog records a breaking change, so the final tower versions may need to be 0.2.0 rather than the originally projected patch line.
- redis-tower feat(mcp): add Redis write tools — key lifecycle, data structures, server management #736 remains the production gate for reconnect- and Cluster-safe connection setup / CLIENT SETNAME replay. It is not required for a feature-gated pilot, but it is required before redis-mcp becomes redisctl’s default database backend.
- After the redis-tower release publishes, redis-database-mcp-rs should update its direct tower dependencies, run its full standalone/Cluster/Stack matrix, and publish redis-mcp before redis-mcp-server.
- redisctl feat(mcp): add a feature-gated redis-mcp read-only pilot #1172 can then begin as an opt-in read-only pilot. The legacy database backend remains the default until the pilot, target contract (design(mcp): define the database target contract for redis-mcp adoption #1171), and production gate are complete.
No redisctl migration implementation has started yet; the current work is deliberately clearing and validating dependency gates first.
Dependency-gate update:
- redis-tower feat(mcp): add profile-based connection support for Redis database tools #738 merged and the coordinated 13-crate release completed successfully. A clean downstream crate resolved and compiled redis-tower 0.1.4, core 0.1.3, Cluster 0.1.4, protocol 0.1.4, and commands 0.1.3 from crates.io. redis-tower release issue feat(mcp): add composed Redis diagnostic tools #737 is closed.
- redis-database-mcp-rs refactor: fix confusing _1 suffix naming for fixed vs flexible handlers #124 is ready to merge with the published dependency set. Its full local suite, clean-room release/package checks, publish dry-run, and all 16 CI checks passed.
- redis-database-mcp-rs refactor: fix additional naming inconsistencies and typos in Cloud API #125 now tracks explicit shutdown of the router primary client.
- redis-tower feat(mcp): add Redis write tools — key lifecycle, data structures, server management #736 remains the production gate for making redis-mcp the default redisctl database backend. It does not block the initial redis-mcp 0.1.0 release or redisctl’s feature-gated pilot.
Next sequence: merge redis-database-mcp-rs #124; publish redis-mcp 0.1.0, then redis-mcp-server 0.1.0 once the library resolves from crates.io; then begin redisctl #1172.
Metadata
Metadata
Assignees
Labels
dependenciesPull requests that update a dependency filePull requests that update a dependency fileepicParent issue tracking multiple related issuesParent issue tracking multiple related issuesmcpRelated to the MCP serverRelated to the MCP server
Current migration checkpoint — 2026-10-06
Pilot #1176 merged at 2026-10-06 19:08:45 UTC as
2f139f15caa7dd93400a283e578c6b5641323586. The immutable public redis-mcp source pin remains8eff8240679d38157ee08b9d5e5eaeb656ce7550. The owner made the library public; the historical internal-source blocker below is resolved.Reviewed pre-merge PR head
977c7c258277f8567b510764bc562919d587de99passed 18 checks with 7 expected skips, including full CI, Linux/macOS/Windows, both strict rustdoc builds, both cargo-deny groups and dist metadata. Fresh local pilot tests passed 14/14, including five disposable live fixtures. Separate initially empty anonymous Git/Cargo environments verified exact-pin checkout, locked default/pilot resolution and pilot compilation. This is PR-head evidence, not a claim that every post-merge/release job passed.The merged pilot remains explicitly opt-in/read-only, bound to an accepted fixed startup target; legacy remains the default. No credentials/access wiring, release, registry publication or default cutover is initiated by this checkpoint. Reconnect-safe setup redis-developer/redis-database-mcp-rs#128 and deterministic lifecycle redis-developer/redis-database-mcp-rs#125 remain open, along with broader family/Cluster parity and release packaging gates. This checkpoint leaves #1170, #1171 and #1172 open.
Older dated checkpoints below are retained as history and do not describe the current source-access or pilot PR state.
Goal
Make redisctl the primary embedding consumer of
redis-mcp, then retire the duplicate Redis database MCP handlers inredisctl-mcpfamily by family. Cloud, Enterprise, profiles, credentials, combined transport, policy integration, and application configuration remain redisctl responsibilities.Related library tracker: redis-developer/redis-database-mcp-rs#76.
Current state
Ownership boundary
redis-mcpowns database tool schemas, command behavior, structured results, access/effect classification, capability checks, output budgets, command timeouts, Cluster semantics, sessions, and native invocation.redisctl owns profile and credential resolution, startup target selection, Cloud and Enterprise toolsets, application policy/configuration, audit integration, and the combined MCP server. Credentials and connection URLs must not be exposed through the migrated database tool schemas or logs.
Delivery plan
url/profilefields at the declared 1.0 boundary.Acceptance criteria
This epic does not authorize a production cutover before the redis-tower and redis-mcp release gates are satisfied.
Coordinated development checkpoint — 2026-10-05
Skills #1174 is merged. The isolated read-only pilot #1176 now includes merged contract #1175, retaining immutable library pin
8eff8240679d38157ee08b9d5e5eaeb656ce7550(redis-developer/redis-database-mcp-rs#126). Contract #1175 merged on 2026-10-05 as8ff9e5188d09acfc8704c3e97f2526e069602cd5, accepting the fixed-target contract for the opt-in pilot only. This does not approve source access, a release or default cutover. Current-head validation is recorded in those PRs; prior passing runs are not substituted for current CI.The library repository is INTERNAL. Public Actions cannot fetch it; no approved access mechanism/owner/reference is available yet. Access must cover uncached Cargo resolution in CI, rustdoc, both cargo-deny check groups, dist metadata/builds and eventual release-plz packaging. CI-only credentials would not solve anonymous default-feature or public-fork builds: optional Git dependencies still resolve with the feature disabled. Public source consumption requires a separate distribution/access decision. No visibility change, credential provisioning, release-token reuse, fork-secret exposure or check bypass is authorized.
Reconnect-safe setup adoption (redis-developer/redis-database-mcp-rs#128), deterministic lifecycle (redis-developer/redis-database-mcp-rs#125), full-cluster keyspace semantics, family parity/catalog review and release packaging remain separate default-cutover/release gates. No default cutover or release is initiated. This checkpoint leaves #1170, #1171 and #1172 open.
Pilot refresh checkpoint: #1176 at
a4bd2a0bd76e4de1715f322456138b2dcc19b56aincorporates main8ff9e5188d09acfc8704c3e97f2526e069602cd5. Its only merge conflict was documentation navigation, resolved by retaining both design and pilot pages. Code/manifests/lockfile/catalogs are identical to prior tested headed721d9a832fa737378d4d099d04aefc134e7919. Fresh offline pilot and skill-resource tests (9 + 9), fmt, all-target/all-feature Clippy, strict MkDocs and focused Markdown lint pass. Prior full/live validation remains prior evidence; source-access/distribution gates remain unresolved and the pilot stays draft.