Agentic RAG MCP Server
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 implementationInstalació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/activate2. Instalar dependencias
pip install -U pip
pip install -r requirements.txt3. 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 serveEn otra terminal, descargue un modelo:
ollama pull mistral # Recommended for RAG
# or
ollama pull llama3Verifique que el servidor esté ejecutándose:
curl http://localhost:11434/api/tagsEjecución del sistema
Opción 1: Interfaz de chat (interactiva)
Ejecute el bucle de chat interactivo:
python rag_agent.pyEsto hará lo siguiente:
Cargar documentos de muestra en el almacén vectorial
Iniciar un chat interactivo donde puede hacer preguntas
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.pyEl servidor estará disponible en: http://localhost:8000
Endpoints de la API
Comprobación de estado (Health Check)
GET /healthAgente 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 /statsEjemplos 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.pyExtensiones 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 serveCompruebe 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-transformersLa 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 escrituraVerifique que
persist_diren 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:
Haga un fork del repositorio
Cree una rama de funcionalidad
Confirme los cambios
Envíe un pull request
Referencias
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