v0.2.14
moorcheh-ai/memantov0.2.14Aug 11, 2026by het0814
AI Summary
Adds Langfuse integration, fixes `memanto-mcp` breaking on MCP SDK 2.0, adds per-client write attribution in MCP, and fixes loopback client misuse.
Key Highlights
- New Langfuse integration (`langfuse-memanto`)
- Fixed `memanto-mcp` compatibility with MCP SDK 2.0
- Per-client write attribution in MCP tools
- Fixed loopback client being misused as an API key
New Features
- Langfuse integration
- MCP SDK 2.0 compatibility fix
- Per-client attribution
- Source-archive version resolution fix
Full Release Notes
# Release Notes for v0.2.14
This release adds a **Langfuse integration** — a live observability-to-memory bridge (`langfuse-memanto`) plus a `memanto migrate --langfuse` import path and a Web UI sync tile — fixes **`memanto-mcp` breaking on MCP SDK 2.0**, adds **per-client write attribution** to MCP tool calls, and closes a couple of install/runtime correctness bugs (loopback client misuse, source-archive version resolution).
## New Features
- **Langfuse integration** (`integrations/langfuse/`, `memanto/cli/migrate/langfuse_*.py`,
`memanto/cli/analyze/langfuse_export.py`, `memanto/app/ui/static/index.html`)
- New `langfuse-memanto` package: `attach(agent_id=...)` wires into an
existing Langfuse setup and turns failing/notable spans into durable
Memanto memories live, so lessons from observability data don't have to be
re-learned on every run. Includes a `SpanMapper` for translating Langfuse
spans into typed memory candidates and a full handler/config layer.
- `memanto migrate --langfuse` adds Langfuse as a fourth migration source
(alongside Mem0, Letta, Supermemory), with its own discovery step,
configurable mapping rules (`langfuse_rules.py`), and state tracking for
incremental sync.
- New **Langfuse tile** in the Web UI's Migrate/Connect surface, wired
through `ui_router.py`, for discovering and syncing a Langfuse project
without touching the CLI.
## Bug Fixes
- **`memanto-mcp` broken on MCP SDK 2.0** (`integrations/mcp/pyproject.toml`,
`integrations/mcp/memanto_mcp/{__init__,server}.py`)
- The published `memanto-mcp` 0.1.1 declared an unbounded `mcp[cli]>=1.2.0`
dependency; MCP SDK 2.0 removed `mcp.server.fastmcp` (`FastMCP` moved to
`mcp.server.mcpserver.MCPServer`), so a fresh install silently resolved to
a version the server couldn't import and failed to start. Pinned the `mcp`
dependency to stay below 2.0 and bumped to `memanto-mcp` 0.1.2.
- **Per-client write attribution in MCP** (`integrations/mcp/memanto_mcp/tools.py`)
- MCP-written memories now default `source` to the connected client's
identity (e.g. `cursor`, `codex`, `claude-ai`) instead of a single generic
value, falling back to `mcp-agent` when the transport carries no client
identity — reusing core's own `SOURCE_MAX_LENGTH`/`SOURCE_PATTERN`
validation so the advertised tool schema matches what the write path
actually accepts.
- **Loopback client misused as a real API key** (`memanto/app/clients/moorcheh.py`)
- `get_moorcheh_api_key()` and friends are FastAPI dependencies but are also
called directly as plain functions elsewhere in the codebase; called
directly, the unresolved `Header(...)` default object is truthy and was
being forwarded to the SDK as if it were a real API key, raising a
`TypeError` inside httpx for internal/loopback UI operations. Now only a
genuine string is treated as a supplied key.
- **Version resolution for source-archive installs** (`pyproject.toml`)
- Added a `hatch-vcs` fallback version so editable installs and installs
from a source archive (e.g. a GitHub ZIP with no `.git` metadata) no
longer fail version resolution at install time.
## Tests
- New `tests/test_langfuse_{config,discover,export,rules,state,sync}.py` and
`integrations/langfuse/tests/{test_handler,test_span_mapper}.py` covering
the new integration end-to-end.
- New `integrations/mcp/tests/test_packaging.py` guarding the SDK version pin;
expanded `integrations/mcp/tests/{test_server,test_tools}.py`.
## Full Changelog
Full Changelog: https://github.com/moorcheh-ai/memanto/compare/v0.2.13...v0.2.14