Skip to main content

Qdrant Memory MCP

简体中文

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

Versions: MCP distribution 0.1.1 pins Runtime 0.2.1, which fixes 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.

Install and initialize

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:

{
  "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):

uvx --from qdrant-memory-mcp==0.1.1 qdrant-memory-mcp --home /path/to/profile init
uvx --from qdrant-memory-mcp==0.1.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.1.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:

python3 -m venv .venv
.venv/bin/python -m pip install qdrant-memory-mcp==0.1.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:

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

OpenCode opencode.json example:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "qdrant_memory": {
      "type": "local",
      "command": ["uvx", "--from", "qdrant-memory-mcp==0.1.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 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.

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.

Metadata

Release files for qdrant-memory-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qdrant-memory-mcp 0.1.1
File Size Uploaded
qdrant_memory_mcp-0.1.1.tar.gz 32.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for qdrant-memory-mcp 0.1.1
File Interpreter ABI Platform
qdrant_memory_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 37.8 kB

Release files / qdrant_memory_mcp-0.1.1.tar.gz

Download URL qdrant_memory_mcp-0.1.1.tar.gz
Size 32.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4db7b1c28846d1d312a4e01de117ce49a4db874d7cdcd4d1b0adcf69e17b3004
BLAKE2b-256 checksum
How to use checksums
0ba821403cbab8eb7ede40144fe0f79a75d1ae7febfc5bc9b2f4ee60b3aa9862
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / qdrant_memory_mcp-0.1.1-py3-none-any.whl

Download URL qdrant_memory_mcp-0.1.1-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2af46e8908effe7626c3fb903b8208311935c07f59d22f6a740cdbcc3389ce18
BLAKE2b-256 checksum
How to use checksums
e62bc881718462c147734e6e27e7029af1a4c1863a35fa7ab1ae4766e9defec8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page