qdrant-mcp-server
README.md
# qdrant-mcp-server
A generic [MCP](https://modelcontextprotocol.io) server for [Qdrant](https://qdrant.tech) — store, search, list, and delete over any collection.
Unlike [`qdrant/mcp-server-qdrant`](https://github.com/qdrant/mcp-server-qdrant), this server uses a **plain (unnamed) vector**, so it works out of the box with collections created the "default" way — e.g. by LangChain's or n8n's Qdrant node — instead of requiring the named-vector convention (`fast-{model}`) the official server hardcodes.
## Features
- **Multi-collection**: `QDRANT_COLLECTION` is only a default. Every tool accepts an optional `collection_name`, so one running instance can serve multiple collections.
- **Plain vectors**: compatible with collections populated by other tools/pipelines, not just this server.
- **OpenAI embeddings**, with automatic token-aware truncation of oversized input.
## Tools
| Tool | Description |
|---|---|
| `qdrant_store` | Embed and store a piece of text, with optional metadata and a stable `id` (upsert). |
| `qdrant_find` | Semantic search over stored content. |
| `qdrant_delete` | Delete a point by the `id` given to `qdrant_store`. |
| `qdrant_list_collections` | List all collections available on the Qdrant server. |
## Configuration
Set these environment variables (see [.env.example](.env.example)):
| Variable | Required | Description |
|---|---|---|
| `QDRANT_URL` | yes | Qdrant server URL. |
| `QDRANT_API_KEY` | no | Qdrant API key, if auth is enabled. |
| `QDRANT_COLLECTION` | no | Default collection name. Omit to require `collection_name` on every call. |
| `OPENAI_API_KEY` | yes | Used to generate embeddings. |
| `OPENAI_EMBED_MODEL` | no | Default `text-embedding-3-small`. |
| `OPENAI_EMBED_DIMS` | no | Default `1536` (1536 for `text-embedding-3-small`/`ada-002`, 3072 for `text-embedding-3-large`). |
## Running
### Docker
```bash
docker build -t qdrant-mcp-server .
docker run --rm -p 8000:8000 --env-file .env qdrant-mcp-server
```
### Locally
```bash
pip install -r requirements.txt
export $(cat .env | xargs) # or set the variables another way
python server.py
```
The server speaks MCP over SSE on `0.0.0.0:8000`.
## Using with an MCP client
Point your client at the SSE endpoint, e.g. for a `docker-compose` service named `mcp-qdrant`:
```json
{
"mcpServers": {
"qdrant": {
"url": "http://localhost:8000/sse"
}
}
}
```
## License
[MIT](LICENSE)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues