qdrant-mcp-ollama
qdrant-mcp-ollama
Un servidor de Model Context Protocol (MCP) para la base de datos vectorial de Qdrant que utiliza Ollama para embeddings acelerados por GPU.
¿Por qué no el mcp-server-qdrant oficial?
El servidor MCP oficial de Qdrant usa FastEmbed para los embeddings, lo que:
Solo funciona en CPU — es lento en bases de código grandes y no aprovecha las GPU modernas
Utiliza un modelo pequeño (
all-MiniLM-L6-v2, 384 dimensiones) — embeddings de menor calidadProtección de un solo proceso en modo local — solo un cliente MCP puede acceder a la base de datos a la vez
Este servidor resuelve los tres problemas:
|
| |
Motor de embeddings | FastEmbed (CPU) | Ollama (GPU) |
Modelo predeterminado | all-MiniLM-L6-v2 (384-dim, 80 MB) | bge-m3 (1024-dim, 1,2 GB) |
Acceso concurrente | No (modo local) | Sí (servidor Qdrant) |
Flexibilidad de modelos | Solo modelos FastEmbed | Cualquier modelo de embeddings de Ollama |
Related MCP server: Claude Context MCP
Arquitectura
┌──────────────┐ ┌────────────────────┐ ┌─────────────┐
│ MCP Client │────>│ qdrant-mcp-ollama │────>│ Ollama │
│ (Claude Code, │ │ (server.py) │ │ (GPU) │
│ Kilo Code, │<────│ │ └─────────────┘
│ Cursor, etc) │ └────────┬───────────┘
└──────────────┘ │
v
┌────────────────────┐
│ Qdrant Server │
│ (Docker, :6333) │
│ Storage: local │
│ disk / cloud │
└────────────────────┘Requisitos previos
Ollama — instalado y en ejecución, con un modelo de embeddings descargado mediante
ollama pullDocker — para ejecutar el servidor de Qdrant
uv — gestor de paquetes de Python (recomendado) o
pip
Inicio rápido
1. Descarga un modelo de embeddings en Ollama
ollama pull bge-m32. Inicia el servidor de Qdrant
docker run -d --name qdrant-server \
-p 6333:6333 -p 6334:6334 \
-v qdrant-storage:/qdrant/storage \
--restart unless-stopped \
qdrant/qdrant:latest3. Ejecuta el servidor MCP
# No install needed — uv downloads dependencies on-the-fly:
QDRANT_URL="http://localhost:6333" \
EMBEDDING_MODEL="bge-m3" \
uv run --with fastmcp --with qdrant-client --with httpx python server.py4. Indexa una base de código
uv run --with qdrant-client --with httpx python embed_codebase.py \
/path/to/your/project my-project --preset python5. Busca desde tu cliente MCP
Una vez configurado (consulta las secciones de abajo), pregúntale a tu asistente de IA:
"Busca la lógica de autenticación en la base de código"
Utilizará la herramienta qdrant_find para devolver fragmentos de código semánticamente relevantes.
Configurar el servidor de Qdrant
Opción A: Docker (recomendado)
Almacena los datos en una unidad concreta (p. ej., E: en Windows):
# Create storage directories
mkdir -p E:/qdrant-storage E:/qdrant-snapshots
# Start Qdrant with persistent storage
docker run -d --name qdrant-server \
-p 6333:6333 -p 6334:6334 \
-v E:/qdrant-storage:/qdrant/storage \
-v E:/qdrant-snapshots:/qdrant/snapshots \
--restart unless-stopped \
qdrant/qdrant:latestEn Linux/macOS:
docker run -d --name qdrant-server \
-p 6333:6333 -p 6334:6334 \
-v ~/qdrant-storage:/qdrant/storage \
--restart unless-stopped \
qdrant/qdrant:latestLa opción --restart unless-stopped hace que Qdrant se inicie automáticamente con Docker Desktop.
Comprobación de funcionamiento:
docker ps --filter name=qdrant-server
# Or open http://localhost:6333/dashboard in your browserOpción B: Qdrant Cloud
Regístrate en cloud.qdrant.io y obtén tu URL y clave de API. Después define:
QDRANT_URL="https://your-cluster.cloud.qdrant.io:6333"
QDRANT_API_KEY="your-api-key"Nota: la variable de entorno
QDRANT_API_KEYse transfiere automáticamente al cliente de Qdrant.
Indexar una base de código
El script embed_codebase.py escanea un directorio, divide los archivos fuente en fragmentos y los indexa por lotes en Qdrant utilizando Ollama y la GPU.
Uso básico
uv run --with qdrant-client --with httpx python embed_codebase.py <directory> <collection-name>Uso de presets de extensiones
# Python project
python embed_codebase.py ./my-api api-backend --preset python
# Full-stack web project
python embed_codebase.py ./my-app frontend --preset web
# R / bioinformatics project
python embed_codebase.py ./analysis bio-analysis --preset r
# Everything
python embed_codebase.py ./mono-repo all-code --preset allExtensiones personalizadas
python embed_codebase.py ./project my-collection --extensions .py .sql .sh .yamlPresets disponibles
Preset | Extensiones |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Todas las extensiones de código más comunes |
Si no se proporciona --preset ni --extensions, el script detecta automáticamente los tipos de archivo.
Todas las opciones
usage: embed_codebase.py <directory> <collection> [options]
positional arguments:
directory Path to the codebase directory
collection Qdrant collection name
options:
--extensions EXT [EXT ...] File extensions to include (e.g. .py .ts)
--preset PRESET Use a preset group of extensions
--model MODEL Ollama embedding model (default: bge-m3)
--qdrant-url URL Qdrant server URL (default: http://localhost:6333)
--ollama-url URL Ollama server URL (default: http://localhost:11434)
--chunk-size N Max lines per chunk (default: 80)
--chunk-overlap N Overlap lines between chunks (default: 10)
--batch-size N Upload batch size for Qdrant (default: 500)
--append Append to existing collection instead of replacingModo append
Por defecto, al volver a ejecutar el script se reemplaza la colección. Usa --append para añadir a una colección existente:
# First embed
python embed_codebase.py ./src main-code --preset typescript
# Add more files later
python embed_codebase.py ./docs main-code --extensions .md --appendUso con varias bases de código
Utiliza colecciones separadas para cada base de código y consigue que los resultados de búsqueda estén delimitados y sean relevantes:
# Project A
python embed_codebase.py ~/projects/api-server api-server --preset python
# Project B
python embed_codebase.py ~/projects/web-app web-app --preset web
# Project C
python embed_codebase.py ~/projects/data-pipeline data-pipeline --preset pythonAl configurar el servidor MCP:
Sin
COLLECTION_NAME: de versión por consulta. Es ideal cuando un mismo servidor MCP da servicio a varios proyectos.Con
COLLECTION_NAME: se usa automáticamente una colección por defecto. Configúralo por proyecto si tu cliente MCP admite la configuración por proyecto.
Configurar Claude Code
Añade el servidor MCP
claude mcp add qdrant -s user \
-e QDRANT_URL="http://localhost:6333" \
-e OLLAMA_URL="http://localhost:11434" \
-e EMBEDDING_MODEL="bge-m3" \
-- uv run --with fastmcp --with qdrant-client --with httpx \
python /path/to/qdrant-mcp-ollama/server.pyReemplaza /path/to/qdrant-mcp-ollama/ por la ruta real donde clonaste este repositorio.
Con una colección por defecto
Si trabajas principalmente en un solo proyecto:
claude mcp add qdrant -s user \
-e QDRANT_URL="http://localhost:6333" \
-e OLLAMA_URL="http://localhost:11434" \
-e EMBEDDING_MODEL="bge-m3" \
-e COLLECTION_NAME="my-project" \
-- uv run --with fastmcp --with qdrant-client --with httpx \
python /path/to/qdrant-mcp-ollama/server.pyVerificación
claude mcp list
# Should show: qdrant: ... ✓ Connected
claude mcp get qdrant
# Shows full configuration detailsUso en Claude Code
Cuando esté configurado, Claude Code puede usar estas herramientas:
qdrant_store— Guarda información: "Almacena este patrón de autenticación en Qdrant"qdrant_find— Busca: "Encuentra código relacionado con migraciones de base de datos"
En configuraciones con múltiples colecciones (sin colección por defecto), especifica la colección:
"Busca la lógica de limitación de peticiones en la colección
api-server"
Configurar Kilo Code (extensión de VS Code)
Kilo Code es una extensión de VS Code con soporte MCP integrado.
Opción 1: Configuración manual de MCP
Abre la configuración de Kilo Code en VS Code.
Ve a la configuración de servidores MCP.
Añade un nuevo servidor con:
Campo | Valor |
Nombre |
|
Comando |
|
Argumentos |
|
Define las variables de entorno:
Variable | Valor |
|
|
|
|
|
|
| El nombre de la colección de tu proyecto (p. ej., |
Opción 2: settings.json de VS Code
Añade a tu settings.json de VS Code (Ctrl+Shift+P > Preferencias: Abrir Configuración de Usuario (JSON)):
{
"kilocode.mcpServers": {
"qdrant": {
"command": "uv",
"args": [
"run", "--with", "fastmcp", "--with", "qdrant-client", "--with", "httpx",
"python", "/path/to/qdrant-mcp-ollama/server.py"
],
"env": {
"QDRANT_URL": "http://localhost:6333",
"OLLAMA_URL": "http://localhost:11434",
"EMBEDDING_MODEL": "bge-m3",
"COLLECTION_NAME": "my-project"
}
}
}
}Configuración por proyecto en Kilo Code
Para configuraciones con múltiples bases de código, configura Kilo Code en el ámbito de proyecto (no global) con un COLLECTION_NAME específico de cada proyecto. Así, cada espacio de trabajo buscará únicamente en su propia base de código.
Configurar otros clientes MCP
Cursor / Windsurf
Ejecuta el servidor con transporte SSE para clientes con capacidad de conexión remota:
QDRANT_URL="http://localhost:6333" \
OLLAMA_URL="http://localhost:11434" \
EMBEDDING_MODEL="bge-m3" \
FASTMCP_PORT=8000 \
uv run --with fastmcp --with qdrant-client --with httpx \
python server.py --transport sseLuego, en la configuración de MCP de Cursor/Windsurf, conéctate a: http://localhost:8000/sse
Cliente MCP genérico (stdio)
El transporte predeterminado es stdio. Cualquier cliente MCP que admita stdio puede usar este servidor ejecutando:
uv run --with fastmcp --with qdrant-client --with httpx python server.pyReferencia de configuración
Variables de entorno del servidor MCP
Variable | Descripción | Predeterminado |
| URL del servidor de Qdrant |
|
| Clave de API para Qdrant Cloud | Ninguna |
| URL del servidor de Ollama |
|
| Nombre del modelo de embeddings de Ollama |
|
| Colección por defecto (vacío = debe especificarse por llamada) | *(vacío)* |
Elección del modelo de embeddings
Todos los modelos siguientes se descargan con ollama pull <model>:
Modelo | Dimensiones | Tamaño | Velocidad | Calidad | Mejor para |
| 1024 | 1,2 GB | Moderada | Alta | Uso general, multilingüe |
| 768 | 274 MB | Rápida | Buena | Ligero, para español e inglés |
| 1024 | 670 MB | Moderada | Alta | Inglés, alta calidad |
| 1024 | 1,2 GB | Moderada | Muy alta | Mejor calidad, inglés |
| 384 | 46 MB | Muy rápida | Aceptable | Recursos mínimos |
Recomendación: empieza con bge-m3. Se comporta bien con código, admite contenido multilingüe (comentarios en cualquier idioma) y equilibra calidad y velocidad.
Importante: el modelo de embeddings usado para indexar una colección debe coincidir con el modelo usado en las consultas. Si vuelves a indexar con un modelo diferente, elimina y vuelve a crear la colección.
Uso de GPU
Los modelos más grandes utilizan más GPU. Si tu GPU está infrautilizada:
Cambia de
nomic-embed-text(274 MB) abge-m3(1,2 GB) o a un modelo mayor.El script de indexación envía todos los textos en un solo lote para maximizar la saturación de la GPU.
En las consultas individuales (a través de
qdrant_find), los picos de GPU son breves y normales; indexar una sola consulta toma milisegundos.
Comprueba el uso de GPU: nvidia-smi (NVIDIA) o rocm-smi (AMD)
Herramientas MCP
qdrant_store
Almacena información en la base de datos de Qdrant.
Parámetro | Tipo | Obligatorio | Descripción |
| string | Sí | Texto que se debe almacenar y poder buscar |
| string | Si no hay valor por defecto | Colección de destino |
| dict | No | Metadatos opcionales que adjuntar |
qdrant_find
Busca información relevante mediante similitud semántica.
Parámetro | Tipo | Obligatorio | Descripción |
| string | Yes | Consulta de búsqueda en lenguaje natural |
| string | Si no hay valor por defecto | Colección en la que buscar |
| int | No | Número máximo de resultados por defecto (por defecto: 5) |
Solución de problemas
«Connection closed» / el servidor MCP no se inicia
¿Está Ollama ejecutándose? Compruébalo con
ollama list. Si es necesario, inícialo conollama serve.¿Se ha descargado el modelo de embeddings? Ejecuta
ollama pull bge-m3.¿Está Qdrant ejecutuado? Compruébalo con
docker ps --filter name=qdrant-server.
«La colección no existe»
La colección se crea al ejecutar el script de indexación o en la primera llamada a qdrant_store. Haz una de estas dos cosas:
Ejecuta
embed_codebase.pypara indexar tu base de código en primer lugar.O guarda algo con
qdrant_storepara que la colección se cree automáticamente.
Errores de dimensiones
Esto sucede cuando la colección se creó con un modelo de embeddings pero se consulta con otro. Solución:
Elimina la colección: visita
http://localhost:6333/dashboard.Vuelve a indexar con el modelo correcto.
Asegúrate de que
EMBEDDING_MODELen la configuración del servidor MCP coincide con el que usaste para indexar.
«La carpeta de almacenamiento ya está en uso por otra instancia»
Este mensaje es del oficial mcp-server-qdrant cuando se utiliza en modo local (QDRANT_LOCAL_PATH). Este proyecto evita ese problema conectando a un servidor de Qdrant mediante URL. Asegúrate de no ejecutar ambos servidores apuntando a la misma ruta local.
Indexación lenta / GPU
Usa modelos más grandes y verifica con nvidia-smi (NVIDIA) o rocm-smi (AMD).
Usa un modelo más grande:
bge-m3(1.2 GB) en lugar denomic-embed-text(274 MB)El script de incrustación envía todos los textos en un solo lote — si tienes miles de fragmentos, esto maximiza el uso de la GPU
Para bases de código muy grandes (10,000+ archivos), considera dividir en varias ejecuciones por directorio
Licencia
Apache License 2.0 — ver LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic code search across codebases using Qdrant vector database and OpenAI embeddings, allowing users to find code by meaning rather than just keywords through natural language queries.2MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to index and search codebases using semantic search powered by multiple embedding providers (OpenAI, VoyageAI, Gemini, Ollama) and vector database storage.
- FlicenseNot gradedqualityDmaintenanceEnables semantic code search across multi-language codebases using natural language queries, integrated with Qdrant vector database for fast, cached retrieval.1
- AlicenseNot gradedqualityFmaintenanceIndexes codebases into Qdrant for semantic search, enabling AI assistants to find relevant code by meaning without re-exploring the repo.MIT
Related MCP Connectors
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search your knowledge bases from any AI assistant using hybrid RAG.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/michal7kw/qdrant-mcp-ollama'
If you have feedback or need assistance with the MCP directory API, please join our Discord server