Skip to content

mcp-data-platform-v1.80.0

Choose a tag to compare

@github-actions github-actions released this 05 Jun 02:29
· 29 commits to main since this release
11c0669

Overview

This release brings relevance search to the portal's Knowledge & Memory page. Users can type a free-text query on either tab and get results ranked by relevance, always scoped server-side to their own records. Previously the page offered only status and dimension filter buttons.

The MCP surface already supported semantic and lexical recall through the memory_recall tool. This release brings the equivalent experience to the portal UI and makes both surfaces rank through the same primitives, so the portal and the agent see the same ordering.

Highlights

  • Free-text search on both tabs. A debounced search box on the Knowledge and Memory tabs ranks results by relevance to the typed query. Search refines by the active status/dimension filters; pagination is replaced by a ranked top-K while a query is active.
  • Hybrid ranking with graceful fallback. When an embedding provider is configured, results are ranked by a hybrid of vector and lexical similarity. When no embedder is configured, the embedder errors, or it returns a zero vector, search falls back to lexical-only so results still appear. This mirrors memory_recall exactly.
  • One store, both tabs. Knowledge insights are stored as knowledge-dimension memory records (memoryInsightAdapter) sharing the memory_records table and the same embeddings as memories. The Memory tab searches across dimensions; the Knowledge tab scopes to dimension = knowledge. There is no separate insight index.
  • Fail-closed scoping. Every search is scoped server-side by the caller's email (created_by). If the authenticated identity carries no email, the search returns 403 rather than running unscoped, so a search never executes without a scoping key.

What changed

New portal endpoints (pkg/portal)

Two authenticated endpoints, behind the same auth middleware as the existing portal list routes. The response uses the standard paginated shape with a score field added per row.

Method Path Params
GET /api/v1/portal/memory/records/search q (required), dimension, status, limit
GET /api/v1/portal/knowledge/insights/search q (required), status, limit

Search primitives (pkg/memory)

  • Added CreatedBy and Dimension scope to VectorQuery, HybridQuery, and LexicalQuery, enforced in SQL through a shared scopeFilters helper.
  • The default exclude-archived predicate now applies only when no explicit status is requested. An explicit status (including archived) is honored rather than producing a contradictory status <> 'archived' AND status = 'archived' that matches nothing. Recall semantics are unchanged: memory_recall passes no explicit status, so archived records stay excluded there.

Knowledge adapter (pkg/toolkits/knowledge)

  • Added an InsightSearcher capability to the memory-backed adapter. It delegates to the shared memory search with the same owner and knowledge-dimension scope and the same status post-filter as the list path, then maps scored records back to insights.
  • The knowledge-search route registers only when the wired store implements InsightSearcher, so the legacy separate-table store (used only when the memory layer is disabled) does not get a non-functional route.

Shared helper (pkg/embedding)

  • Extracted IsZeroVector so the portal search and memory_recall share one hybrid-vs-lexical decision and cannot drift apart.

Frontend (ui)

  • Debounced search box on both the Knowledge and Memory tabs, ranking by relevance and refining by the active filters.
  • Pagination is hidden in search mode in favor of a ranked top-K.
  • Lexical results still appear when no embedding provider is configured.

Documentation

  • Updated docs/server/portal-user.md and docs/llms-full.txt; regenerated swagger.

Compatibility

  • No database migration. Search reuses the existing memory_records table and embeddings.
  • Additive change only: two new endpoints plus a UI search box. No existing endpoint, tool, or recall behavior changes.
  • memory_recall ordering is unchanged; the portal now ranks the same way.

Out of scope

  • The recall_insight MCP tool (#442) is a separate surface and is not part of this release.

Installation

Homebrew (macOS)

brew install txn2/tap/mcp-data-platform

Claude Code CLI

claude mcp add mcp-data-platform -- mcp-data-platform

Docker

docker pull ghcr.io/txn2/mcp-data-platform:v1.80.0

Verification

All release artifacts are signed with Cosign. Verify with:

cosign verify-blob --bundle mcp-data-platform_1.80.0_linux_amd64.tar.gz.sigstore.json \
  mcp-data-platform_1.80.0_linux_amd64.tar.gz

Full changelog: v1.79.2...v1.80.0