Skip to content

Commit a487b74

Browse files
authored
chore: release v10.26.1 — hybrid backend detection fix in MCP health checks (#575)
Patch release v10.26.1. Fixes #570.
1 parent 446cdbc commit a487b74

File tree

6 files changed

+16
-11
lines changed

6 files changed

+16
-11
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
1010

1111
## [Unreleased]
1212

13+
## [10.26.1] - 2026-03-08
14+
15+
### Fixed
16+
17+
- **[#570] Hybrid backend misidentified as sqlite-vec in MCP health checks** (`memory_health` tool): `HealthCheckFactory` relied solely on the storage object's class name to select the health-check strategy. When the hybrid backend's storage is accessed through a delegation or wrapper layer the class name is not `HybridMemoryStorage`, so the factory fell back to the sqlite-vec strategy and reported `"sqlite-vec"` instead of `"hybrid"`, hiding Cloudflare sync status from users. The factory now performs structural detection — if the storage object exposes both a `primary` attribute and either a `secondary` or `sync_service` attribute it is classified as hybrid regardless of class name. The existing SQLite and Cloudflare strategy paths are unchanged. Adds three focused unit tests for strategy selection (sqlite class-name path, wrapped/delegated hybrid structural path, unknown fallback). Fixes #570.
18+
1319
## [10.26.0] - 2026-03-07
1420

1521
### Added

CLAUDE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with th
1616

1717
MCP Memory Service is a Model Context Protocol server providing semantic memory and persistent storage for Claude Desktop and 13+ AI applications. It uses vector embeddings for semantic search, supports multiple storage backends (SQLite-vec, Cloudflare, Hybrid), and includes advanced features like memory consolidation, quality scoring, and OAuth 2.1 team collaboration.
1818

19-
**Current Version:** v10.26.0 - Credentials tab + Settings restructure + Sync Owner selector in dashboard; `MCP_HYBRID_SYNC_OWNER=http` recommended for hybrid mode — 1,420 tests — see [CHANGELOG.md](CHANGELOG.md) for details
19+
**Current Version:** v10.26.1 - Hybrid backend correctly reported in MCP health checks (`HealthCheckFactory` structural detection fix for wrapped/delegated backends, issue #570) — 1,420 tests — see [CHANGELOG.md](CHANGELOG.md) for details
2020

2121
> **🎯 v10.0.0 Milestone**: This major release represents a complete API consolidation - 34 tools unified into 12 with enhanced capabilities. All deprecated tools continue working with warnings until v11.0. See `docs/MIGRATION.md` for migration guide.
2222
@@ -474,6 +474,7 @@ memory.memory_type or ''
474474
| Tests failing after git pull | Run `./scripts/update_and_restart.sh` (installs deps, restarts server) |
475475
| MCP fails on every session (Windows) | Set `MCP_INIT_TIMEOUT=120` in your MCP server env config (issue #474) |
476476
| Cloudflare 401 on MCP server startup (hybrid mode) | Set `MCP_HYBRID_SYNC_OWNER=http` in `.env` — MCP server then uses SQLite-Vec only, no Cloudflare token needed in Claude Desktop config |
477+
| Cloudflare 403 / sync not running (IPv6) | Python prefers IPv6 but token IP allowlist may only have IPv4. Add your IPv6 /64 network to token's Client IP Address Filtering, or remove IP filtering entirely |
477478
| Strict stdio client times out during handshake (e.g. Codex, 10s budget) | Set `MCP_INIT_TIMEOUT=5` to force lazy loading — storage initializes on first tool call instead (issue #561) |
478479

479480
**Comprehensive troubleshooting:** [docs/troubleshooting/hooks-quick-reference.md](docs/troubleshooting/hooks-quick-reference.md)

README.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -265,20 +265,18 @@ Export memories from mcp-memory-service → Import to shodh-cloudflare → Sync
265265
---
266266

267267

268-
## Latest Release: **v10.26.0** (March 7, 2026)
268+
## Latest Release: **v10.26.1** (March 8, 2026)
269269

270-
**Minor release: Credentials tab + Settings restructure + Sync Owner selector in dashboard**
270+
**Patch release: Hybrid backend correctly reported in MCP health checks**
271271

272272
**What's New:**
273-
- **Credentials tab in Settings modal**: Manage Cloudflare API token, Account ID, D1 Database ID, and Vectorize Index directly from the dashboard. Credentials shown with partial-reveal (masked) display and eye-toggle.
274-
- **Connection test gate**: Credentials must pass a live connection test before they can be saved — prevents accidental misconfiguration.
275-
- **Sync Owner selector**: New `MCP_HYBRID_SYNC_OWNER` setting (`http` / `both` / `mcp`) with "http only (recommended)" as default. HTTP server handles all Cloudflare sync; MCP server uses SQLite-Vec only.
276-
- **Settings tabs restructured**: Backup tab split into Quality / Backup / Server tabs — 7 tabs total for clearer organisation.
277-
- **Security hardening**: SSRF protection (account_id validated to `[a-f0-9]{32}`), newline injection prevention, sync_owner allowlist.
273+
- **[#570] Hybrid backend misidentified as sqlite-vec in `memory_health`**: `HealthCheckFactory` now uses structural detection (checks for `primary` + `secondary`/`sync_service` attributes) instead of class-name matching to identify hybrid storage. Wrapped or delegated hybrid backends are now reported correctly as `"hybrid"`, ensuring Cloudflare sync status is visible in health output.
274+
- Three focused unit tests added for strategy selection (sqlite class-name path, wrapped hybrid structural path, unknown fallback).
278275

279276
---
280277

281278
**Previous Releases**:
279+
- **v10.26.0** - Credentials tab + Settings restructure + Sync Owner selector in dashboard; `MCP_HYBRID_SYNC_OWNER=http` recommended for hybrid mode
282280
- **v10.25.3** - Patch release: stdio handshake timeout cap, syntax fixes, hybrid sync fix, dashboard version badge fix
283281
- **v10.25.2** - Patch fix: `update_and_restart.sh` health check reads `status` field instead of removed `version` field
284282
- **v10.25.1** - Security: CORS wildcard default changed to localhost-only, soft-delete leak in `search_by_tag_chronological()` fixed (GHSA-g9rg-8vq5-mpwm)

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "mcp-memory-service"
7-
version = "10.26.0"
7+
version = "10.26.1"
88
description = "Open-source persistent memory for AI agent pipelines and Claude. REST API + semantic search + knowledge graph + autonomous consolidation. Self-host, zero cloud cost."
99
readme = "README.md"
1010
requires-python = ">=3.10"

src/mcp_memory_service/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
"""Version information for MCP Memory Service."""
22

3-
__version__ = "10.26.0"
3+
__version__ = "10.26.1"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)