MCP Memory Server with Qdrant Persistence

33
4
  • Linux
  • Apple

Integrations

  • Supports reverse proxy configurations with Apache for routing traffic to the MCP memory server in secure deployment scenarios.

  • Provides containerized deployment of the MCP memory server, enabling easy setup and management with Docker images and containers.

  • Supports HTTPS connections and reverse proxy configurations with Nginx for secure and flexible deployment architectures.

MCP Memory Server with Qdrant Persistence

This MCP server provides a knowledge graph implementation with semantic search capabilities powered by Qdrant vector database.

Features

  • Graph-based knowledge representation with entities and relations
  • File-based persistence (memory.json)
  • Semantic search using Qdrant vector database
  • OpenAI embeddings for semantic similarity
  • HTTPS support with reverse proxy compatibility
  • Docker support for easy deployment

Environment Variables

The following environment variables are required:

# OpenAI API key for generating embeddings OPENAI_API_KEY=your-openai-api-key # Qdrant server URL (supports both HTTP and HTTPS) QDRANT_URL=https://your-qdrant-server # Qdrant API key (if authentication is enabled) QDRANT_API_KEY=your-qdrant-api-key # Name of the Qdrant collection to use QDRANT_COLLECTION_NAME=your-collection-name

Setup

Local Setup

  1. Install dependencies:
npm install
  1. Build the server:
npm run build

Docker Setup

  1. Build the Docker image:
docker build -t mcp-qdrant-memory .
  1. Run the Docker container with required environment variables:
docker run -d \ -e OPENAI_API_KEY=your-openai-api-key \ -e QDRANT_URL=http://your-qdrant-server:6333 \ -e QDRANT_COLLECTION_NAME=your-collection-name \ -e QDRANT_API_KEY=your-qdrant-api-key \ --name mcp-qdrant-memory \ mcp-qdrant-memory

Add to MCP settings:

{ "mcpServers": { "memory": { "command": "/bin/zsh", "args": ["-c", "cd /path/to/server && node dist/index.js"], "env": { "OPENAI_API_KEY": "your-openai-api-key", "QDRANT_API_KEY": "your-qdrant-api-key", "QDRANT_URL": "http://your-qdrant-server:6333", "QDRANT_COLLECTION_NAME": "your-collection-name" }, "alwaysAllow": [ "create_entities", "create_relations", "add_observations", "delete_entities", "delete_observations", "delete_relations", "read_graph", "search_similar" ] } } }

Tools

Entity Management

  • create_entities: Create multiple new entities
  • create_relations: Create relations between entities
  • add_observations: Add observations to entities
  • delete_entities: Delete entities and their relations
  • delete_observations: Delete specific observations
  • delete_relations: Delete specific relations
  • read_graph: Get the full knowledge graph
  • search_similar: Search for semantically similar entities and relations
    interface SearchParams { query: string; // Search query text limit?: number; // Max results (default: 10) }

Implementation Details

The server maintains two forms of persistence:

  1. File-based (memory.json):
    • Complete knowledge graph structure
    • Fast access to full graph
    • Used for graph operations
  2. Qdrant Vector DB:
    • Semantic embeddings of entities and relations
    • Enables similarity search
    • Automatically synchronized with file storage

Synchronization

When entities or relations are modified:

  1. Changes are written to memory.json
  2. Embeddings are generated using OpenAI
  3. Vectors are stored in Qdrant
  4. Both storage systems remain consistent

Search Process

When searching:

  1. Query text is converted to embedding
  2. Qdrant performs similarity search
  3. Results include both entities and relations
  4. Results are ranked by semantic similarity

Example Usage

// Create entities await client.callTool("create_entities", { entities: [{ name: "Project", entityType: "Task", observations: ["A new development project"] }] }); // Search similar concepts const results = await client.callTool("search_similar", { query: "development tasks", limit: 5 });

HTTPS and Reverse Proxy Configuration

The server supports connecting to Qdrant through HTTPS and reverse proxies. This is particularly useful when:

  • Running Qdrant behind a reverse proxy like Nginx or Apache
  • Using self-signed certificates
  • Requiring custom SSL/TLS configurations

Setting up with a Reverse Proxy

  1. Configure your reverse proxy (example using Nginx):
server { listen 443 ssl; server_name qdrant.yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:6333; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
  1. Update your environment variables:
QDRANT_URL=https://qdrant.yourdomain.com

Security Considerations

The server implements robust HTTPS handling with:

  • Custom SSL/TLS configuration
  • Proper certificate verification options
  • Connection pooling and keepalive
  • Automatic retry with exponential backoff
  • Configurable timeouts

Troubleshooting HTTPS Connections

If you experience connection issues:

  1. Verify your certificates:
openssl s_client -connect qdrant.yourdomain.com:443
  1. Test direct connectivity:
curl -v https://qdrant.yourdomain.com/collections
  1. Check for any proxy settings:
env | grep -i proxy

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Submit a pull request

License

MIT

-
security - not tested
F
license - not found
-
quality - not tested

Facilitates knowledge graph representation with semantic search using Qdrant, supporting OpenAI embeddings for semantic similarity and robust HTTPS integration with file-based graph persistence.

  1. Features
    1. Environment Variables
      1. Setup
        1. Local Setup
        2. Docker Setup
        3. Add to MCP settings:
      2. Tools
        1. Entity Management
        2. Semantic Search
      3. Implementation Details
        1. Synchronization
        2. Search Process
      4. Example Usage
        1. HTTPS and Reverse Proxy Configuration
          1. Setting up with a Reverse Proxy
          2. Security Considerations
          3. Troubleshooting HTTPS Connections
        2. Contributing
          1. License

            Related MCP Servers

            • -
              security
              A
              license
              -
              quality
              Provides RAG capabilities for semantic document search using Qdrant vector database and Ollama/OpenAI embeddings, allowing users to add, search, list, and delete documentation with metadata support.
              Last updated -
              5
              4
              TypeScript
              Apache 2.0
            • -
              security
              A
              license
              -
              quality
              A Model Context Protocol server that enables semantic search capabilities by providing tools to manage Qdrant vector database collections, process and embed documents using various embedding services, and perform semantic searches across vector embeddings.
              Last updated -
              89
              TypeScript
              MIT License
            • -
              security
              F
              license
              -
              quality
              This server enables semantic search capabilities using Qdrant vector database and OpenAI embeddings, allowing users to query collections, list available collections, and view collection information.
              Last updated -
              Python
            • -
              security
              F
              license
              -
              quality
              Enables storage and retrieval of knowledge in a graph database format, allowing users to create, update, search, and delete entities and relationships in a Neo4j-powered knowledge graph through natural language.
              Last updated -
              Python
              • Linux

            View all related MCP servers

            ID: hbn6r7in36