Skip to content

epic(mcp): migrate Redis database tools to redis-mcp #1170

Description

@joshrotenberg

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 remains 8eff8240679d38157ee08b9d5e5eaeb656ce7550. The owner made the library public; the historical internal-source blocker below is resolved.

Reviewed pre-merge PR head 977c7c258277f8567b510764bc562919d587de99 passed 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 in redisctl-mcp family 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

  • redisctl 0.12.1 upgrades Tower-MCP to 0.23.2 (fix(mcp): upgrade Tower-MCP to 0.23.2 #1168)
  • redis-database-mcp-rs#123 merged the matching Tower-MCP 0.23.2 baseline
  • redis-tower 0.1.4 published the first-consumer hardening fixes
  • redis-mcp consumes published redis-tower 0.1.4 via redis-database-mcp-rs#124
  • Agree publication/registry packaging before a dependent redisctl release (not a development-pilot prerequisite)
  • redisctl accepted the fixed-target contract for the opt-in pilot via merged docs(mcp): define fixed-target migration contract and pilot gates #1175; default compatibility cutover remains separate

Ownership boundary

redis-mcp owns 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

  1. Decide and document the database target contract and 1.0 compatibility boundary.
  2. Add a feature-gated, opt-in read-only Keyspace/Strings pilot using an immutable reviewed redis-mcp Git revision (temporary local path overrides are acceptable for coordinated development); keep legacy handlers as the default.
  3. Add cross-backend parity tests for representative standalone, TLS, authentication, Cluster, policy, catalog, and failure behavior.
  4. Migrate remaining stateless families in reviewed slices, deleting each legacy implementation only after its parity gate passes.
  5. Migrate raw/native invocation and then stateful/dedicated-connection surfaces after their ownership and isolation tests pass.
  6. Make redis-mcp the default database backend and remove credential-bearing per-call url/profile fields at the declared 1.0 boundary.
  7. Remove the legacy redis-rs database backend and duplicate command-safety/catalog code after rollback coverage and release evidence are complete.

Acceptance criteria

  • one source of truth exists for every migrated database tool schema and behavior
  • redisctl composes redis-mcp family routers into its existing policy-filtered router
  • profile/credential resolution remains redisctl-owned and credential-safe
  • standalone and Cluster targets have reconnect-safe client setup and representative live tests
  • catalog changes are reviewed explicitly and documented as compatibility changes
  • migrated families no longer retain duplicate redisctl handlers, classifiers, or response normalization
  • dependency and release ordering is documented and reproducible

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 as 8ff9e5188d09acfc8704c3e97f2526e069602cd5, 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 a4bd2a0bd76e4de1715f322456138b2dcc19b56a incorporates main 8ff9e5188d09acfc8704c3e97f2526e069602cd5. Its only merge conflict was documentation navigation, resolved by retaining both design and pilot pages. Code/manifests/lockfile/catalogs are identical to prior tested head ed721d9a832fa737378d4d099d04aefc134e7919. 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.

Activity

  1. added
    epicParent issue tracking multiple related issues
    mcpRelated to the MCP server
    dependenciesPull requests that update a dependency file
    on Oct 2, 2026
  2. joshrotenberg commented on Oct 2, 2026

    @joshrotenberg
    CollaboratorAuthor

    Initial child issues:

    External gates:

    Later family cutover issues should be filed only after the pilot produces an evidence-backed catalog/parity report.

  3. joshrotenberg commented on Oct 2, 2026

    @joshrotenberg
    CollaboratorAuthor

    Migration status after the 0.12.1 baseline:

    1. redis-database-mcp-rs feat(cloud): implement task commands #123 is merged, aligning the library with Tower-MCP 0.23.2.
    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.
    3. 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.
    4. 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.
    5. 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.

  4. joshrotenberg commented on Oct 2, 2026

    @joshrotenberg
    CollaboratorAuthor

    Dependency-gate update:

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    dependenciesPull requests that update a dependency fileepicParent issue tracking multiple related issuesmcpRelated to the MCP server

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions