qdrant-mcp-ollama
qdrant-mcp-ollama
Сервер Model Context Protocol (MCP) для векторной базы данных Qdrant, использующий Ollama для GPU-ускоренных эмбеддингов.
Почему не официальный mcp-server-qdrant?
Официальный MCP-сервер Qdrant использует FastEmbed для эмбеддингов, которые:
Работают только на CPU — медленно на больших кодовых базах, не задействуют современные GPU
Используют маленькую модель (
all-MiniLM-L6-v2, 384-dim) — менее качественные эмбеддингиОднопроцессная блокировка в локальном режиме — только один MCP-клиент может одновременно обращаться к базе данных
Этот сервер решает все три проблемы:
Официальный |
| |
Движок эмбеддинга | FastEmbed (CPU) | Ollama (GPU) |
Модель по умолчанию | all-MiniLM-L6-v2 (384-dim, 80MB) | bge-m3 (1024-dim, 1.2GB) |
Одновременный доступ | Нет (локальный режим) | Да (сервер Qdrant) |
Гибкость моделей | Только модели FastEmbed | Любая эмбеддинг-модель Ollama |
Related MCP server: Claude Context MCP
Архитектура
┌──────────────┐ ┌────────────────────┐ ┌─────────────┐
│ MCP Client │────>│ qdrant-mcp-ollama │────>│ Ollama │
│ (Claude Code, │ │ (server.py) │ │ (GPU) │
│ Kilo Code, │<────│ │ └─────────────┘
│ Cursor, etc) │ └────────┬───────────┘
└──────────────┘ │
v
┌────────────────────┐
│ Qdrant Server │
│ (Docker, :6333) │
│ Storage: local │
│ disk / cloud │
└────────────────────┘Предварительные требования
Ollama — установлена и запущена, эмбеддинг-модель скачана
Docker — для запуска сервера Qdrant
uv — менеджер пакетов Python (рекомендуется) или
pip
Быстрый старт
1. Скачайте эмбеддинг-модель в Ollama
ollama pull bge-m32. Запустите сервер Qdrant
docker run -d --name qdrant-server \
-p 6333:6333 -p 6334:6334 \
-v qdrant-storage:/qdrant/storage \
--restart unless-stopped \
qdrant/qdrant:latest3. Запустите 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. Индексируйте кодовую базу
uv run --with qdrant-client --with httpx python embed_codebase.py \
/path/to/your/project my-project --preset python5. Поиск через вашего MCP-клиента
После настройки (см. разделы ниже) спросите вашего ИИ-ассистента:
"Найди в кодовой базе логику аутентификации"
Он использует инструмент qdrant_find, чтобы вернуть семантически релевантные фрагменты кода.
Настройка сервера Qdrant
Вариант A: Docker (рекомендуется)
Храните данные на отдельном диске (например, E: в 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:latestНа Linux/macOS:
docker run -d --name qdrant-server \
-p 6333:6333 -p 6334:6334 \
-v ~/qdrant-storage:/qdrant/storage \
--restart unless-stopped \
qdrant/qdrant:latestФлаг --restart unless-stopped гарантирует, что Qdrant запускается автоматически вместе с Docker Desktop.
Проверьте, что он запущен:
docker ps --filter name=qdrant-server
# Or open http://localhost:6333/dashboard in your browserВариант B: Qdrant Cloud
Зарегистрируйтесь на cloud.qdrant.io и получите URL и API-ключ. Затем укажите их:
QDRANT_URL="https://your-cluster.cloud.qdrant.io:6333"
QDRANT_API_KEY="your-api-key"Примечание: Переменная окружения
QDRANT_API_KEYавтоматически передаётся клиенту Qdrant.
Эмбеддинг кодовой базы
Скрипт embed_codebase.py сканирует каталог, разбивает исходные файлы на фрагменты и массово индексирует их в Qdrant, используя Ollama на GPU.
Базовое использование
uv run --with qdrant-client --with httpx python embed_codebase.py <directory> <collection-name>Использование пресетов расширений
# 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 allПользовательские расширения
python embed_codebase.py ./project my-collection --extensions .py .sql .sh .yamlДоступные пресеты
Пресет | Расширения |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Все распространённые расширения исходного кода |
Если не указаны --preset или --extensions, скрипт определяет типы файлов автоматически.
Все параметры
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 replacingРежим дополнения
По умолчанию повторный запуск скрипта заменяет коллекцию. Используйте --append, чтобы добавить данные в существующую коллекцию:
# First embed
python embed_codebase.py ./src main-code --preset typescript
# Add more files later
python embed_codebase.py ./docs main-code --extensions .md --appendИспользование нескольких кодовых баз
Используйте отдельные коллекции для каждой кодовой базы, чтобы результаты поиска были релевантными и не смешивались:
# 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 pythonПри настройке MCP-сервера:
Без
COLLECTION_NAME: коллекцию необходимо указывать при каждом запросе. Идеально, когда один MCP-сервер обслуживает несколько проектов.С
COLLECTION_NAME: коллекция по умолчанию используется автоматически. Задавайте её отдельно для каждого проекта, если ваш MCP-клиент поддерживает конфигурацию в рамках проекта.
Настройка Claude Code
Добавление 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.pyЗамените /path/to/qdrant-mcp-ollama/ на фактический путь, куда вы клонировали этот репозиторий.
С коллекцией по умолчанию
Если вы работаете преимущественно с одним проектом:
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.pyПроверка
claude mcp list
# Should show: qdrant: ... ✓ Connected
claude mcp get qdrant
# Shows full configuration detailsИспользование в Claude Code
После настройки Claude Code сможет использовать такие инструменты:
qdrant_store— сохранить информацию: "Сохрани этот паттерн аутентификации в Qdrant"qdrant_find— поиск: "Найди код, связанный с миграциями базы данных"
Для конфигураций с несколькими коллекциями (без коллекции по умолчанию) указывайте коллекцию явно:
"Найди в коллекции
api-serverлогику ограничения частоты запросов"
Настройка Kilo Code (расширение VS Code)
Kilo Code — расширение VS Code со встроенной поддержкой MCP.
Вариант 1: Настройка MCP вручную
Откройте настройки Kilo Code в VS Code.
Перейдите к конфигурации MCP-серверов.
Добавьте новый сервер со следующими параметрами:
Поле | Значения |
Имя |
|
Команда |
|
Аргументы |
|
Задайте переменные окружения:
Переменная | Значение |
|
|
|
|
|
|
| Название коллекции вашего проекта (например, |
Вариант 2: settings.json в VS Code
Добавьте в ваш файл settings.json в VS Code (Ctrl+Shift+P > Preferences: Open User Settings (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"
}
}
}
}Настройка на уровне проекта в Kilo Code
Для конфигураций с несколькими кодовыми базами настройте Kilo Code на уровне проекта (не глобально), указав COLLECTION_NAME для конкретного проекта. Так каждая рабочая область будет искать только в своей кодовой базе.
Настройка других MCP-клиентов
Cursor / Windsurf
Запустите сервер с транспортом SSE для клиентов с удалённым доступом:
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 sseЗатем в настройках MCP в Cursor/Windsurf подключитесь к адресу: http://localhost:8000/sse
Стандартный MCP-клиент (stdio)
Транспорт по умолчанию — stdio. Любой MCP-клиент с поддержкой stdio может использовать этот сервер, запустив команду:
uv run --with fastmcp --with qdrant-client --with httpx python server.pyСправочник по конфигурации
Переменные окружения MCP-сервера
Переменные | Описание | По умолчанию |
| URL сервера Qdrant |
|
| API-ключ для Qdrant Cloud | Нет |
| URL сервера Ollama |
|
| Название эмбеддинг-модели Ollama |
|
| Коллекция по умолчанию (пусто = указывать в каждом вызове) | (пусто) |
Выбор эмбеддинг-модели
Все модели ниже доступны через ollama pull <model>:
Модель | Размерность | Размер | Скорость | Качество | Для чего подходит |
| 1024 | 1.2 GB | Средняя | Высокое | Общее назначение, многоязычность |
| 768 | 274 MB | Быстрая | Хорошее | Лёгкая, ориентирована на английский |
| 1024 | 670 MB | Средняя | Высокое | Английский, высокое качество |
| 1024 | 1.2 GB | Средняя | Очень высокое | Лучшее качество, английский |
| 384 | 46 MB | Очень быстрая | Среднее | Минимальные ресурсы |
Рекомендация: Начните с bge-m3. Она хорошо работает с кодом, поддерживает многоязычный контент (комментарии на любом языке) и балансирует между качеством и скоростью.
Важно: Эмбеддинг-модель, использованная для индексации коллекции, должна совпадать с моделью, используемой для запросов. Если вы переиндексируете с другой моделью, удалите и создайте коллекцию заново.
Использование GPU
Более крупные модели занимают больше GPU. Если GPU недогружен:
Перейдите с
nomic-embed-text(274 MB) наbge-m3(1.2 GB) или более крупную модель.Скрипт эмбеддинга отправляет все тексты одним пакетом, чтобы максимально нагрузить GPU.
При отдельных запросах (через
qdrant_find) нагрузка на GPU кратковременна — это нормально, эмбеддинг одиночного запроса занимает миллисекунды.
Проверьте использование GPU: nvidia-smi (NVIDIA) или rocm-smi (AMD).
Инструменты MCP
qdrant_store
Сохраняет информацию в базе данных Qdrant.
Параметры | Тип | Обязателен | Описание |
| string | Да | Текст для сохранения и последующего поиска |
| string | Если не задана коллекция по умолчанию | Целевая коллекция |
| dict | Нет | Необязательные метаданные |
qdrant_find
Выполняет поиск релевантной информации с использованием семантической близости.
Параметры | Тип | Обязателен | Описание |
| string | Да | Поисковый запрос на естественном языке |
| string | Если не задана коллекция по умолчанию | Коллекция для поиска |
| int | Нет | Максимальное количество результатов (по умолчанию: 5) |
Устранение неполадок
«Connection closed» / MCP-сервер не запускается
Запущен ли Ollama? Проверьте командой
ollama list. При необходимости запустите с помощьюollama serve.Загружена ли эмбеддинг-модель? Выполните
ollama pull bge-m3.Запущен ли Qdrant? Проверьте командой
docker ps --filter name=qdrant-server.
Ошибка «Collection does not exist»
Коллекция создаётся скриптом эмбеддинга или при первом вызове qdrant_store. Выполните одно из действий:
Запустите
embed_codebase.py, чтобы сначала проиндексировать кодовую базу.Или сохраните что-нибудь через
qdrant_store, чтобы коллекция создалась автоматически.
Ошибки несовпадения размерности
Это происходит, когда коллекция была создана с одной эмбеддинг-моделью, а запрос выполняется другой. Исправление:
Удалите коллекцию: откройте
http://localhost:6333/dashboard.Заново выполните эмбеддинг с правильной моделью.
Убедитесь, что
EMBEDDING_MODELв конфигурации MCP-сервера совпадает с той, что использовалась для эмбеддинга.
Ошибка «Storage folder is already accessed by another instance»
Эта ошибка возникает в официальном mcp-server-qdrant при использовании локального режима (QDRANT_LOCAL_PATH). Данный проект избегает эту ошибку, подключаясь к серверу Qdrant по URL. Убедитесь, что оба сервера не используют один локальный путь.
Медленный эмбеддинг / низкая загрузка GPU
Используйте более крупную модель:
bge-m3(1.2 ГБ) вместоnomic-embed-text(274 МБ)Скрипт эмбеддинга отправляет все тексты одним пакетом — если у вас тысячи фрагментов, это максимизирует загрузку GPU
Для очень больших кодовых баз (10 000+ файлов) рассмотрите возможность разбиения на несколько запусков по каталогам
Лицензия
Apache License 2.0 — см. 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