Qdrant MCP (Open Source)

mcp-server-qdrant is the official open source MCP server for Qdrant. It acts as a semantic memory layer on top of a Qdrant collection: your assistant stores pieces of information and retrieves them later by meaning.

You run it yourself, next to the assistant or on your own infrastructure, and point it at any Qdrant deployment: Qdrant Cloud, a local instance, or a local database file. The server creates the collection if it does not exist, and generates embeddings with FastEmbed, so you need no embedding provider key.

Unlike the Qdrant Cloud MCP server, which manages infrastructure, this server works on your data.

Tools

ToolWhat it does
qdrant-storeStores information in the collection. Takes information (a string), optional metadata (JSON), and collection_name.
qdrant-findRetrieves the most relevant stored information for a natural language query. Takes query and collection_name. Each result comes back as a separate message.

The collection_name argument is required only when you do not set a default collection with COLLECTION_NAME. When a default is set, the argument is hidden from the assistant.

Configuration

You configure the server with environment variables. The only command-line argument is --transport.

VariableDescriptionDefault
QDRANT_URLURL of the Qdrant server.None
QDRANT_API_KEYAPI key for the Qdrant server.None
QDRANT_LOCAL_PATHPath to a local Qdrant database, as an alternative to QDRANT_URL.None
COLLECTION_NAMEName of the default collection.None
EMBEDDING_PROVIDEREmbedding provider. Only fastembed is supported.fastembed
EMBEDDING_MODELName of the FastEmbed model to use.sentence-transformers/all-MiniLM-L6-v2
QDRANT_SEARCH_LIMITMaximum number of results qdrant-find returns.10
QDRANT_READ_ONLYDisables the qdrant-store tool when set to true.false
TOOL_STORE_DESCRIPTIONCustom description of the store tool.Built-in default
TOOL_FIND_DESCRIPTIONCustom description of the find tool.Built-in default

You cannot set both QDRANT_URL and QDRANT_LOCAL_PATH.

The server is built on FastMCP, so it also reads the FastMCP environment variables. The most useful are FASTMCP_SERVER_HOST (default 127.0.0.1), FASTMCP_SERVER_PORT (default 8000), and FASTMCP_LOG_LEVEL (default INFO).

The tool descriptions tell your assistant when and how to use each tool. Rewriting them turns the same server into a different tool, such as a code snippet library. See Use It for Code Search.

Install and Run

With uvx

uvx runs the server without a separate installation step.

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

With Docker

Build the image from the repository, then run it. Setting FASTMCP_SERVER_HOST to 0.0.0.0 makes the server listen on all network interfaces, which a container needs.

docker build -t mcp-server-qdrant .

docker run -p 8000:8000 \
  -e FASTMCP_SERVER_HOST="0.0.0.0" \
  -e QDRANT_URL="http://your-qdrant-server:6333" \
  -e QDRANT_API_KEY="your-api-key" \
  -e COLLECTION_NAME="your-collection" \
  mcp-server-qdrant

Transports

Pick the transport with the --transport flag.

TransportUse it for
stdio (default)Local clients that start the server as a subprocess.
sseRemote clients, over Server-Sent Events.
streamable-httpRemote clients, over the newer streamable HTTP transport.
QDRANT_URL="http://localhost:6333" \
COLLECTION_NAME="my-collection" \
uvx mcp-server-qdrant --transport streamable-http

With a remote transport, the server listens on port 8000 unless you set FASTMCP_SERVER_PORT.

Connect Your Assistant

Claude Code

claude mcp add qdrant \
  -e QDRANT_URL="http://localhost:6333" \
  -e COLLECTION_NAME="my-collection" \
  -- uvx mcp-server-qdrant

Run claude mcp list to confirm the server was added.

Claude Desktop

Add this entry to the mcpServers section of claude_desktop_config.json.

{
  "qdrant": {
    "command": "uvx",
    "args": ["mcp-server-qdrant"],
    "env": {
      "QDRANT_URL": "https://xyz-example.eu-central.aws.cloud.qdrant.io:6333",
      "QDRANT_API_KEY": "your_api_key",
      "COLLECTION_NAME": "your-collection-name",
      "EMBEDDING_MODEL": "sentence-transformers/all-MiniLM-L6-v2"
    }
  }
}

To use a local database file instead of a server, replace QDRANT_URL and QDRANT_API_KEY with QDRANT_LOCAL_PATH.

Codex

codex mcp add qdrant \
  --env QDRANT_URL="http://localhost:6333" \
  --env COLLECTION_NAME="my-collection" \
  -- uvx mcp-server-qdrant

GitHub Copilot CLI

Add this entry to ~/.copilot/mcp-config.json.

{
  "mcpServers": {
    "qdrant": {
      "type": "local",
      "command": "uvx",
      "args": ["mcp-server-qdrant"],
      "env": {
        "QDRANT_URL": "http://localhost:6333",
        "COLLECTION_NAME": "my-collection"
      },
      "tools": ["*"]
    }
  }
}

Other Clients

Any MCP client that can start a local server can run mcp-server-qdrant. Add this entry to its configuration, and check your client’s documentation for the exact keys. For clients that connect to a remote server, start the server with the sse or streamable-http transport and point the client at its URL, which is http://localhost:8000/sse for sse on a local machine.

{
  "mcpServers": {
    "qdrant": {
      "command": "uvx",
      "args": ["mcp-server-qdrant"],
      "env": {
        "QDRANT_URL": "http://localhost:6333",
        "COLLECTION_NAME": "my-collection"
      }
    }
  }
}

Setting the tool descriptions turns the server into a store of code snippets that your assistant fills as it works and searches when it needs an example. The natural language description goes in information, and the code goes in the code property of metadata.

claude mcp add code-search \
  -e QDRANT_URL="http://localhost:6333" \
  -e COLLECTION_NAME="code-repository" \
  -e TOOL_STORE_DESCRIPTION="Store code snippets with descriptions. The 'information' parameter should contain a natural language description of what the code does, while the actual code should be included in the 'metadata' parameter as a 'code' property." \
  -e TOOL_FIND_DESCRIPTION="Search for relevant code snippets using natural language. The 'query' parameter should describe the functionality you're looking for." \
  -- uvx mcp-server-qdrant

Adapt the descriptions to your team’s workflow and to the kinds of snippets you want to keep.

Good to Know

  • Embedding models: Only FastEmbed models are supported. Changing EMBEDDING_MODEL on an existing collection does not re-embed what is already stored, so use a new collection when you switch models.
  • Read-only mode: Set QDRANT_READ_ONLY=true to let your assistant search a collection but never change it.
  • Securing a remote server: The server has no authentication, so you need third-party security if you expose it over SSE or streamable HTTP, such as a reverse proxy with authentication or a private network.
  • Source and issues: The code is Apache 2.0 licensed. Report bugs and suggestions in the GitHub repository.
Was this page useful?

Thank you for your feedback! 🙏

We are sorry to hear that. 😔 You can edit this page on GitHub, or create a GitHub issue.