← Torna ai progetti
Qdrant RagSystem MCP

Qdrant RagSystem MCP

Python
di Marco Salmaso
Un MCP server espone due strumenti: qdrant-store per salvare chunk testuali vettorializzati e qdrant-find per recuperarli via similarità appoggiandosi a Qdrant. Le embedding sono generate localmente con il modello EmbeddingGemma 300M (multilingue, ~300M parametri), pensato per on-device e ottimo per retrieval semantico.

Qdrant RAG MCP Server

MCP server con embedding locale (google/embeddinggemma-300m) tramite sentence-transformers e database vettoriale Qdrant.

Caratteristiche

  • Embedding completamente locale: Utilizza google/embeddinggemma-300m (768 dimensioni) tramite sentence-transformers
  • Database vettoriale: Qdrant cloud per storage e ricerca semantica
  • 8 Tools MCP: Gestione collezioni, ricerca semantica e documenti

Installazione

# Crea virtual environment (opzionale ma consigliato)
python3 -m venv venv
source venv/bin/activate  # Su Windows: venv\Scripts\activate

# Installa dipendenze
pip install -r requirements.txt

Nota: Al primo avvio, sentence-transformers scaricherà automaticamente il modello google/embeddinggemma-300m (~300MB).

Configurazione

Le credenziali Qdrant sono in .env

Avvio

python3 main.py

Tools Disponibili

1. list_collections

Lista tutte le collezioni disponibili in Qdrant.

2. create_collection

Crea una nuova collezione con configurazione ottimale per embeddings (768 dim, Cosine distance).

Parametri:

  • collection_name (string): Nome della nuova collezione

3. get_collection_info

Ottieni informazioni dettagliate su una collezione.

Parametri:

  • collection_name (string): Nome della collezione

4. search_collection

Ricerca semantica all'interno di una collezione specifica.

Parametri:

  • collection_name (string): Nome della collezione
  • query (string): Testo della query
  • limit (number, opzionale): Numero massimo di risultati (default: 5)

5. search_chunk

Cerca un chunk specifico tramite ID.

Parametri:

  • collection_name (string): Nome della collezione
  • chunk_id (string): ID del chunk

6. search_all_chunks

Ricerca semantica in tutte le collezioni disponibili.

Parametri:

  • query (string): Testo della query
  • limit (number, opzionale): Numero massimo di risultati per collezione (default: 5)

7. search_documents

Cerca documenti esistenti per fonte (source).

Parametri:

  • collection_name (string): Nome della collezione
  • source (string, opzionale): Nome della fonte/documento
  • limit (number, opzionale): Numero massimo di chunk (default: 100)

8. add_document

Aggiunge un documento, suddividendolo in chunk e generando embeddings automaticamente.

Parametri:

  • collection_name (string): Nome della collezione
  • text (string): Testo completo del documento
  • source (string): Nome/identificatore del documento
  • metadata (object, opzionale): Metadati aggiuntivi
  • chunk_size (number, opzionale): Dimensione chunk in parole (default: 512)
  • chunk_overlap (number, opzionale): Sovrapposizione in parole (default: 50)

Utilizzo con Claude Desktop

Aggiungi al file di configurazione di Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "qdrant-rag": {
      "command": "python3",
      "args": ["/Users/your-user/QdrantRagSystemMCP/main.py"],
      "env": {
        "QDRANT_URL": "https://tuo-url-qdrant.cloud.qdrant.io",
        "QDRANT_API_KEY": "tuo-qdrant-token"
      }
    }
  }
}

Tecnologie

  • MCP SDK: mcp
  • Qdrant: qdrant-client
  • Sentence Transformers: sentence-transformers
  • Modello: google/embeddinggemma-300m (768 dimensioni, locale)
  • Python: 3.8+