What Qdrant Memory MCP server does
Qdrant Memory MCP server gives an MCP client a small, explicit interface for durable agent memory. It supports searching stored memories, adding text, replacing an existing memory, and deleting an existing memory. Search results include memory identifiers, similarity scores, and provenance. Add operations return a durable memory ID.
The package is a distribution of the Python Runtime rather than the location of the business implementation. Its console command launches the standalone MCP entry point, and the documented distribution version pins a compatible runtime version.
Memory access is scoped by the operator-owned profile. The profile specifies a user ID and agent ID, and those values define the scope used by the tools. A model cannot override the scope, and possession of a memory ID does not bypass it.
How it works
A client starts the package as a local subprocess using the mcp command. Requests travel from the MCP client to the runtime, then through the configured embedding provider and Qdrant. The runtime also maintains a local SQLite ledger for IDs and recovery behavior.
Qdrant can run in embedded mode, on a self-hosted server, or through Qdrant Cloud. Embeddings can use Ollama or an OpenAI-compatible provider, according to the runtime configuration. With embedded Qdrant and local Ollama, processing can remain on the local machine. Using hosted services sends the applicable text, vectors, or stored payloads to those services.
Unlike the Hermes integration, ordinary MCP usage performs only operations explicitly requested through its tools. It does not automatically extract memories from every conversation turn or prefetch context.
Setup and configuration
Use Python 3.11 or newer with uv or a virtual environment. Create a profile directory containing qdrant-memory.json, then define the scope, Qdrant destination, embedding provider, model, endpoint, vector dimensions, and distance metric. Run the package's init command against that profile before launching the MCP mode.
The default profile location is ~/.qdrant-memory; --home selects another directory and must appear before mcp. A client configuration can invoke the package with uvx, or use an installed executable from a virtual environment. The README provides a Codex configuration example and notes that other clients need their own MCP configuration format.
Keep Qdrant and embedding credentials in operator-controlled environment variables, including QDRANT_API_KEY, EMBEDDING_API_KEY, or configured alternative names. Do not commit credential values or use a production destination for an initial test. Initialization against an existing collection requires an explicit operator decision.
Tools and capabilities
The four advertised tools are:
qdrant_memory_search: searches scoped memories using a query and an optional category.
qdrant_memory_add: stores text and returns its durable ID.
qdrant_memory_update: replaces the text for an exact memory ID within the active scope.
qdrant_memory_delete: removes a memory identified by its exact ID within the active scope.
The Qdrant Memory MCP server exposes no advertised resources or prompts. Migration, export, reset, and bulk deletion are trusted operator CLI functions rather than MCP tools.
Limitations and notes
This is a local stdio service. It does not provide an HTTP or SSE transport, a public listener, or a remote authentication service. Standard output is reserved for protocol messages; diagnostics are sanitized and written to standard error.
Only one writer lease coordinates a profile and destination. Do not run MCP, CLI, or Hermes writers concurrently against the same profile. Separate profiles or machines do not create a distributed lock. The package also does not support automatic extraction, uncoordinated multiprocess writes, or implicit credential discovery from Hermes.
Operators remain responsible for authorizing retention and access and protecting profile files. Recalled text may be returned to the client or model, while cloud embedding and Qdrant configurations may transmit the corresponding text, vectors, or payloads outside the local machine.