A Model Context Protocol (MCP) server that provides RAG capabilities to Cursor using Qdrant.
Project description
QDrant Loader MCP Server
A Model Context Protocol (MCP) server that brings advanced RAG search to AI development tools. Part of the QDrant Loader monorepo ecosystem.
🎯 What It Does
- Intelligent search via semantic, hierarchy-aware, and attachment-focused tools
- Seamless integration with Cursor, Windsurf, Claude Desktop, and any MCP-compatible tool
- Context understanding — document hierarchies, file relationships, and rich metadata
- Streaming responses for fast, real-time search results
🔌 Supported AI Tools
| Tool | Status | Integration Features |
|---|---|---|
| Cursor | ✅ Full Support | Context-aware code assistance, documentation lookup, intelligent suggestions |
| Windsurf | ✅ Compatible | MCP protocol integration, semantic search capabilities |
| Claude Desktop | ✅ Compatible | Direct MCP integration, conversational search interface |
| Other MCP Tools | ✅ Compatible | Any tool supporting MCP 2024-11-05 specification |
For per-tool JSON configuration, see MCP setup and integration.
🔍 Search Tools
Core search tools
| Tool | Purpose |
|---|---|
search |
General semantic search across all content |
hierarchy_search |
Confluence-aware search with parent/child page relationships |
attachment_search |
File-focused search with parent document context |
Cross-document intelligence
analyze_relationships, find_similar_documents, detect_document_conflicts, find_complementary_content, cluster_documents, expand_document, expand_cluster, expand_chunk_context
For full parameter references and usage examples, see MCP search capabilities.
📦 Installation
pip install qdrant-loader-mcp-server
For the full ingestion + MCP pipeline:
pip install qdrant-loader qdrant-loader-mcp-server
🚀 Quick Start
1. Set environment variables
export QDRANT_URL="http://localhost:6333"
export QDRANT_API_KEY="your_api_key" # Required for QDrant Cloud
export LLM_API_KEY="your_openai_key"
export MCP_DISABLE_CONSOLE_LOGGING="true" # Required for Cursor
2. Start the server
mcp-qdrant-loader
# With debug logging
mcp-qdrant-loader --log-level DEBUG
# Help
mcp-qdrant-loader --help
3. Test the connection
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"query":"test","limit":1}}}' | mcp-qdrant-loader
🔧 Configuration
Environment variables
| Variable | Description | Default | Required |
|---|---|---|---|
QDRANT_URL |
QDrant instance URL | http://localhost:6333 |
Yes |
QDRANT_API_KEY |
QDrant API key | None | Cloud only |
QDRANT_COLLECTION_NAME |
Collection name | documents |
No |
LLM_API_KEY |
LLM API key for embeddings | None | Yes |
MCP_LOG_LEVEL |
Logging level | INFO |
No |
MCP_LOG_FILE |
Log file path | None | No |
MCP_DISABLE_CONSOLE_LOGGING |
Disable console output | false |
Yes for Cursor |
SEARCH_MAX_CONCURRENT |
Max concurrent Qdrant queries per worker | 4 |
No |
For Cursor: Always set
MCP_DISABLE_CONSOLE_LOGGING=trueto prevent JSON-RPC interference. UseMCP_LOG_FILEto capture logs instead.
HTTP transport and workers
For production deployments with multiple worker processes:
# HTTP transport — eliminates GIL contention for CPU-bound work
mcp-qdrant-loader --transport http --port 8080 --workers 4
Each worker has its own event loop and Qdrant connection pool. Total concurrent Qdrant load = workers × SEARCH_MAX_CONCURRENT.
| Workers | SEARCH_MAX_CONCURRENT |
Max concurrent Qdrant queries |
|---|---|---|
| 1 | 4 (default) | 4 |
| 4 | 4 (default) | 16 |
| 4 | 2 | 8 |
If you see 408 Request Timeout from Qdrant, lower SEARCH_MAX_CONCURRENT:
export SEARCH_MAX_CONCURRENT=2
mcp-qdrant-loader --transport http --workers 4
🎯 Usage Examples
Ask your AI assistant in natural language:
- "Find documentation about authentication in our API"
- "Show me examples of error handling patterns in our codebase"
- "Find all PDF attachments related to database schema"
- "Show me the hierarchy of pages under the Architecture section"
🏗️ Architecture
MCP Protocol Implementation
- Full MCP 2024-11-05 compliance with proper JSON-RPC communication
- Tool registration for
search,hierarchy_search, andattachment_search - Streaming responses for large result sets
- Error handling with proper MCP error codes
Search Engine Components
- Embedding Service — Generates query embeddings using the configured LLM provider
- Vector Search — Performs semantic similarity search in QDrant
- Metadata Processor — Enriches results with hierarchy and attachment information
- Result Formatter — Creates rich, contextual response formatting
- Caching Layer — Optimizes performance for repeated queries
Data Flow
AI Tool → MCP Server → QDrant Search → Result Processing → Formatted Response
↓ ↓ ↓ ↓ ↓
Cursor JSON-RPC Vector Query Metadata Rich Context
Windsurf Protocol Embedding Enrichment Visual Indicators
Claude Tool Call Similarity Hierarchy Relationship Info
Other Streaming Ranking Attachments Source Attribution
For system-level architecture, see Architecture guide.
📚 Canonical Documentation
- Monorepo overview - Repository layout, package responsibilities, and navigation entry points.
- MCP server guide - End-to-end overview of MCP usage with QDrant Loader.
- MCP setup and integration - Tool-specific setup steps and integration configuration.
- MCP search capabilities - Available search tools, parameters, and usage patterns.
- Environment variables reference - Required and optional runtime variables for server behavior.
🤝 Contributing
See CONTRIBUTING - Contribution guidelines, development standards, and pull request process.
Project details
Release history Release notifications | RSS feed
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 qdrant_loader_mcp_server-1.0.0.tar.gz.
File metadata
- Download URL: qdrant_loader_mcp_server-1.0.0.tar.gz
- Upload date:
- Size: 234.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8976b50b4e8a2f2212496bbf8097d3ebceb82d780b0b5e71d2029703852c6c6
|
|
| MD5 |
2ea8a78fae3295cdd408f359d41bb796
|
|
| BLAKE2b-256 |
9f01e0de578a9fc3ab23d33ecb332db8d50805dea1cdc01cf47f31a68602338a
|
Provenance
The following attestation bundles were made for qdrant_loader_mcp_server-1.0.0.tar.gz:
Publisher:
publish.yml on martin-papy/qdrant-loader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qdrant_loader_mcp_server-1.0.0.tar.gz -
Subject digest:
f8976b50b4e8a2f2212496bbf8097d3ebceb82d780b0b5e71d2029703852c6c6 - Sigstore transparency entry: 1292262452
- Sigstore integration time:
-
Permalink:
martin-papy/qdrant-loader@b22ed1b7d8f7ed34b7d18b401137a5d6279107dc -
Branch / Tag:
refs/tags/qdrant-loader-mcp-server-v1.0.0 - Owner: https://github.com/martin-papy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b22ed1b7d8f7ed34b7d18b401137a5d6279107dc -
Trigger Event:
release
-
Statement type:
File details
Details for the file qdrant_loader_mcp_server-1.0.0-py3-none-any.whl.
File metadata
- Download URL: qdrant_loader_mcp_server-1.0.0-py3-none-any.whl
- Upload date:
- Size: 303.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd5830c2fa6c53f85bacfa4e2d0d03bb2986cb5e745118b202c635ffb4a86863
|
|
| MD5 |
2f9372f4c6286a04d095c633702ca301
|
|
| BLAKE2b-256 |
f2ec97a24995a4b2d92e523d60dcf016ade3480c995de0a2980c13e20f0a3e55
|
Provenance
The following attestation bundles were made for qdrant_loader_mcp_server-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on martin-papy/qdrant-loader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qdrant_loader_mcp_server-1.0.0-py3-none-any.whl -
Subject digest:
cd5830c2fa6c53f85bacfa4e2d0d03bb2986cb5e745118b202c635ffb4a86863 - Sigstore transparency entry: 1292262518
- Sigstore integration time:
-
Permalink:
martin-papy/qdrant-loader@b22ed1b7d8f7ed34b7d18b401137a5d6279107dc -
Branch / Tag:
refs/tags/qdrant-loader-mcp-server-v1.0.0 - Owner: https://github.com/martin-papy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b22ed1b7d8f7ed34b7d18b401137a5d6279107dc -
Trigger Event:
release
-
Statement type: