Back to Browse

Qdrant Memory MCP Server

by Cnkang
Developer ToolsLow Risk10.0MCP RegistryLocal
Free

Server data from the Official MCP Registry

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

About

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

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (2 strong, 0 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.

7 files analyzed · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

file_system

Check that this permission is expected for this type of plugin.

env_vars

Check that this permission is expected for this type of plugin.

Shell Command Execution

Runs commands on your machine. Be cautious — only use if you trust this plugin.

HTTP Network Access

Connects to external APIs or services over the internet.

What You'll Need

Set these up before or after installing:

Optional remote Qdrant endpoint when configured for server/cloud mode.Optional

Environment variable: QDRANT_URL

Optional Qdrant credential for configured remote storage.Required

Environment variable: QDRANT_API_KEY

Optional credential for the configured embedding provider.Required

Environment variable: EMBEDDING_API_KEY

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-cnkang-qdrant-memory": {
      "env": {
        "QDRANT_URL": "your-qdrant-url-here",
        "QDRANT_API_KEY": "your-qdrant-api-key-here",
        "EMBEDDING_API_KEY": "your-embedding-api-key-here"
      },
      "args": [
        "qdrant-memory-mcp"
      ],
      "command": "uvx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

Qdrant Memory MCP

WorkBuddy connector packaging reuses this stdio MCP and the canonical Skill for preconfigured local environments.

简体中文

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

See 0.1.3 release notes for WorkBuddy assets, SDK compatibility and upgrade guidance.

Before using an exact-version installation command, confirm that version on the PyPI release page.

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

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

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.3 qdrant-memory-mcp --home /path/to/profile init
uvx --from qdrant-memory-mcp==0.1.3 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.3 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.3
.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.3", "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.3", "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

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.

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.

WorkBuddy and DeepSeek Harness

Use the WorkBuddy connector or DSH installation guide for explicit durable memory. Both reuse the Python Runtime, four MCP tools and canonical Skill. An optional managed CPU launcher source candidate prepares private Python/model dependencies with Node.js. Production one-click marketplace installation is still gated. Existing Hermes profiles and defaults are unchanged. See architecture and version matrix and validation limits.

Reviews

No reviews yet

Be the first to review this server!