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 installed
Maintenance
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
- 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.
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.
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/EimanTahir027/MCP-powered-Agentic-RAG'
If you have feedback or need assistance with the MCP directory API, please join our Discord server