Skip to main content
Glama

Sistema RAG Agéntico basado en MCP

Un sistema local y modular de Generación Aumentada por Recuperación (RAG) que utiliza el Protocolo de Contexto de Modelo (MCP) para conectar un LLM a herramientas externas como bases de datos vectoriales y cargadores de documentos.

Descripción general

Este proyecto implementa un sistema RAG agéntico que:

  • Recupera documentos relevantes de una base de datos vectorial local (ChromaDB)

  • Aumenta los prompts con el contexto recuperado

  • Genera respuestas informadas utilizando un LLM local (Ollama)

  • Expone la funcionalidad a través de una API REST con FastAPI

Related MCP server: MCP RAG with ChromaDB

Stack tecnológico

Componente

Herramienta/Biblioteca

Detalles

Modelo de lenguaje

Ollama

Inferencia de LLM local (mistral, llama3, etc.)

Framework de agente

mcp + FastAPI

Servidor API con registro de herramientas

Pipeline RAG

LangChain + Personalizado

Recuperación de contexto e ingeniería de prompts

Almacén vectorial

ChromaDB

Base de datos vectorial local y persistente

Embeddings

SentenceTransformers

Modelo all-MiniLM-L6-v2

Gestión de archivos

pypdf, python-docx

Carga de PDF y documentos

Frontend (Opcional)

Streamlit

Interfaz web interactiva

Entorno

Python 3.10+

virtualenv o Conda

Estructura del proyecto

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

Instalación y configuración

1. Clonar y crear entorno virtual

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

# On Windows
.venv\Scripts\activate

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

2. Instalar dependencias

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

3. Configurar Ollama

Descargue e instale Ollama desde el sitio web oficial.

Inicie el servidor de Ollama:

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

En otra terminal, descargue un modelo:

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

Verifique que el servidor esté ejecutándose:

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

Ejecución del sistema

Opción 1: Interfaz de chat (interactiva)

Ejecute el bucle de chat interactivo:

python rag_agent.py

Esto hará lo siguiente:

  1. Cargar documentos de muestra en el almacén vectorial

  2. Iniciar un chat interactivo donde puede hacer preguntas

  3. El agente recuperará documentos relevantes y generará respuestas

Ejemplo de interacción:

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]

Opción 2: Servidor API

Inicie el servidor MCP de FastAPI:

python main.py

El servidor estará disponible en: http://localhost:8000

Endpoints de la API

Comprobación de estado (Health Check)

GET /health

Agente de consulta

POST /query
Content-Type: application/json

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

Buscar documentos

POST /search
Content-Type: application/json

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

Añadir documentos

POST /documents
Content-Type: application/json

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

Obtener estadísticas

GET /stats

Ejemplos de uso en 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")

Configuración

Edite mcp_config.yaml para personalizar:

  • Configuración del LLM: Modelo, temperatura, tokens máximos

  • Almacén vectorial: Modelo de embedding, nombre de la colección

  • RAG: Número de documentos recuperados, métrica de similitud

  • Servidor: Host, puerto, nivel de registro

  • Seguridad: Límites de tasa de API, autenticación

Añadir documentos personalizados

Programáticamente

from tools.chromadb_tool import ChromaTool

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

Vía API

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

Frontend opcional con Streamlit

Cree 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]}...")

Ejecute Streamlit:

streamlit run streamlit_app.py

Extensiones y trabajo futuro

  • ✅ RAG básico con ChromaDB

  • ⬜ Integración de herramienta de búsqueda web

  • ⬜ Interfaz de usuario para ingesta de documentos PDF

  • ⬜ Memoria del agente (historial de conversación)

  • ⬜ Soporte multimodal (imágenes, tablas)

  • ⬜ Ajuste fino (fine-tuning) con datos específicos del dominio

  • ⬜ Salida estructurada (esquemas JSON)

  • ⬜ Respuestas en streaming en tiempo real

Solución de problemas

"Connection refused" para Ollama

  • Asegúrese de que el servidor de Ollama esté ejecutándose: ollama serve

  • Compruebe que sea accesible: curl http://localhost:11434/api/tags

Errores de embedding en ChromaDB

  • Asegúrese de que sentence-transformers esté instalado: pip install sentence-transformers

  • La primera ejecución descarga el modelo de embeddings (~30MB)

El almacén vectorial no persiste

  • Compruebe que el directorio ./vector_store/ existe y tiene permisos de escritura

  • Verifique que persist_dir en la configuración coincida con la ruta real

Licencia

Licencia MIT - Consulte el archivo LICENSE para obtener más detalles

Contribución

¡Las contribuciones son bienvenidas! Por favor:

  1. Haga un fork del repositorio

  2. Cree una rama de funcionalidad

  3. Confirme los cambios

  4. Envíe un pull request

Referencias

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