Skip to content

docs(mcp): document multi-index server contract (RAAE-1608)#633

Draft
vishal-bala wants to merge 1 commit into
feature/raae-1607-upsert-routingfrom
feature/raae-1608-docs
Draft

docs(mcp): document multi-index server contract (RAAE-1608)#633
vishal-bala wants to merge 1 commit into
feature/raae-1607-upsert-routingfrom
feature/raae-1608-docs

Conversation

@vishal-bala

@vishal-bala vishal-bala commented Jun 16, 2026

Copy link
Copy Markdown
Collaborator

Motivation

The RedisVL MCP docs were written for the original single-index model and still stated that "one server process binds to exactly one existing Redis index." With multi-index support now implemented across RAAE-1604RAAE-1607, the user-facing documentation (RAAE-1608) needs to describe the new compatibility story without confusing existing single-index users.

The guiding principle in the rewrite is that single-index remains the simplest deployment and works exactly as before — callers never name an index — while multi-index is presented as a formal, additive capability layered on top via discovery (list-indexes) and explicit routing (the index argument). No documentation still claims a server must bind to exactly one index.

Implemented changes

The concept doc (concepts/mcp.md) now frames the server as binding one or several logical indexes, each addressed by an id, and adds an "Index Selection and Discovery" section covering the optional index argument, the omitted-index and unknown-id rules, the response echo, and discovery-first guidance. The "Single Index Binding" section becomes "Single and Multiple Index Bindings," the read-only section explains the two-level write policy (global --read-only vs per-index read_only, folded into effective write availability), and the tool surface gains a list-indexes subsection documenting its minimal payload — filterable fields only, vector/embed-source fields omitted, explicit-only limits, and redis_name never exposed.

The how-to guide (how_to_guides/mcp.md) adds a two-binding config example (a writable vector index alongside a read-only fulltext index), an Index Selection subsection, a list-indexes tool contract with a response example, and threads the optional index argument through the search-records and upsert-records argument lists and request/response examples. A discovery-first multi-index flow is shown at the top of the search examples, and the CLI/env-var notes are updated for per-index read-only and the multi-index search description.

Minor additional changes:

  • README MCP section and feature-table entry reworded from "an existing Redis index" to "one or more existing Redis indexes," with list-indexes and the discovery-first flow noted. (The README edit was explicitly authorized for this ticket, overriding the repo's default no-README-edits rule.)

Verification

  • sphinx-build (the docs dependency group) completes cleanly (exit 0). The only warnings are pre-existing and unrelated (upstream redis-py docstrings and index.md heading levels); no warnings reference the MCP pages, and no broken cross-reference/anchor warnings were introduced.

Stacking

This PR targets feature/raae-1607-upsert-routing and is the top of the stack. Review/merge bottom-up: #629#630#631#632 → this PR.

🤖 Generated with Claude Code

Update the MCP concept doc, how-to guide, and README MCP section to reflect
formal multi-index support. Replace single-index-only language ("one server
binds to exactly one index") with the compatibility story: a single configured
index remains the simplest deployment and behaves unchanged, while multiple
indexes are formally supported behind discovery and explicit routing.

Document the list-indexes discovery tool and recommend clients call it first on
a multi-index server, then pass the chosen logical id as the index argument to
search-records and upsert-records. Explain that both tools echo the resolved
index, that an omitted index is valid only on single-index servers, and that
unknown ids fail with invalid_request.

Explain the two-level write policy: global --read-only disables writes across
every binding, while per-index read_only disables a single binding; upsert is
exposed only when at least one binding is writable, and writes to a read-only
binding are rejected with invalid_request. Clarify that list-indexes shares the
filterable fields discovered from each index, omits the vector and embed-source
fields, surfaces only explicitly configured runtime limits, and never exposes
redis_name.

- Add a two-binding config example (writable vector index + read-only fulltext
  index) and a list-indexes response example.
- Add index-parameterized search-records and upsert-records request/response
  examples and a discovery-first multi-index flow.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@jit-ci

jit-ci Bot commented Jun 16, 2026

Copy link
Copy Markdown

🛡️ Jit Security Scan Results

CRITICAL HIGH MEDIUM

✅ No security findings were detected in this PR


Security scan by Jit

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant