Skip to main content

Qdrant MCP server with configurable embedding providers

Project description

Qdrant MCP Server

A Model Context Protocol (MCP) server that provides semantic memory capabilities using Qdrant vector database with configurable embedding providers.

Features

  • Multiple Embedding Providers:
    • OpenAI (text-embedding-3-small, text-embedding-3-large, text-embedding-ada-002)
    • Sentence Transformers (all-MiniLM-L6-v2, all-mpnet-base-v2, and more)
  • Semantic Search: Store and retrieve information using vector similarity
  • Flexible Configuration: Environment variables for all settings
  • MCP Tools: Store, find, delete, and list operations
  • Metadata Support: Attach custom metadata to stored content

Installation

Via uvx (Recommended for MCP)

The server is designed to be lightweight by default. When using OpenAI embeddings:

# For OpenAI embeddings (lightweight, no ML dependencies)
uvx qdrant-mcp

For local embeddings with Sentence Transformers:

# For local embeddings (includes torch and other ML libraries)
uvx --with sentence-transformers qdrant-mcp

Via pip (Development)

# Clone the repository
git clone https://github.com/andrewlwn77/qdrant-mcp.git
cd qdrant-mcp

# Basic install (OpenAI embeddings only)
pip install -e .

# With local embeddings support
pip install -e . sentence-transformers

Configuration

The server can be configured using environment variables:

Required Environment Variables

  • EMBEDDING_PROVIDER: Choose between openai or sentence-transformers
  • EMBEDDING_MODEL: Model name for the chosen provider
  • OPENAI_API_KEY: Required when using OpenAI embeddings

Optional Environment Variables

  • QDRANT_URL: Qdrant server URL (default: http://localhost:6333)
  • QDRANT_API_KEY: Qdrant API key (optional)
  • COLLECTION_NAME: Qdrant collection name (default: mcp_memory)
  • DEVICE: Device for sentence transformers (default: auto-detect)
  • DEFAULT_LIMIT: Default search results limit (default: 10)
  • SCORE_THRESHOLD: Minimum similarity score (default: 0.0)

Example Configuration

# OpenAI embeddings
export EMBEDDING_PROVIDER=openai
export EMBEDDING_MODEL=text-embedding-3-small
export OPENAI_API_KEY=your-api-key

# Sentence Transformers (local)
export EMBEDDING_PROVIDER=sentence-transformers
export EMBEDDING_MODEL=all-MiniLM-L6-v2

Supported Embedding Models

OpenAI Models

  • text-embedding-3-small (1536 dimensions) - Default
  • text-embedding-3-large (3072 dimensions)
  • text-embedding-ada-002 (1536 dimensions) - Legacy

Sentence Transformers Models

  • all-MiniLM-L6-v2 (384 dimensions) - Fast and efficient
  • all-mpnet-base-v2 (768 dimensions) - Higher quality
  • Any other Sentence Transformers model from Hugging Face

Usage

Starting the Server

# Development mode
python -m qdrant_mcp.server

# With MCP CLI
mcp dev src/qdrant_mcp/server.py

MCP Tools

qdrant-store

Store content with semantic embeddings:

{
  "content": "The capital of France is Paris",
  "metadata": "{\"category\": \"geography\", \"type\": \"fact\"}",
  "id": "optional-custom-id"
}

qdrant-find

Search for relevant information:

{
  "query": "What is the capital of France?",
  "limit": 5,
  "filter": "{\"category\": \"geography\"}",
  "score_threshold": 0.7
}

qdrant-delete

Delete stored items:

{
  "ids": "id1,id2,id3"
}

qdrant-list-collections

List all collections in Qdrant:

{}

qdrant-collection-info

Get information about the current collection:

{}

Integration with Claude Desktop

Add to your Claude Desktop configuration:

For OpenAI Embeddings (Lightweight)

{
  "mcpServers": {
    "qdrant-memory": {
      "command": "uvx",
      "args": ["qdrant-mcp"],
      "env": {
        "EMBEDDING_PROVIDER": "openai",
        "EMBEDDING_MODEL": "text-embedding-3-small",
        "OPENAI_API_KEY": "your-api-key",
        "QDRANT_URL": "https://your-instance.qdrant.io",
        "QDRANT_API_KEY": "your-qdrant-api-key"
      }
    }
  }
}

For Local Embeddings (Sentence Transformers)

{
  "mcpServers": {
    "qdrant-memory": {
      "command": "uvx",
      "args": ["--with", "sentence-transformers", "qdrant-mcp"],
      "env": {
        "EMBEDDING_PROVIDER": "sentence-transformers",
        "EMBEDDING_MODEL": "all-MiniLM-L6-v2",
        "QDRANT_URL": "https://your-instance.qdrant.io",
        "QDRANT_API_KEY": "your-qdrant-api-key"
      }
    }
  }
}

Development

Running Tests

# Install dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Type checking
mypy src/

# Linting
ruff check src/

Project Structure

qdrant-mcp/
├── src/
│   └── qdrant_mcp/
│       ├── __init__.py
│       ├── server.py           # MCP server implementation
│       ├── settings.py         # Configuration management
│       ├── qdrant_client.py    # Qdrant operations
│       └── embeddings/
│           ├── base.py         # Abstract base class
│           ├── factory.py      # Provider factory
│           ├── openai.py       # OpenAI implementation
│           └── sentence_transformers.py  # ST implementation
└── tests/
    └── test_server.py

Docker Support

FROM python:3.10-slim

WORKDIR /app
COPY . .
RUN pip install -e .

CMD ["python", "-m", "qdrant_mcp.server"]

License

Apache License 2.0

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

qdrant_mcp-0.1.1.tar.gz (15.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qdrant_mcp-0.1.1-py3-none-any.whl (17.1 kB view details)

Uploaded Python 3

File details

Details for the file qdrant_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: qdrant_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 15.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for qdrant_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 aff31f2039ea353ba465bf9e6bcae3feee216f755d4a24c5d1d04ec2445abaa6
MD5 8c1c61d9eee2afc8f47b98790e377496
BLAKE2b-256 f4c020849a698fb28c966b9ebe515a529ed2902a480c3063dcec83df6a8c092a

See more details on using hashes here.

File details

Details for the file qdrant_mcp-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: qdrant_mcp-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 17.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for qdrant_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b79d9367aa5158ef64b5cea039995f8730ef092943e24714f5b7df77dfd1a97e
MD5 2ab8b166265164445abfd09da644cfe2
BLAKE2b-256 48d0d9b0ff29b21d73b8b66579458c4a7b0e3588415038cc8e093984d474617e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page