Skip to main content
Glama

Агентная RAG-система на базе MCP

Локальная модульная система генерации с дополнением поиска (RAG), использующая протокол контекста модели (MCP) для подключения LLM к внешним инструментам, таким как векторные базы данных и загрузчики документов.

Обзор

Этот проект реализует агентную RAG-систему, которая:

  • Извлекает релевантные документы из локальной векторной базы данных (ChromaDB)

  • Дополняет промпты извлеченным контекстом

  • Генерирует обоснованные ответы с помощью локальной LLM (Ollama)

  • Предоставляет функциональность через REST API с помощью FastAPI

Related MCP server: MCP RAG with ChromaDB

Технологический стек

Компонент

Инструмент/Библиотека

Подробности

Языковая модель

Ollama

Локальный вывод LLM (mistral, llama3 и др.)

Агентный фреймворк

mcp + FastAPI

API-сервер с регистрацией инструментов

RAG-конвейер

LangChain + Custom

Извлечение контекста и проектирование промптов

Векторное хранилище

ChromaDB

Локальная персистентная векторная база данных

Эмбеддинги

SentenceTransformers

Модель all-MiniLM-L6-v2

Обработка файлов

pypdf, python-docx

Загрузка PDF и документов

Фронтенд (опционально)

Streamlit

Интерактивный веб-интерфейс

Окружение

Python 3.10+

virtualenv или Conda

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

agentic-rag-mcp/
├── main.py                    # FastAPI MCP server
├── rag_agent.py              # Agent query logic and RAG orchestration
├── mcp_config.yaml           # Configuration file
├── requirements.txt          # Python dependencies
├── vector_store/             # Persisted ChromaDB vector store
├── data/
│   └── sample_docs/          # Sample documents for ingestion
└── tools/
    └── chromadb_tool.py      # Vector search tool implementation

Установка и настройка

1. Клонирование и создание виртуального окружения

cd agentic-rag-mcp
python -m venv .venv

# On Windows
.venv\Scripts\activate

# On macOS/Linux
source .venv/bin/activate

2. Установка зависимостей

pip install -U pip
pip install -r requirements.txt

3. Настройка Ollama

Скачайте и установите Ollama с официального сайта.

Запустите сервер Ollama:

# On the system terminal (not in virtual environment)
ollama serve

В другом терминале загрузите модель:

ollama pull mistral    # Recommended for RAG
# or
ollama pull llama3

Проверьте, что сервер запущен:

curl http://localhost:11434/api/tags

Запуск системы

Вариант 1: Интерфейс чата (интерактивный)

Запустите интерактивный цикл чата:

python rag_agent.py

Это действие:

  1. Загрузит примеры документов в векторное хранилище

  2. Запустит интерактивный чат, где вы сможете задавать вопросы

  3. Агент извлечет релевантные документы и сгенерирует ответы

Пример взаимодействия:

You: What is MCP?
Agent: The Model Context Protocol (MCP) enables modular tool use for AI agents by providing a standardized way to connect language models to external services...

[Used 2 retrieved documents as context]

Вариант 2: API-сервер

Запустите MCP-сервер FastAPI:

python main.py

Сервер будет доступен по адресу: http://localhost:8000

API-эндпоинты

Проверка работоспособности

GET /health

Запрос к агенту

POST /query
Content-Type: application/json

{
  "query": "What is artificial intelligence?",
  "use_context": true,
  "n_results": 3
}

Поиск документов

POST /search
Content-Type: application/json

{
  "query": "MCP protocol",
  "n_results": 5
}

Добавление документов

POST /documents
Content-Type: application/json

{
  "documents": [
    "Document text 1",
    "Document text 2"
  ],
  "ids": ["doc1", "doc2"],
  "metadata": [
    {"source": "file1.txt"},
    {"source": "file2.txt"}
  ]
}

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

GET /stats

Примеры использования Python

from rag_agent import RAGAgent

# Initialize agent
agent = RAGAgent(
    ollama_url="http://localhost:11434",
    model="mistral"
)

# Get a response
result = agent.get_response("What is RAG?")
print(result["response"])
print(f"Retrieved {len(result['retrieved_documents'])} documents")

Конфигурация

Отредактируйте mcp_config.yaml для настройки:

  • Настройки LLM: Модель, температура, максимальное количество токенов

  • Векторное хранилище: Модель эмбеддингов, имя коллекции

  • RAG: Количество извлекаемых документов, метрика сходства

  • Сервер: Хост, порт, уровень логирования

  • Безопасность: Ограничения частоты запросов API, аутентификация

Добавление пользовательских документов

Программным способом

from tools.chromadb_tool import ChromaTool

tool = ChromaTool()
documents = [
    "Your document text 1",
    "Your document text 2"
]
tool.add_documents(documents, ids=["id1", "id2"])

Через API

curl -X POST http://localhost:8000/documents \
  -H "Content-Type: application/json" \
  -d '{
    "documents": ["Document 1", "Document 2"],
    "ids": ["doc1", "doc2"]
  }'

Опциональный фронтенд на Streamlit

Создайте streamlit_app.py:

import streamlit as st
import requests

st.set_page_config(page_title="RAG Agent", layout="wide")
st.title("MCP-Powered Agentic RAG")

query = st.text_input("Ask a question:")

if query:
    response = requests.post(
        "http://localhost:8000/query",
        json={"query": query}
    )
    result = response.json()
    
    st.subheader("Response")
    st.write(result["response"])
    
    st.subheader("Retrieved Context")
    for i, doc in enumerate(result["retrieved_documents"], 1):
        st.write(f"**Doc {i}**: {doc[:200]}...")

Запустите Streamlit:

streamlit run streamlit_app.py

Расширения и планы на будущее

  • ✅ Базовый RAG с ChromaDB

  • ⬜ Интеграция инструмента веб-поиска

  • ⬜ Интерфейс для загрузки PDF-документов

  • ⬜ Память агента (история диалогов)

  • ⬜ Мультимодальная поддержка (изображения, таблицы)

  • ⬜ Дообучение на специфических для домена данных

  • ⬜ Структурированный вывод (JSON-схемы)

  • ⬜ Потоковые ответы в реальном времени

Устранение неполадок

Ошибка "Connection refused" для Ollama

  • Убедитесь, что сервер Ollama запущен: ollama serve

  • Проверьте доступность: curl http://localhost:11434/api/tags

Ошибки эмбеддингов ChromaDB

  • Убедитесь, что установлен sentence-transformers: pip install sentence-transformers

  • При первом запуске скачивается модель эмбеддингов (~30 МБ)

Векторное хранилище не сохраняется

  • Проверьте, что директория ./vector_store/ существует и доступна для записи

  • Убедитесь, что persist_dir в конфигурации соответствует фактическому пути

Лицензия

Лицензия MIT — подробности см. в файле LICENSE

Вклад в проект

Мы приветствуем ваш вклад! Пожалуйста:

  1. Сделайте форк репозитория

  2. Создайте ветку для новой функции

  3. Зафиксируйте изменения

  4. Отправьте изменения и откройте pull request

Ссылки

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A FastAPI-based application that enables document embedding and semantic retrieval using Qdrant vector database, allowing users to convert documents into embeddings and retrieve relevant content through natural language queries.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides retrieval-augmented generation (RAG) capabilities by ingesting various document formats into a persistent ChromaDB vector store. It enables semantic search and retrieval using either OpenAI or Ollama embeddings for processing local files, directories, and URLs.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides token-efficient semantic search and document retrieval by indexing PDFs, text, and markdown files into local notebooks using ChromaDB. It enables AI agents to query relevant passages from large documents through local embedding models like Hugging Face or Ollama.
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A fully offline local RAG server that utilizes ChromaDB and Ollama to index and query PDF, text, and Markdown documents. It allows users to manage local knowledge bases and perform semantic searches with AI-generated responses.

View all related MCP servers

Related MCP Connectors

  • Persistent semantic memory for AI agents: store and recall text by meaning (RAG). x402

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

  • Long-term memory for AI assistants. Hybrid retrieval, query expansion, auto-topics.

View all MCP Connectors

Latest Blog Posts

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/EimanTahir027/MCP-powered-Agentic-RAG'

If you have feedback or need assistance with the MCP directory API, please join our Discord server