$git clone https://github.com/qdrant/mcp-server-qdrant> The Model Context Protocol (MCP) is an open protocol that enables > seamless integration between LLM applications and external data sources and tools. Whether you're building an > AI-powered IDE, enhancing a chat interface, or cre
| 1 | # mcp-server-qdrant: A Qdrant MCP server |
| 2 | |
| 3 | [](https://smithery.ai/protocol/mcp-server-qdrant) |
| 4 | |
| 5 | > The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) is an open protocol that enables |
| 6 | > seamless integration between LLM applications and external data sources and tools. Whether you're building an |
| 7 | > AI-powered IDE, enhancing a chat interface, or creating custom AI workflows, MCP provides a standardized way to |
| 8 | > connect LLMs with the context they need. |
| 9 | |
| 10 | This repository is an example of how to create a MCP server for [Qdrant](https://qdrant.tech/), a vector search engine. |
| 11 | |
| 12 | ## Overview |
| 13 | |
| 14 | An official Model Context Protocol server for keeping and retrieving memories in the Qdrant vector search engine. |
| 15 | It acts as a semantic memory layer on top of the Qdrant database. |
| 16 | |
| 17 | ## Components |
| 18 | |
| 19 | ### Tools |
| 20 | |
| 21 | 1. `qdrant-store` |
| 22 | - Store some information in the Qdrant database |
| 23 | - Input: |
| 24 | - `information` (string): Information to store |
| 25 | - `metadata` (JSON): Optional metadata to store |
| 26 | - `collection_name` (string): Name of the collection to store the information in. This field is required if there are no default collection name. |
| 27 | If there is a default collection name, this field is not enabled. |
| 28 | - Returns: Confirmation message |
| 29 | 2. `qdrant-find` |
| 30 | - Retrieve relevant information from the Qdrant database |
| 31 | - Input: |
| 32 | - `query` (string): Query to use for searching |
| 33 | - `collection_name` (string): Name of the collection to store the information in. This field is required if there are no default collection name. |
| 34 | If there is a default collection name, this field is not enabled. |
| 35 | - Returns: Information stored in the Qdrant database as separate messages |
| 36 | |
| 37 | ## Environment Variables |
| 38 | |
| 39 | Configuration is done via environment variables. The only command-line argument is `--transport`, used to select the [transport protocol](#transport-protocols). |
| 40 | |
| 41 | > [!NOTE] |
| 42 | > You cannot provide both `QDRANT_URL` and `QDRANT_LOCAL_PATH` at the same time. |
| 43 | |
| 44 | | Name | Description | Default Value | |
| 45 | |--------------------------|---------------------------------------------------------------------|-------------------------------------------------------------------| |
| 46 | | `QDRANT_URL` | URL of the Qdrant server | None | |
| 47 | | `QDRANT_API_KEY` | API key for the Qdrant server | None | |
| 48 | | `COLLECTION_NAME` | Name of the default collection to use. | None | |
| 49 | | `QDRANT_LOCAL_PATH` | Path to the local Qdrant database (alternative to `QDRANT_URL`) | None | |
| 50 | | `EMBEDDING_PROVIDER` | Embedding provider to use (currently only "fastembed" is supported) | `fastembed` | |
| 51 | | `EMBEDDING_MODEL` | Name of the embedding model to use | `sentence-transformers/all-MiniLM-L6-v2` | |
| 52 | | `TOOL_STORE_DESCRIPTION` | Custom description for the store tool | See default in [`settings.py`](src/mcp_server_qdrant/settings.py) | |
| 53 | | `TOOL_FIND_DESCRIPTION` | Custom description for the find tool | See default in [`settings.py`](src/mcp_server_qdrant/settings.py) | |
| 54 | | `QDRANT_SEARCH_LIMIT` | Maximum number of results to return from search | `10` | |
| 55 | | `QDRANT_READ_ONLY` | Enable read-only mode (disa |