qdrant-mcp-server
The Qdrant MCP Server is designed to interface with the Qdrant vector database, offering tools for managing and searching vector data. Key features include automatic text-to-vector embedding and efficient text similarity searches.
Qdrant MCP Server
An MCP server for interacting with Qdrant vector database. This server provides tools for managing vectors, performing similarity searches, and automatic text-to-vector embedding using the MCP (Master Control Program) framework.
Features
- Automatic text-to-vector embedding using FastEmbed
- Store and retrieve text content with vector search
- Use default collection configuration through environment variables
- Text similarity search by content
- Efficient embedding with optimized models
Configuration
Create a .env
file based on the .env.example
template:
# Qdrant connection settings
QDRANT_HOST=localhost
QDRANT_PORT=6333
QDRANT_API_KEY=
QDRANT_VERIFY_SSL=True # Set to False if using self-signed certificates
# Default settings
DEFAULT_COLLECTION_NAME=default_collection
EMBEDDING_MODEL=BAAI/bge-small-en-v1.5
You can change the embedding model to any model supported by FastEmbed.
Usage
Running locally
- Install the package:
pip install -e .
- Run the server:
qdrant-mcp-server
Running with Docker
- Build the Docker image:
docker build -t qdrant-mcp-server .
- Run the container:
docker run -p 8000:8000 --env QDRANT_HOST=<your-qdrant-host> --env QDRANT_PORT=<your-qdrant-port> --env QDRANT_VERIFY_SSL=<True|False> qdrant-mcp-server
Testing
This package includes a test suite to validate the functionality. To run the tests:
- Install development dependencies:
pip install -e ".[dev]"
- Run the tests:
cd tests
./run_tests.py
Alternatively, you can use pytest directly:
pytest -xvs tests/
Using Self-Signed Certificates
If your Qdrant server uses a self-signed certificate, set QDRANT_VERIFY_SSL=False
in your .env
file or when running the Docker container. This disables SSL certificate verification.
Tools
The server provides the following tools:
Text Tools
store_text
: Convert text to an embedding vector and store it in the databasesearch_similar_text
: Convert query text to an embedding and find similar vectorsstore_texts
: Convert multiple texts to embeddings and store them in batch
Vector Tools
search_vectors
: Search for similar vectors in a collectionupsert_vectors
: Upload vectors to a collectionfilter_search
: Search collection with metadata filters
Point Tools
get_points
: Get points by their IDs from a collectiondelete_points
: Delete points by their IDs from a collectioncount_points
: Count the number of points in a collection
Examples
Storing text
await store_text(
text="What is the capital of France?",
metadata={"category": "geography", "type": "question"}
)
Searching for similar text
await search_similar_text(
query="What is Paris the capital of?",
limit=5
)
Storing multiple texts
await store_texts(
texts=["Paris is in France", "London is in England", "Berlin is in Germany"],
metadatas=[
{"category": "geography", "country": "France"},
{"category": "geography", "country": "England"},
{"category": "geography", "country": "Germany"}
]
)