Skip to main content

MCP сервис для интеграции с Python RAG Server (DuckDB VSS)

Project description

MCP RAG Service

MCP сервис для интеграции с Python RAG Server (DuckDB VSS) v2.0

Улучшенный MCP сервис для работы с продвинутыми методами векторного поиска, основанный на принципе KISS (Keep It Simple, Stupid).

🚀 Возможности

Основные функции:

  • rag_upload_file - Загрузка файлов в RAG сервер
  • rag_search - Продвинутый поиск по документам (гибридный, семантический, ключевой) с переранжированием и расширением запроса.
  • rag_get_file_content - Получение полного содержимого файла из базы данных.
  • rag_similar_documents - Поиск похожих документов
  • rag_analyze_collection - Анализ коллекции (кластеры, выбросы, центральность)
  • rag_get_collection_stats - Получение быстрой статистики по RAG коллекции.
  • rag_query_direct - Прямые SQL запросы к DuckDB VSS

Поддерживаемые форматы файлов:

  • Текстовые: .txt, .md
  • Документы: .pdf
  • Программный код: .py, .js, .java, .c, .cpp
  • Конфигурационные: .json, .yaml, .yml, .ini, .toml

📋 Требования

  • Python 3.8+
  • Работающий Python RAG Server с DuckDB VSS
  • MCP совместимый клиент (например, Claude Desktop)

🛠️ Установка и запуск

# Клонирование репозитория
cd mcp-rag-service

# Установка в режиме разработки
pip install -e .

# Или с dev зависимостями
pip install -e ".[dev]"

Запуск через Docker (Рекомендуется)

  1. Сборка Docker образа:
docker build -t mcp-rag-service:latest .
  1. Запуск контейнера:
docker run --rm -it \
  --network="host" \
  -v "/path/to/your/rag-server/data:/data" \
  mcp-rag-service:latest

Контейнеру нужен доступ к RAG серверу (по умолчанию http://localhost:8000) и к файлу базы данных rag.duckdb.

  • --network="host": Позволяет контейнеру обращаться к localhost хост-машины.
  • -v "/path/to/your/rag-server/data:/data": Монтирует папку с rag.duckdb внутрь контейнера.

Настройка MCP клиента (например, Cursor или Claude Desktop)

Добавьте в конфигурационный файл вашего клиента:

{
  "mcpServers": {
    "rag-vector-service": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "--network=host",
        "-v", "/path/to/your/rag-server/data:/data",
        "mcp-rag-service:latest"
      ],
      "env": {
        "RAG_SERVER_URL": "http://localhost:8000"
      }
    }
  }
}

Замените /path/to/your/rag-server/data на реальный путь к папке data вашего основного RAG сервера.

Убедитесь, что основной RAG сервер запущен:

cd /path/to/your/python-rag-server
docker run -p 8000:8000 -v "$(pwd)/data:/app/data" ...

📖 Использование

Загрузка файла

# Загрузка документа
await mcp_client.call_tool(
    "rag_upload_file",
    {"file_path": "/path/to/document.pdf"}
)

Продвинутый поиск

# Гибридный поиск с переранжированием
await mcp_client.call_tool(
    "rag_search",
    {
        "query": "машинное обучение и нейронные сети",
        "top_k": 5,
        "search_type": "hybrid",
        "use_reranker": true,
        "expand_query": false
    }
)

Анализ коллекции

# Поиск похожих документов
await mcp_client.call_tool(
    "rag_similar_documents",
    {
        "reference_file": "main.py",
        "top_k": 3
    }
)

# Анализ кластеров
await mcp_client.call_tool(
    "rag_analyze_collection",
    {
        "analysis_type": "clusters",
        "top_k": 10
    }
)

Получение статистики

# Получить общую статистику по базе данных
await mcp_client.call_tool(
    "rag_get_collection_stats",
    {}
)

Прямой SQL запрос

# Для продвинутых пользователей
await mcp_client.call_tool(
    "rag_query_direct",
    {
        "sql_query": "SELECT file_name, COUNT(*) FROM chunks GROUP BY file_name"
    }
)

🔒 Безопасность

  • ✅ Валидация путей к файлам
  • ✅ Whitelist разрешенных расширений файлов
  • ✅ SQL injection защита для прямых запросов
  • ✅ Ограничение на команды только для чтения (SELECT, WITH, SHOW, etc.)
  • ✅ Санитизация имен файлов
  • ✅ Контейнеризация через Docker для простоты развертывания.

🏗️ Архитектура

mcp-rag-service/
├── Dockerfile                 # Docker-файл для сборки сервиса
├── src/                       # Исходный код
│   ├── rag_mcp_server.py     # Главный MCP сервер
│   ├── rag_client.py         # HTTP клиент для RAG сервера
│   ├── vector_operations.py  # Векторные операции и аналитика
│   └── utils.py              # Утилиты и валидация
├── examples/                  # Примеры использования
│   ├── upload_example.py     # Загрузка файлов
│   ├── search_example.py     # Семантический поиск
│   └── analysis_example.py   # Анализ коллекции
└── pyproject.toml            # Конфигурация проекта

🧠 Векторная аналитика

Основные типы анализа:

Кластеризация: Поиск самых похожих пар документов для понимания тематических групп.

Поиск выбросов: Выявление уникального контента, который отличается от основной коллекции.

Анализ центральности: Определение "центральных" документов, которые связаны с большинством других.

Матрица similarity: Анализ связей между файлами для понимания структуры коллекции.

🚦 Статус проекта

  • ✅ Основные MCP функции реализованы
  • ✅ Интеграция с DuckDB VSS
  • ✅ Безопасность и валидация
  • ✅ Векторная аналитика
  • ✅ Продвинутые методы поиска
  • ⏳ REST API интеграция (улучшение)
  • ⏳ Тесты
  • ⏳ Продвинутая обработка ошибок

📄 Лицензия

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_niksh06_rag_duckdb_with_mcp-1.0.0.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_niksh06_rag_duckdb_with_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_niksh06_rag_duckdb_with_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 22.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_niksh06_rag_duckdb_with_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 142fb54a9d9e1e4b7413a7a2d7ea91d3fbd55ff30f08837033799e97e548c352
MD5 1cf5377ff5a910ace967157649fb4aaa
BLAKE2b-256 018954b0c01b83dc7dfbedb48770d908f478ba191ce69360a04f72df8872c856

See more details on using hashes here.

File details

Details for the file iflow_mcp_niksh06_rag_duckdb_with_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_niksh06_rag_duckdb_with_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_niksh06_rag_duckdb_with_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2524349510b92007d082bb6660b8cb557ca6f105485ffad1f8b1ddb73744768e
MD5 8a26ed7291559f27976116b42d6b2f89
BLAKE2b-256 dcbb9ef797055ea1e9c5645cfa7cfe77e192c0eea05bc557ef89a5d539ff3f7f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page