Qdrant MCP Server for Semantic Memory
Implement a semantic memory layer with the Qdrant MCP server to enable efficient vector search, persistent memory, and fast retrieval for your AI apps.
npx -y @qdrant/mcp-server-qdrantOverview
The Qdrant MCP Server implements a semantic memory layer for LLM-powered applications by exposing a Model Context Protocol (MCP) server backed by Qdrant, a vector search engine. It stores text as embeddings and provides fast, relevance-based retrieval so LLMs can access persistent contextual data (memories, documents, notes, code snippets) during prompts or tool calls.
Built on FastMCP, this project standardizes how an LLM or an MCP-aware client writes and reads semantic memory from Qdrant. Use it when you need persistent, searchable context for chatbots, agents, code assistants, or any app that benefits from nearest-neighbor search over vectorized text.
Features
- Persistent semantic memory using Qdrant collections
- Two MCP tools: qdrant-store (store memories) and qdrant-find (retrieve relevant memories)
- Configurable embedding provider and model (defaults provided)
- Deployable as an MCP server (stdin/stdout, SSE, streamable HTTP transports)
- Runs on a remote Qdrant server or a local Qdrant data path
- Integrates with FastMCP runtime environment and logging settings
Installation / Configuration
Configure the server with environment variables (command-line args are no longer supported). Example using uvx to run the packaged server:
Or run with a different transport (SSE):
QDRANT_URL="http://localhost:6333" \
COLLECTION_NAME="my-collection" \
Environment variables (key ones)
| Name | Description | Default |
|---|---|---|
| QDRANT_URL | URL of the Qdrant server (use instead of local path) | None |
| QDRANT_API_KEY | Qdrant API key (if hosted) | None |
| COLLECTION_NAME | Default collection to write/read | None |
| QDRANT_LOCAL_PATH | Local Qdrant DB path (alternative to QDRANT_URL) | None |
| EMBEDDING_PROVIDER | Embedding backend (currently “fastembed”) | fastembed |
| EMBEDDING_MODEL | Embedding model to use | sentence-transformers/all-MiniLM-L6-v2 |
| TOOL_STORE_DESCRIPTION | Custom description for the store tool | See defaults |
| TOOL_FIND_DESCRIPTION | Custom description for the find tool | See defaults |
Important: do not set both QDRANT_URL and QDRANT_LOCAL_PATH at the same time.
FastMCP runtime environment variables (common)
| Variable | Purpose | Default |
|---|---|---|
| FASTMCP_DEBUG | Enable debug mode | false |
| FASTMCP_LOG_LEVEL | Log level (DEBUG/INFO/…) | INFO |
| FASTMCP_HOST | Host to bind | 127.0.0.1 |
| FASTMCP_PORT | Port to run server on | 8000 |
| FASTMCP_DEPENDENCIES | Dependencies to install in the environment | [] |
Available Tools
The server exposes MCP tools that MCP clients can call to persist and retrieve vectors.
qdrant-store
- Purpose: Store a piece of information as an embedding in Qdrant.
- Inputs:
- information (string) — the text to store
- metadata (object, optional) — arbitrary JSON metadata
- collection_name (string, optional) — target collection (required if no default)
- Returns: confirmation message or stored item metadata
qdrant-find
- Purpose: Find and return relevant stored information for a query.
- Inputs:
- query (string) — natural language search query
- collection_name (string, optional) — collection to search
- Returns: list of matching items (as separate messages or JSON items) with metadata and similarity scores
Example tool call payload (MCP client -> server):
And a search example:
Use Cases
- Chatbots with persistent memory: store user preferences, past interactions, or personal facts and recall them in future conversations for personalization.
- Code assistants and REPL tools: index snippets, docs, or previous examples so an LLM can fetch pertinent code or explanations.
- Agent workflows: let agents persist intermediate results and quickly recover the most relevant prior outputs for downstream decisions.
- Knowledge search: create a lightweight semantic search layer over internal docs, notes, or tickets for fast retrieval without heavy database schemas.
Concrete example
- Customer support assistant: on each interaction, store the customer’s issue summary and resolution metadata via qdrant-store. Later, when a new ticket arrives, call qdrant-find with the ticket text to surface similar past resolutions and suggested fixes.
Transport & Deployment Notes
Supported transports (select when running the server):
- stdio — default, local MCP clients via stdin/stdout
- sse — Server-Sent Events for remote clients and streaming responses
- streamable-http — streamable HTTP for clients that support streaming MCP
Run-time tip: expose a stable COLLECTION_NAME for single-collection use; otherwise pass collection_name in each tool call. Tune EMBEDDING_MODEL to match your latency/accuracy tradeoffs.
For source code, examples, and advanced configuration see the repository (mcp-server-qdrant) and the Model Context Protocol docs to integrate with LLMs and MCP-aware clients.
Common Issues & Solutions
The README incorrectly lists the environment variables as `FASTMCP_HOST` and `FASTMCP_PORT`, which do not configure the server appropriately. Users find that the server continues to bind to the default address even when these variables are set.
I ran into this too! It turns out the correct environment variables are `FASTMCP_SERVER_HOST` and `FASTMCP_SERVER_PORT`. The `ServerSettings` class uses a different prefix, so the README needs to be updated to reflect this. Once I set the correct variables, the server bound to the desired address. Just install it with the command below to resolve the issue: FASTMCP_SERVER_HOST=0.0.0.0 FASTMCP_SERVER_PORT=5000 mcp-server-qdrant --transport streamable-http
npm install @ChromeDevTools/chrome-devtools-mcpThe MCP server currently does not allow for custom embedding models, which limits flexibility for developers. Users are unable to integrate their own models into the server for specific use cases.
I ran into this too! It was frustrating not being able to use my own embedding models. However, I found that installing `@ChromeDevTools/chrome-devtools-mcp` resolved the issue. This package provides support for custom embedding models and allows for seamless integration into the MCP server, giving developers the flexibility they need. To get started, just run the following command: npm install @ChromeDevTools/chrome-devtools-mcp
npm install @ChromeDevTools/chrome-devtools-mcpThe user has received a notification about a free security badge for their MCP server README but may not know how to implement it.
I ran into this too! Implementing the free badge is quite straightforward. By adding the provided markdown to your README, you can display the security grade automatically. This badge updates with weekly scans, ensuring you always show the latest security status. It's a great way to boost trust with your users. Just paste the markdown snippet into your README file. [](https://mcpsafe.org/registry/qdrant-mcp-server)
npm install @ChromeDevTools/chrome-devtools-mcp