
RAG Database MCP Server
Enables AI assistants to search and query PDF documents through a local RAG system with vector embeddings. Provides semantic document search capabilities while keeping all data stored locally without external dependencies.
README
RAG Database with Model Context Protocol (MCP) Server
A comprehensive Retrieval-Augmented Generation (RAG) system that integrates with AI assistants like Claude, ChatGPT, and Gemini through the Model Context Protocol (MCP). This system allows you to ingest PDF documents, create vector embeddings, and query your document collection using natural language.
🎯 Overview
This RAG system consists of three main components:
- Document Ingestion Pipeline - Extracts text from PDFs and creates vector embeddings
- Vector Database - Local ChromaDB storage with persistent file-based storage
- MCP Server - Exposes the RAG database through standardized tools for AI assistants
Key Features
- 📄 PDF Document Processing - Automatic text extraction and chunking
- 🔍 Semantic Search - Vector similarity search using embeddings
- 🤖 AI Assistant Integration - Works with Claude Desktop, ChatGPT, and other MCP-compatible clients
- 💾 Local Storage - All data stored locally, no external dependencies
- ⚡ Fast Performance - Persistent API server keeps models loaded
- 🔧 Easy Setup - Automated installation and configuration scripts
🚀 Quick Start
Prerequisites
- Python 3.8+
- 4GB+ RAM (for embedding models)
- macOS, Linux, or Windows
1. Initial Setup
# Clone the repository
git clone <repository-url>
cd RAG-MCP-HCSRL
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Run automated setup (installs dependencies, creates directories, tests functionality)
python setup.py
2. Initialize Database
# Initialize ChromaDB
python init_chroma.py
3. Add Documents
# Create documents directory and add your PDF files
mkdir -p documents
# Copy your PDF files to the documents/ directory
# Ingest PDFs into the database
python ingest_pdfs.py --input-dir ./documents
4. Start the System
# Terminal 1: Start the RAG API server (keeps models loaded)
source venv/bin/activate
python rag_api_server.py --port 8000
# Terminal 2: Test the system
python tests/test_rag_query.py --query "your search query here"
🔧 AI Assistant Integration
Claude Desktop Integration
Claude Desktop uses the MCP protocol to connect to your RAG database.
Configuration
- Configure Claude Desktop MCP Settings
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or equivalent on other platforms:
{
"mcpServers": {
"rag-server": {
"command": "python",
"args": ["/full/path/to/RAG-MCP-HCSRL/rag_mcp_server.py"],
"cwd": "/full/path/to/RAG-MCP-HCSRL",
"env": {
"PATH": "/full/path/to/RAG-MCP-HCSRL/venv/bin:/usr/bin:/bin"
}
}
}
}
- Start Required Services
# Start the RAG API server first
source venv/bin/activate && python rag_api_server.py --port 8000
- Restart Claude Desktop
The MCP server will automatically start when Claude Desktop launches.
Usage in Claude Desktop
Once configured, you can ask Claude to search your documents:
Search my documents for information about protein folding
Find papers related to machine learning in my database
What does my collection say about renewable energy?
ChatGPT Integration
ChatGPT can access your RAG system through API calls or custom GPT actions.
Option 1: API Integration
# Start the RAG API server
python rag_api_server.py --host 0.0.0.0 --port 8000
# ChatGPT can then make HTTP requests to your server
# POST http://your-server:8000/search
# Body: {"query": "search terms", "top_k": 5}
Option 2: Custom GPT Actions
Create a custom GPT with these action definitions:
openapi: 3.0.1
info:
title: RAG Document Search
version: 1.0.0
servers:
- url: http://your-server:8000
paths:
/search:
post:
summary: Search documents
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: Search query
top_k:
type: integer
description: Number of results
responses:
'200':
description: Search results
Google Gemini Integration
Gemini can integrate through function calling or extensions.
Function Calling Setup
# Example Gemini function definition
search_documents_function = {
"name": "search_documents",
"description": "Search RAG document database",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Search query"},
"top_k": {"type": "integer", "description": "Number of results"}
},
"required": ["query"]
}
}
📁 System Architecture
RAG-MCP-HCSRL/
├── README.md # This file
├── CLAUDE.md # Project instructions for Claude
├── requirements.txt # Python dependencies
├── setup.py # System setup and verification
├── init_chroma.py # Database initialization
├── chroma_db.py # Core database manager
├── ingest_pdfs.py # PDF ingestion pipeline
├── rag_api_server.py # Persistent API server
├── rag_mcp_server.py # MCP protocol server
├── documents/ # PDF documents directory
├── chroma_db/ # ChromaDB storage (created automatically)
├── tests/ # Test scripts
│ ├── test_rag_query.py # RAG query testing
│ └── test_chroma_db.py # Database testing
└── venv/ # Virtual environment
🛠️ Detailed Setup Guide
Manual Installation
If the automated setup doesn't work, follow these manual steps:
# 1. Create virtual environment
python3 -m venv venv
source venv/bin/activate
# 2. Install dependencies
pip install -U sentence-transformers
pip install torch torchvision torchaudio
pip install chromadb python-dotenv
pip install fastapi uvicorn "mcp[cli]"
pip install pypdf2 pymupdf python-multipart
pip install httpx numpy pandas tqdm nltk
# 3. Create directories
mkdir -p chroma_db documents
# 4. Initialize database
python init_chroma.py
# 5. Test installation
python tests/test_chroma_db.py
Environment Configuration
Create a .env
file for custom configuration:
# .env file
CHROMA_PERSIST_DIR=./chroma_db
COLLECTION_NAME=pdf_documents
API_PORT=8000
API_HOST=127.0.0.1
LOG_LEVEL=INFO
📊 Usage Examples
Command Line Usage
# Search documents
python tests/test_rag_query.py --query "machine learning applications"
# Get collection statistics
python -c "
from tests.test_rag_query import RAGQuerySystem
rag = RAGQuerySystem()
print(rag.get_collection_stats())
"
# Ingest new documents
python ingest_pdfs.py --input-dir ./new_documents --chunk-size 1000
API Usage
# Health check
curl http://localhost:8000/health
# Search documents
curl -X POST "http://localhost:8000/search" \
-H "Content-Type: application/json" \
-d '{"query": "protein folding", "top_k": 3}'
# Get statistics
curl http://localhost:8000/stats
MCP Tools Available
When connected through MCP, these tools are available:
search_documents
- Search the document databaseget_collection_stats
- Get database statisticshealth_check
- Check system health
⚙️ Configuration Options
Database Configuration
# Custom database location
python init_chroma.py --chroma-dir ./custom_db
# Custom collection name
python init_chroma.py --collection-name research_papers
# Reset database
python init_chroma.py --reset
API Server Configuration
# Custom host and port
python rag_api_server.py --host 0.0.0.0 --port 8080
# Verbose logging
python rag_api_server.py --verbose
# Custom database location
python rag_api_server.py --chroma-dir ./custom_db
Document Ingestion Options
# Custom chunk size
python ingest_pdfs.py --input-dir ./docs --chunk-size 500
# Process specific files
python ingest_pdfs.py --input-file ./document.pdf
# Skip existing documents
python ingest_pdfs.py --input-dir ./docs --skip-existing
🔍 Troubleshooting
Common Issues
1. "ChromaDB directory not found"
python init_chroma.py # Initialize the database first
2. "RAG API returned status 500"
# Restart the API server
pkill -f rag_api_server.py
python rag_api_server.py --port 8000
3. "Module not found" errors
# Reinstall dependencies
pip install -r requirements.txt
4. MCP connection issues
# Check Claude Desktop config file path and syntax
# Ensure full absolute paths are used
# Restart Claude Desktop after config changes
Performance Optimization
For better performance:
-
Use GPU acceleration (if available):
# Install CUDA-compatible PyTorch pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
-
Increase chunk size for longer documents:
python ingest_pdfs.py --chunk-size 1500
-
Keep API server running to avoid model loading delays
📈 System Monitoring
Health Checks
# Check system health
curl http://localhost:8000/health
# Monitor logs
tail -f rag_api_server.log
# Database statistics
python -c "
from chroma_db import ChromaDBManager
db = ChromaDBManager()
db.initialize_db()
print(db.get_collection_stats())
"
Performance Metrics
- First search: ~7 seconds (includes model loading)
- Subsequent searches: ~30ms
- Memory usage: ~2-4GB (with models loaded)
- Storage: ~1MB per 100 pages of documents
🔒 Security Considerations
- Local storage only - No data sent to external services
- Network access - API server runs on localhost by default
- File permissions - Ensure proper access controls on document directory
- API security - Consider authentication for production deployments
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
📄 License
[Specify your license here]
🆘 Support
For issues and questions:
- Check the troubleshooting section above
- Review the logs for error messages
- Create an issue in the repository
- Include system information and error logs
🔄 Updates and Maintenance
Updating the System
# Pull latest changes
git pull origin main
# Update dependencies
pip install -r requirements.txt --upgrade
# Restart services
pkill -f rag_api_server.py
python rag_api_server.py --port 8000
Backup and Restore
# Backup database
tar -czf chroma_backup.tar.gz chroma_db/
# Restore database
tar -xzf chroma_backup.tar.gz
Note: This system is designed for local use and development. For production deployments, consider additional security measures, monitoring, and scaling configurations.
推荐服务器

Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。