Skip to main content
Glama
jiteshzope

mcp-server-qdrant

by jiteshzope

Агентный RAG (Tavily + Context7 + Qdrant)

Что это делает

База знаний, которую агент строит для себя — один из нескольких источников контекстной инженерии, к которым агент может обращаться.

RAG — генерация с дополнением через поиск — означает предоставление модели релевантных документов для обоснования ответа. Обычный подход загружает документы в векторное хранилище заранее. Агентный RAG переворачивает этот подход: агент сам строит базу знаний, решая, что стоит сохранить, и сохраняя это по мере работы.

Здесь используется официальный MCP-сервер Qdrant. Qdrant — это векторная база данных, и сервер предоставляет два инструмента: один сохраняет фрагмент текста, другой находит наиболее релевантный сохраненный текст для запроса. Он работает полностью локально — QDRANT_LOCAL_PATH хранит всё на диске без необходимости запускать отдельную базу данных, а встраивание текста выполняется локальной моделью, поэтому дополнительный API-ключ не требуется.

Агент использует три MCP-сервера:

Сервер

Транспорт

Назначение

Tavily (tavily-mcp)

stdio через npx

Поиск в интернете в реальном времени, ограниченный tavily_search

Context7 (mcp.context7.com)

streamable HTTP

Актуальная документация по библиотекам, фреймворкам, SDK и API

Qdrant (mcp-server-qdrant)

stdio через uvx

Локальное векторное хранилище, в которое агент пишет и из которого читает

Скрипт запускает две половины RAG как два отдельных агента:

  1. Сохранение — один агент с поиском Tavily, Context7 и Qdrant. Он исследует последние новости об Nvidia в интернете, находит актуальную документацию OpenAI Agents SDK через Context7 и сохраняет ключевые факты из обоих источников.

  2. Извлечение — второй агент только с Qdrant, без поиска в интернете и без Context7. Всё, что он говорит, он извлекает из того, что сохранил первый агент.

Related MCP server: Qdrant MCP Server

Зачем нужен Context7

Обучающие данные модели имеют временную отсечку, поэтому её память о быстро меняющейся библиотеке устаревает, и она будет уверенно выдумывать API, которых больше не существует. Context7 — это хостинговый MCP-сервер, который индексирует документацию библиотек и предоставляет актуальную версию по запросу. Два инструмента:

  • resolve-library-id — преобразует имя пакета или продукта ("openai-agents", "next.js") в идентификатор библиотеки Context7.

  • query-docs — получает актуальную документацию и примеры кода для этой библиотеки, суженные до вашего вопроса.

Инструкции агента направляют всё, что связано с библиотеками, в Context7, а не в память или в общий поиск в интернете — сначала определить идентификатор, затем запросить документацию. Поскольку это обычная HTTP-конечная точка, ничего устанавливать не нужно; она подключается через MCPServerStreamableHttp вместо MCPServerStdio:

context7_params = {"url": "https://mcp.context7.com/mcp", "timeout": 60}

async with MCPServerStreamableHttp(params=context7_params, client_session_timeout_seconds=60) as docs_server:
    ...

Здесь задействованы два тайм-аута, и они выполняют разные функции. timeout внутри параметров — это тайм-аут HTTP-запроса; client_session_timeout_seconds — это тайм-аут чтения MCP-сессии, и по умолчанию он составляет всего 5 секунд — настолько мало, что медленный запрос документации завершится ошибкой, поэтому здесь он увеличен до 60.

Настройка

  1. Node 22+ (Tavily запускается через npx; Qdrant запускается через uvx, который уже предоставляет uv; для Context7 ничего устанавливать не нужно):

    • Windows (PowerShell): winget install OpenJS.NodeJS.LTS

    • Mac: brew install node

    • Linux / другие системы: установите через ваш пакетный менеджер или с nodejs.org

  2. Получите бесплатный API-ключ Tavily на tavily.com (1000 поисков в месяц, без кредитной карты; начинается с tvly-).

  3. Необязательно: получите бесплатный API-ключ Context7 на context7.com. Context7 работает анонимно — ключ только повышает лимит запросов.

  4. Скопируйте .env.example в .env и заполните:

    OPENAI_API_KEY=sk-...
    TAVILY_API_KEY=tvly-...
    CONTEXT7_API_KEY=          # optional, leave blank to run anonymously
  5. Установите зависимости:

    uv sync
  6. Запустите:

    uv run main.py

Примечания

  • Первый запуск приостанавливается один раз, иногда на некоторое время: при первом сохранении или поиске загружается небольшая локальная модель встраивания Qdrant. Именно поэтому сервер Qdrant получает тайм-аут клиента 120 с вместо 60 с.

  • Векторное хранилище находится в memory/qdrant/ (коллекция knowledge), создаётся относительно вашей рабочей директории — запускайте из папки проекта. Удалите его, чтобы начать с пустой базы знаний.

  • Запустите скрипт снова, и шаг 1 добавит данные к уже сохранённым, а не заменит их.

  • Если CONTEXT7_API_KEY установлен, он отправляется как заголовок Authorization: Bearer ...; если он отсутствует, заголовок полностью опускается, и сервер используется анонимно.

  • Агент извлечения намеренно оставлен только с Qdrant. Предоставление ему также и Context7 размыло бы демонстрацию — вы бы больше не могли определить, получен ли ответ из базы знаний или из свежего запроса документации.

  • Context7 — это удалённый сервер, поэтому, в отличие от двух других, его работа зависит от доступности сети mcp.context7.com, а не от локального процесса.

  • Трассировки на platform.openai.com/traces.

  • Windows, пути с пробелами: если npx не запускается, используйте {"command": "powershell", "args": ["/c", "npx", ...]}.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides semantic memory capabilities using Qdrant vector database with configurable embedding providers, allowing storage and retrieval of information using vector similarity.
    2
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables semantic search and document management using a local Qdrant vector database with OpenAI embeddings. Supports natural language queries, metadata filtering, and collection management for AI-powered document retrieval.
    33 npm
    36
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables storing and retrieving information using semantic search with Qdrant vector database. Acts as a memory layer for LLMs to persistently store and semantically search through information and metadata.
    Apache 2.0