Durable, portable, and permission-aware memory for AI agents — distributed as
an MCP adapter over the Qdrant Memory Runtime.
For shared production deployments, read the deployment security guide. Owner-only database write credentials are required independently of MCP grants. Runtime 0.5.0 includes destination protection and shared doctor. The operator must configure these controls. See the for support limits.
Persistent scoped Qdrant memory for agents, through four explicit stdio MCP tools.
The distribution adds an opt-in single-owner service and stdio bridge. Install Runtime 0.5.1 to use them. See shared integration guide. Private defaults are unchanged. Native Provider automatic shared extraction is deferred.
Persistent, scoped memory for AI agents through four explicit stdio MCP tools.
This repository distributes the existing Python Runtime.
Its metadata-only wheel contains no Python business implementation. The console
script points directly to qdrant_memory.standalone:main and depends on
hermes-plugin-qdrant-memory[mcp]==0.5.1.
See 0.2.4 release notes for source alignment, WorkBuddy assets and compatibility boundaries.
Before using an exact-version installation command, confirm that version on
the PyPI release page.
Versions: MCP distribution 0.2.5 pins Runtime 0.5.1, which supports MCP
Python SDK 1.x and 2.x (mcp>=1.30,<3). The four scoped tools and stdio
launch arguments are the same for both SDK majors. It retains the fix for explicit
writes of distinct, highly similar texts without an LLM. The commands below use
these exact versions. Release
artifacts are available through the distribution PyPI page
and Runtime PyPI page.
See release checklist for the publishing sequence.
Runtime, optional Agent Skill
and MCP distribution versions are independent. The Skill is usage guidance,
not a runtime dependency. Hermes retains its native MemoryProvider, automatic
extraction and prefetch. Ordinary MCP performs only explicitly requested memory
operations. It does not automatically extract every conversation turn.
Harness support matrix
Verification levels: configuration example only, protocol-level tested, official
SDK/CLI tested, real host tested, real desktop GUI tested, not verified.
Host
Native Provider
Explicit MCP tools
Automatic capture
Automatic recall
Shared Owner
Remote access
Verification
Hermes
Yes
Yes (via standalone)
Yes
Yes
Opt-in
Yes
Real host tested
OpenCode
No
Yes
No
No
Via Owner
Yes
Real host tested (dual-device)
Pi
No
Yes (extension)
Opt-in adapter
Opt-in adapter
Via Owner
Yes
Real host tested
DeepSeek Harness
No
Yes (DSH bundle)
No
No
Via Owner
Yes
Real host tested
WorkBuddy
No
Yes (connector)
No
No
Via Owner
Yes
Real desktop GUI tested
Codex
No
Yes
No
No
Via Owner
Yes
Configuration example only
This distribution does not auto-extract conversations for any MCP host. Automatic
capture and recall require a native provider or a lifecycle adapter.
Install and initialize
For the shortest currently supported local setup, follow the
Ollama quickstart (中文).
It covers an existing model, installing a missing model, a separate WorkBuddy
profile, connection settings and a first save/search check. No Qdrant server,
Docker, cloud account or embedding API key is needed for that local path.
Python/uv and one-time profile configuration are still required for this
direct route. The managed WorkBuddy connector and DSH bundle prepare those
dependencies from Node.js instead.
Requires Python 3.11+ and either uv or a Python
virtual environment. You must configure storage and an embedding service.
For the example below, run Ollama and install qwen3-embedding:4b yourself.
Create an operator-owned profile directory and save qdrant-memory.json inside:
The command without --home uses ~/.qdrant-memory, independent of Hermes.
Configure and initialize that directory before letting a Registry client launch
uvx --from qdrant-memory-mcp==0.2.5 qdrant-memory-mcp mcp.
The executable name matches the package name.
The Registry's positional mcp selects protocol mode. Its optional named
--home precedes mcp when a client supplies a custom profile.
On Windows use .venv\Scripts\python.exe and
.venv\Scripts\qdrant-memory-mcp.exe.
Qdrant embedded, self-hosted server and Cloud, plus Ollama and OpenAI-compatible
embeddings, are configured in the Runtime's configuration reference.
Keep credentials in operator environment variables (QDRANT_API_KEY,
EMBEDDING_API_KEY, or configured names). Never commit their values.
Initialization against an existing collection requires explicit operator choice.
Do not use a production destination for a first test.
Pi needs a separately installed MCP client/extension. In that extension, use
command: uvx and the same argument list. No built-in Pi MCP support or universal
extension config format is claimed. These are configuration examples. This
distribution's acceptance tests use the official Python MCP SDK, not live agent
applications. See the Runtime's client evidence and limits.
Tools and boundaries
Tool
Input
Result
qdrant_memory_search
query, optional category
Scoped memories with IDs, scores and provenance
qdrant_memory_add
text
Durable memory ID
qdrant_memory_update
exact id, replacement text
Scoped replacement
qdrant_memory_delete
exact id
Scoped deletion
Scope is fixed by the operator's profile (user_id, agent_id). Model inputs
and MCP client identity cannot override it. Knowing an ID does not grant access.
Migration, export, reset and bulk deletion remain trusted operator CLI commands.
See standalone maintenance.
No resources or prompts are advertised. This is a local subprocess, with no
public HTTP/SSE listener or remote authentication service. Stdout is reserved
for protocol messages, with sanitized diagnostics on stderr.
Data flows from client → Runtime → embedding provider → Qdrant and the local
SQLite ledger. With local Ollama and embedded Qdrant, memory processing stays
local. Cloud embedding receives memory/query text, and cloud Qdrant receives
vectors and stored payloads. The client/model may also receive recalled text.
The operator must authorize retention and access and protect the profile files.
One writer lease coordinates a profile/destination. Do not overlap MCP, CLI
or Hermes processes writing to it. Separate profiles or machines do not provide
a distributed lock. This package does not support uncoordinated multiprocess
writes, auto-extraction, an HTTP transport, or implicit credential discovery
from Hermes. It preserves the Runtime's ledger, IDs and recovery semantics.
Long-running 24-hour acceptance: pending / not yet verified.
Verification and development
CI builds wheel/sdist, checks metadata and ownership marker. It runs installed
protocol tests with temporary profiles, embedded Qdrant and a deterministic
loopback embedding fixture on Linux/macOS/Windows, Python 3.11 and 3.14.
No test connects to personal Qdrant, Hermes profiles or memory data. These tests
cover initialize, discovery, four tools, persistence, recovery, scope isolation,
error redaction and protocol stdout. Provider/cloud compatibility evidence
belongs to the Runtime.
CI prefers the immutable Runtime PyPI release. Before a Runtime release reaches
PyPI, CI builds a wheel from the immutable revision recorded in runtime-source.json. This is only a preparation fixture:
published dependency metadata always uses the exact PyPI version. Release
workflow acceptance requires installation from PyPI and never uses that fallback.
The runtime dependency is only hermes-plugin-qdrant-memory[mcp]. The sdist includes the
Python acceptance tests, apart from harnesses that need an external Runtime checkout, DSH
client assets, or Node fixtures the sdist does not carry; selected harness lockfiles and
Node-only .mjs tests are excluded. The wheel remains metadata-only. Development
dependencies are declared under [project.optional-dependencies].dev and are not installed
for end users.
WorkBuddy and DeepSeek Harness
Use the WorkBuddy connector or the
DSH installation guide for explicit durable memory.
Both reuse the Python Runtime, the four MCP tools and the canonical Skill. The published managed launcher prepares private Python
and CPU-model dependencies with Node.js. Thus, the managed routes do not require a
system Python, uvx or Ollama installation. The DSH Bundle is
distributed as @cnkang/qdrant-memory-dsh-bundle. Existing Hermes profiles
and defaults are unchanged. See architecture and version matrix
and validation limits.