MCP server for vector search with Qdrant and Ollama embeddings
Project description
Qdrant MCP Server
Model Context Protocol server for vector search using Qdrant and Ollama embeddings.
Features
- Vector Search: Search for similar documents using text queries (auto-embedded via Ollama)
- Collection Management: List and manage Qdrant collections
- Flexible Output: Markdown or JSON response formats
- Read-Only: Safe for querying without modifying data
Prerequisites
Qdrant Server
docker run -p 6333:6333 qdrant/qdrant:latest
Or install locally: Qdrant Quick Start
Ollama Server
# Install: https://ollama.ai
ollama pull nomic-embed-text
ollama serve
Other embedding models available:
nomic-embed-text(768 dims) - recommended, lightweightmxbai-embed-large(1024 dims) - higher qualityall-minilm(384 dims) - ultra-lightweight
Installation
# Clone/navigate to project directory
cd w3-mcp-server-qdrant
# Install dependencies
pip install -e .
# Or with uv:
uv sync
Configuration
Create a .env file or export environment variables:
# Qdrant
export QDRANT_URL=http://localhost:6333
export QDRANT_API_KEY= # Optional if using API key auth
# Ollama
export OLLAMA_BASE_URL=http://localhost:11434
export OLLAMA_MODEL=nomic-embed-text
Usage
Run with stdio transport
python server.py
Test with MCP Inspector
uv run mcp dev server.py
Then open http://localhost:5173 in your browser.
Configure in Claude Desktop
Add to ~/.claude/mcp_servers.json:
{
"mcpServers": {
"qdrant": {
"command": "python",
"args": ["/path/to/server.py"],
"env": {
"QDRANT_URL": "http://localhost:6333",
"OLLAMA_BASE_URL": "http://localhost:11434",
"OLLAMA_MODEL": "nomic-embed-text"
}
}
}
}
Tools
qdrant_search
Search for similar documents in a collection.
Parameters:
collection_name(string): Name of the collection to searchquery_text(string): Text to search for (will be embedded)limit(integer, 1-100): Max results (default: 5)score_threshold(float, 0.0-1.0): Min similarity threshold (default: 0.0)response_format(string): "markdown" or "json" (default: markdown)
Example:
Search documents about "machine learning" in the "papers" collection
with a similarity threshold of 0.7, return top 10 results as JSON
qdrant_list_collections
List all collections in Qdrant with metadata.
Parameters:
response_format(string): "markdown" or "json" (default: markdown)
Examples
Search documents
# Via Claude/MCP interface
qdrant_search(
collection_name="tech_docs",
query_text="How do vector databases work?",
limit=5,
score_threshold=0.6,
response_format="markdown"
)
List collections
# Via Claude/MCP interface
qdrant_list_collections(response_format="json")
Architecture
Claude/LLM
↓
MCP Server (server.py)
├── Ollama: text → embedding
└── Qdrant: search/store vectors
Data Flow
Search:
- User provides text query
- Ollama embeds the query → vector
- Qdrant searches for similar vectors
- Results returned with scores and metadata
Error Handling
- Collection not found: Ensure collection exists in Qdrant
- Connection error: Verify Qdrant/Ollama servers are running
- Embedding failed: Check Ollama model is loaded (
ollama pull nomic-embed-text)
Development
Run tests
pytest tests/
Code formatting
black server.py
ruff check server.py
Performance Tips
- Score threshold: Use
score_thresholdto filter low-relevance results and reduce noise - Result limit: Adjust
limitparameter to control number of results (1-100) - Embedding model: Choose based on quality vs. speed tradeoff:
nomic-embed-text: balanced (recommended)all-minilm: fast, lightweightmxbai-embed-large: higher quality but slower
Troubleshooting
Issue: "Cannot connect to Qdrant"
- Check:
curl http://localhost:6333/health - Start Qdrant:
docker run -p 6333:6333 qdrant/qdrant:latest
Issue: "Failed to embed text"
- Check:
curl http://localhost:11434/api/tags - Pull model:
ollama pull nomic-embed-text - Start Ollama:
ollama serve
Issue: "Collection not found"
- Create collection: Use Qdrant console or add data through external tools
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file w3_mcp_server_qdrant-0.1.0.tar.gz.
File metadata
- Download URL: w3_mcp_server_qdrant-0.1.0.tar.gz
- Upload date:
- Size: 7.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d236aea2f5b5d9754ff67d204a200f4ed251ec52fafe1e4471a4ea450729399
|
|
| MD5 |
740c34465667cb495a9acae6b4545e94
|
|
| BLAKE2b-256 |
bd1630c876c1d8d075ba67d2ad73ef2c31a47d61ec4fc701cfcdd3e7a7575d00
|
File details
Details for the file w3_mcp_server_qdrant-0.1.0-py3-none-any.whl.
File metadata
- Download URL: w3_mcp_server_qdrant-0.1.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
950ead96f63a3a2c4d2f04604329ff71b5ab1c8ce45df1b4acf0bf2bea00c997
|
|
| MD5 |
e66c179d30ceff66e6d979ecc00b99f2
|
|
| BLAKE2b-256 |
d347a9b2026c385ce7c60f77eae37624062b6c9ab185822605546191d0d03a23
|