QD

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.

Quick Install
npx -y @qdrant/mcp-server-qdrant

Overview

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:

export QDRANT_URL="http://localhost:6333"
export COLLECTION_NAME="my-collection"
export EMBEDDING_MODEL="sentence-transformers/all-MiniLM-L6-v2"

uvx mcp-server-qdrant

Or run with a different transport (SSE):

QDRANT_URL="http://localhost:6333" \
COLLECTION_NAME="my-collection" \
uvx mcp-server-qdrant --transport sse

Environment variables (key ones)

NameDescriptionDefault
QDRANT_URLURL of the Qdrant server (use instead of local path)None
QDRANT_API_KEYQdrant API key (if hosted)None
COLLECTION_NAMEDefault collection to write/readNone
QDRANT_LOCAL_PATHLocal Qdrant DB path (alternative to QDRANT_URL)None
EMBEDDING_PROVIDEREmbedding backend (currently “fastembed”)fastembed
EMBEDDING_MODELEmbedding model to usesentence-transformers/all-MiniLM-L6-v2
TOOL_STORE_DESCRIPTIONCustom description for the store toolSee defaults
TOOL_FIND_DESCRIPTIONCustom description for the find toolSee defaults

Important: do not set both QDRANT_URL and QDRANT_LOCAL_PATH at the same time.

FastMCP runtime environment variables (common)

VariablePurposeDefault
FASTMCP_DEBUGEnable debug modefalse
FASTMCP_LOG_LEVELLog level (DEBUG/INFO/…)INFO
FASTMCP_HOSTHost to bind127.0.0.1
FASTMCP_PORTPort to run server on8000
FASTMCP_DEPENDENCIESDependencies 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):

{
  "tool": "qdrant-store",
  "input": {
    "information": "Meeting notes: finalize API design on Friday",
    "metadata": {"source":"meeting-2026-04-01", "tags":["api","design"]},
    "collection_name": "team-memories"
  }
}

And a search example:

{
  "tool": "qdrant-find",
  "input": {
    "query": "when is the API design meeting?",
    "collection_name": "team-memories"
  }
}

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.

✓ Solution

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-mcp

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

✓ Solution

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-mcp

The user has received a notification about a free security badge for their MCP server README but may not know how to implement it.

✓ Solution

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. [![MCPSafe Security](https://api.mcpsafe.org/api/badge/qdrant-mcp-server.svg)](https://mcpsafe.org/registry/qdrant-mcp-server)

npm install @ChromeDevTools/chrome-devtools-mcp