Qdrant MCP Server

Qdrant MCP Server

A simple MCP server to access Qdrant

davidwynter

Developer Tools
Visit Server

README

A FastAPI client and a MCPServer client for Qdrant access as a service

The file main.py is the entry point and a command line argument selects which server you want to run.

main.py

import argparse
import uvicorn
from fastapi_server import app as fastapi_app
from fastmcp_server import app as fastmcp_app
from config import settings

def run_fastapi():
    """Run the FastAPI server"""
    print(f"Starting FastAPI server on port {settings.port}")
    uvicorn.run(
        fastapi_app,
        host="0.0.0.0",
        port=settings.port,
        log_level="info"
    )

def run_fastmcp():
    """Run the FastMCP server"""
    print(f"Starting FastMCP server on port {settings.mcp_port}")
    fastmcp_app.run(port=settings.mcp_port)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Run Qdrant MCP Server")
    parser.add_argument(
        "--server-type",
        choices=["fastapi", "fastmcp"],
        default="fastmcp",
        help="Type of server to run (default: fastmcp)"
    )
    args = parser.parse_args()

    if args.server_type == "fastapi":
        run_fastapi()
    else:
        run_fastmcp()

Qdrant MCP Server

A dual-protocol server for Qdrant knowledge graph operations, supporting both FastAPI and FastMCP protocols.

Project Structure

src/qdrant_mcpserver/
├── __init__.py
├── config.py          # Configuration settings
├── qdrant_client.py   # Qdrant operations
├── fastapi_server.py  # FastAPI implementation
├── fastmcp_server.py  # FastMCP implementation
└── main.py            # CLI entry point

File Descriptions

config.py

  • Loads environment variables
  • Contains settings for:
    • Qdrant connection (URL, API key)
    • OpenAI API key
    • Collection names
    • Server ports
  • Uses pydantic for validation

qdrant_client.py

  • Implements core Qdrant operations:
    • Collection management
    • Node upsert/delete
    • Vector search
  • Handles embedding generation via OpenAI
  • Provides service layer for both server types

fastapi_server.py

  • FastAPI implementation with:
    • RESTful endpoints
    • CORS middleware
    • OpenAPI documentation
  • Endpoints:
    • POST /nodes/upsert
    • POST /nodes/search
    • DELETE /nodes
    • GET /health

fastmcp_server.py

  • FastMCP implementation with:
    • MCP protocol compliance
    • Authentication support
    • Standardized response formats
  • Same endpoints as FastAPI but with MCP envelope

main.py

  • CLI entry point with:
    • Server type selection (--server-type)
    • Unified logging
    • Port configuration
  • Runs either FastAPI or FastMCP server

Installation

  1. Install Poetry (if not installed):
curl -sSL https://install.python-poetry.org | python3 -
  1. Clone repository:
git clone https://github.com/your-repo/qdrant-mcpserver.git
cd qdrant-mcpserver
  1. Install dependencies:
poetry install
  1. Configure environment:
cp .env.example .env
# Edit .env with your actual values

Usage

Running the Server

# Run FastMCP server (default)
poetry run python -m qdrant_mcpserver.main

# Run FastAPI server
poetry run python -m qdrant_mcpserver.main --server-type fastapi

Environment Variables

Variable Required Description
QDRANT_URL Yes Qdrant server URL
QDRANT_API_KEY No Qdrant API key
OPENAI_API_KEY Yes OpenAI API key
COLLECTION_NAME No Default: "knowledge_graph"
PORT No FastAPI port (default: 8000)
MCP_PORT No FastMCP port (default: 8080)
MCP_SECRET No Authentication secret

API Endpoints

Both servers provide the same endpoints:

  • POST /nodes/upsert - Upsert knowledge graph nodes
  • POST /nodes/search - Semantic search across nodes
  • DELETE /nodes - Delete nodes by IDs
  • GET /health - Health check

Development

Code Formatting

These commands ensure consistent code style:

# Formats code according to Black's style guide (PEP 8 compliant)
poetry run black .

Organizes imports properly (groups standard lib, third-party, local)

poetry run isort .Format code:

poetry run black .
poetry run isort .

Testing

Using pytest for comprehensive test coverage. Test files should mirror the main code structure:

Setup tests

poetry install --with test
poetry run pytest --cov --cov-report=html
# Run all tests
poetry run pytest -v

# Run with coverage report
poetry run pytest --cov=qdrant_mcpserver --cov-report=term-missing
Setup tests (one time):

Type checking:

poetry run mypy .

Deployment

Build production package:

poetry build

Install system-wide:

pip install dist/*.whl

Run as service:

python -m qdrant_mcpserver.main --server-type fastmcp

Key Features:

  1. Flexible Server Selection:

    • CLI argument chooses between FastAPI and FastMCP
    • Shared configuration and Qdrant client
    • Consistent endpoints across both
  2. Comprehensive Documentation:

    • Clear file structure explanation
    • Installation and usage instructions
    • Environment variable reference
    • Development workflow
  3. Production-Ready:

    • Poetry for dependency management
    • Configuration via environment variables
    • Build and deployment instructions
  4. Maintainable Structure:

    • Separation of concerns
    • Shared core functionality
    • Clear development practices

The implementation allows you to switch between server protocols while maintaining the same underlying Qdrant operations.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
MCP Package Docs Server

MCP Package Docs Server

Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.

Featured
Local
TypeScript
Claude Code MCP

Claude Code MCP

An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.

Featured
Local
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.

Featured
Local
JavaScript
Linear MCP Server

Linear MCP Server

Enables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.

Featured
JavaScript
mermaid-mcp-server

mermaid-mcp-server

A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.

Featured
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP server to provide Jira Tickets information to AI coding agents like Cursor

Featured
TypeScript
Linear MCP Server

Linear MCP Server

A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.

Featured
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

This server facilitates structured problem-solving by breaking down complex issues into sequential steps, supporting revisions, and enabling multiple solution paths through full MCP integration.

Featured
Python