Qdrant Memory

io.github.cnkangPublished by GitHub account cnkangv0.3.1Updated Nov 5, 2026

Persistent scoped Qdrant memory for agents, through four explicit stdio MCP tools.

The publisher's own server: Memory.fit

VerifiedSTDIODesktop onlyDatabasesKnowledge & Memory

Overview

AI-generated overview

Local stdio MCP server giving agents persistent, operator-scoped memory in Qdrant, with four explicit tools to search, add, update and delete memories.

What you can do
  • Search scoped memories by query and optional category, returning IDs, scores and provenance
  • Add a durable memory from text and receive its memory ID
  • Replace or delete a memory by exact ID within the operator's scope
  • Memory is stored in Qdrant (embedded, self-hosted or Cloud) with embeddings from Ollama or an OpenAI-compatible provider
  • Scope is fixed by the operator's profile; migration, export, reset and bulk deletion stay in operator CLI commands
When to use it
When you want an assistant to keep durable, portable memory across sessions and multiple agent hosts without a hosted memory service. Suited to local or self-hosted setups where you control the profile directory and storage destination.
Requirements
Runs locally as a Python package via uvx or a virtual environment; Python 3.11+ and uv or a venv. Requires a configured profile directory (qdrant-memory.json) with storage and an embedding service, for example a local Ollama model and embedded Qdrant. Optional secrets QDRANT_API_KEY and EMBEDDING_API_KEY for remote Qdrant or cloud embeddings; QDRANT_URL for a remote endpoint. Initialization must be run before a client launches it.
Before you install
Memory text and queries are sent to the configured embedding provider, and cloud Qdrant receives vectors and payloads; only local Ollama with embedded Qdrant keeps processing local. Keep QDRANT_API_KEY and EMBEDDING_API_KEY in environment variables and protect the profile files. The tools write, replace and delete stored memories. Do not run overlapping MCP, CLI or other processes writing to the same profile, and do not point a first test at a production destination.

Installation

In SourceWeft

  1. Open Qdrant Memory in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Qdrant Memory MCP

One Memory. Multiple Agents. No Lock-in.

The Codex plugin candidate adds guided local setup, read-only native-memory import and verified JSON/Markdown handoff. It is versioned independently and does not add a second Runtime. See the executed validation and limits. Exports remain readable without this plugin or a subscription; native adoption is verified separately from file creation.

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. Configure destination protection and shared doctor before deployment. See the Owner support record for support limits.

One Memory, Multiple Agents — opt-in shared owner

The distribution adds an opt-in single-owner service and stdio bridge. Install Runtime 0.6.0 to use them. See shared integration guide. Private defaults are unchanged. Native Provider automatic shared extraction is deferred.

A WorkBuddy connector and a DeepSeek Harness bundle reuse this stdio MCP, the managed launcher and the canonical Skill.

简体中文

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.6.0.

See 0.3.1 release notes for the Runtime pin and upgrade guidance.

Before using an exact-version installation command, confirm that version on the PyPI release page. If unavailable, these package commands cannot run yet. Use the published 0.3.0 guide until publication; a source candidate does not establish PyPI or npm availability.

Versions: MCP distribution 0.3.1 pins Runtime 0.6.0, 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. 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.

HostNative ProviderExplicit MCP toolsAutomatic captureAutomatic recallShared OwnerRemote accessVerification
HermesYesYes (via standalone)YesYesOpt-inYesReal host tested
OpenCodeNoYesNoNoVia OwnerYesReal host tested (dual-device)
PiNoYes (extension)Opt-in adapterOpt-in adapterVia OwnerYesReal host tested
DeepSeek HarnessNoYes (DSH bundle)NoNoVia OwnerYesReal host tested
WorkBuddyNoYes (connector)NoNoVia OwnerYesReal desktop GUI tested
CodexNoYesNoNoVia OwnerYesOfficial CLI tested

This distribution does not auto-extract conversations for any MCP host. Automatic capture and recall require a native provider or a lifecycle adapter. See the Codex validation record for the tested CLI, source revisions and model providers; desktop GUI and native-memory adoption are separate verification boundaries.

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:

json
{  "schema_version": 1,  "scope": {"user_id": "my-user", "agent_id": "my-agent"},  "qdrant": {"mode": "embedded", "collection": "qdrant_memory"},  "embedding": {    "mode": "plugin", "provider": "ollama", "model": "qwen3-embedding:4b",    "base_url": "http://127.0.0.1:11434", "dimensions": 2560, "distance": "Cosine"  }}

Initialize, then launch (replace /path/to/profile with your absolute path):

bash
uvx --from qdrant-memory-mcp==0.3.1 qdrant-memory-mcp --home /path/to/profile inituvx --from qdrant-memory-mcp==0.3.1 qdrant-memory-mcp --home /path/to/profile mcp

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.3.1 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.

Alternatively:

bash
python3 -m venv .venv.venv/bin/python -m pip install qdrant-memory-mcp==0.3.1.venv/bin/qdrant-memory-mcp --home /path/to/profile init.venv/bin/qdrant-memory-mcp --home /path/to/profile mcp

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.

Connect a client

Codex config.toml example:

toml
[mcp_servers.qdrant_memory]command = "uvx"args = ["--from", "qdrant-memory-mcp==0.3.1", "qdrant-memory-mcp", "--home", "/path/to/profile", "mcp"]

OpenCode opencode.json example:

json
{  "$schema": "https://opencode.ai/config.json",  "mcp": {    "qdrant_memory": {      "type": "local",      "command": ["uvx", "--from", "qdrant-memory-mcp==0.3.1", "qdrant-memory-mcp", "--home", "/path/to/profile", "mcp"],      "enabled": true    }  }}

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 protocol acceptance tests use the official Python MCP SDK. Host-specific evidence is recorded separately in the architecture and support boundaries and the Runtime's client evidence and limits.

Tools and boundaries

ToolInputResult
qdrant_memory_searchquery, optional categoryScoped memories with IDs, scores and provenance
qdrant_memory_addtextDurable memory ID
qdrant_memory_updateexact id, replacement textScoped replacement
qdrant_memory_deleteexact idScoped 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.

Concepts and evidence

Validation reports apply to their recorded versions, workloads and host environments. Short protocol or cloud runs do not establish 24-hour acceptance for a new release.

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.

See CI and dependency maintenance, publishing, architecture, and the optional Skill.

Dependency boundary

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.

Source: README.md at commit e106f7d

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the server did not start.

Version history

16
  1. v0.3.1LatestNov 5, 2026
  2. v0.3.0Nov 5, 2026
  3. v0.2.9Nov 3, 2026
  4. v0.2.7Nov 1, 2026
  5. v0.2.6Oct 29, 2026
  6. v0.2.5Oct 24, 2026
  7. v0.2.4Oct 23, 2026
  8. v0.2.3Oct 23, 2026
  9. v0.2.2Oct 19, 2026
  10. v0.2.1Oct 18, 2026
  11. v0.2.0Oct 18, 2026
  12. v0.1.4Oct 16, 2026
  13. v0.1.3Oct 15, 2026
  14. v0.1.2Oct 14, 2026
  15. v0.1.1Oct 13, 2026
  16. v0.1.0Oct 13, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Memory integrations