Agentic RAG MCP Server
Агентная 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/activate2. Установка зависимостей
pip install -U pip
pip install -r requirements.txt3. Настройка 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Это действие:
Загрузит примеры документов в векторное хранилище
Запустит интерактивный чат, где вы сможете задавать вопросы
Агент извлечет релевантные документы и сгенерирует ответы
Пример взаимодействия:
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
Вклад в проект
Мы приветствуем ваш вклад! Пожалуйста:
Сделайте форк репозитория
Создайте ветку для новой функции
Зафиксируйте изменения
Отправьте изменения и откройте pull request
Ссылки
This server cannot be deployed
Maintenance
Related MCP Connectors
Ingest, manage, and retrieve documents for RAG-powered AI applications
Universal persistent memory and knowledge retrieval layer for AI agents and LLMs.
LLM Orchestration Agent (Opentelemetry Instrumentation Fastapi)
Memory system for AI agents with semantic search. Store and recall memories with ease.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseNot gradedqualityDmaintenanceProvides 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.1MIT
- AlicenseNot gradedqualityDmaintenanceProvides 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.1MIT
- FlicenseNot gradedqualityDmaintenanceA 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.-