Document Assistant
Enables natural language search and analysis of uploaded PDF, CSV, and Excel documents using retrieval-augmented generation and MCP tools, providing contextual answers to user queries.
README
๐ค AI Document Scanner Using RAG & MCP Tools with Python
An intelligent AI Document Scanner and Assistant built with Python that allows users to upload documents, search their contents, and ask questions using Retrieval-Augmented Generation (RAG) and Model Context Protocol (MCP) tools.
The application combines document processing, text chunking, vector embeddings, FAISS similarity search, MCP tools, and Large Language Models (LLMs) to provide contextual answers from uploaded documents.
๐ Project Overview
Traditional document search often depends on exact keyword matching. This project uses semantic search through vector embeddings, allowing users to ask questions naturally.
The system:
- Accepts documents from the user.
- Extracts text from the documents.
- Splits the text into smaller chunks.
- Converts chunks into vector embeddings.
- Stores embeddings in a FAISS vector database.
- Retrieves relevant chunks when the user asks a question.
- Uses an LLM to generate an answer based on the retrieved context.
- Uses MCP tools to expose document search and analysis capabilities to an AI agent.
โจ Features
- ๐ PDF document processing
- ๐ CSV and Excel data analysis
- ๐ Semantic document search
- ๐ง Retrieval-Augmented Generation (RAG)
- ๐๏ธ FAISS vector database
- ๐ค LLM-powered question answering
- ๐ Model Context Protocol (MCP) tool integration
- ๐ฌ Interactive document chat
- ๐ Streamlit web interface
- ๐ Document chunking and embeddings
- ๐ Context-aware information retrieval
- ๐งฉ Modular project architecture
- ๐ Environment-variable based API key configuration
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโ
โ User โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ Streamlit UI โ
โ app.py โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ Document Loader โ
โ PDF / CSV / Excel โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ Text Splitting & โ
โ Preprocessing โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ Embedding Model โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ FAISS Vector Store โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
User Question
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ Semantic Retrieval โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Tools โ
โ PDF / CSV / Excel โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ RAG Pipeline โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ LLM โ
โ Gemini / Other LLM โ
โโโโโโโโโโโโฌโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ AI Response โ
โโโโโโโโโโโโโโโโโโโโโโโ
๐ RAG Workflow
1. Document Loading
Documents are loaded using appropriate Python libraries.
- PDF โ
PyPDF - Excel โ
Pandas/OpenPyXL - CSV โ
Pandas
2. Text Splitting
Large documents are divided into smaller chunks using a text splitter. This improves retrieval accuracy and keeps prompts manageable.
3. Embeddings
Each text chunk is converted into a numerical vector representing its semantic meaning.
Document Text
|
v
Embedding Model
|
v
Numerical Vector
4. Vector Storage
The generated vectors are stored in FAISS, enabling efficient similarity-based retrieval.
5. Semantic Search
When the user asks a question, the question is converted into an embedding and compared against stored document vectors. The most relevant chunks are retrieved.
6. Response Generation
The retrieved context is passed to the LLM along with the user's question. The model generates an answer based on the retrieved information.
๐ MCP Integration
The project uses Model Context Protocol (MCP) to expose document-related functionality as tools that an AI agent can call.
Example MCP Tools
search_pdf(question)
find_employee(name)
analyze_csv(question)
This allows an AI system to retrieve information from documents or analyze structured data when required.
Example MCP Workflow
User
|
v
"Find the details of Manoj Sarkar."
|
v
AI Agent
|
v
MCP Tool
find_employee("Manoj Sarkar")
|
v
Vector / Document Search
|
v
Relevant Information
|
v
LLM
|
v
Final Answer
๐ ๏ธ Technologies Used
| Technology | Purpose |
|---|---|
| Python | Core programming language |
| Streamlit | Web application interface |
| LangChain | RAG and document processing |
| FAISS | Vector similarity search |
| MCP | AI tool integration |
| Google Gemini | Large Language Model |
| PyPDF | PDF text extraction |
| Pandas | Data processing |
| OpenPyXL | Excel file processing |
| Vector Embeddings | Semantic representation |
| python-dotenv | Environment variable management |
๐ Project Structure
AI-Document-Scanner/
โ
โโโ app.py
โโโ server.py
โโโ client.py
โโโ requirements.txt
โโโ README.md
โ
โโโ assistants/
โ โโโ pdf_assistant.py
โ โโโ excel_assistant.py
โ โโโ csv_assistant.py
โ โโโ docx_assistant.py
โ
โโโ utils/
โ โโโ loaders.py
โ โโโ splitter.py
โ โโโ vectorstore.py
โ โโโ rag_pipeline.py
โ โโโ llm_provider.py
โ โโโ prompts.py
โ
โโโ mcp_tools/
โ โโโ pdf_tool.py
โ โโโ rag_tool.py
โ โโโ excel_tool.py
โ โโโ csv_tool.py
โ
โโโ data/
โ โโโ sample_documents/
โ
โโโ .env
The exact files and folders may vary depending on the current implementation.
โ๏ธ Installation
1. Clone the Repository
git clone https://github.com/your-username/AI-Document-Scanner.git
cd AI-Document-Scanner
2. Create a Virtual Environment
Windows
python -m venv venv
venv\Scripts\activate
Linux/macOS
python3 -m venv venv
source venv/bin/activate
3. Install Dependencies
pip install -r requirements.txt
๐ Environment Variables
Create a .env file in the project root.
Google Gemini
GOOGLE_API_KEY=your_google_api_key
If your implementation also supports OpenAI:
OPENAI_API_KEY=your_openai_api_key
Important: Never commit your
.envfile or API keys to GitHub.
Add the following to .gitignore:
.env
venv/
__pycache__/
*.pyc
.faiss/
โถ๏ธ Running the Application
Start the Streamlit application:
streamlit run app.py
Then open the application in your browser:
http://localhost:8501
๐ก Example Questions
After uploading a document, users can ask questions such as:
What is this document about?
Summarize the document.
Who is Manoj Sarkar?
Find the employee with the highest sales.
What is the total revenue?
What are the main points discussed in the document?
Find information related to a specific topic.
๐งช Example RAG Pipeline
documents = load_documents(file_path)
chunks = split_documents(documents)
vectorstore = create_vectorstore(chunks)
results = vectorstore.similarity_search(query, k=4)
context = "\n".join(
document.page_content
for document in results
)
response = llm.invoke(
f"""
Answer the question using the following context:
{context}
Question:
{query}
"""
)
๐ Example MCP Tool
A simplified MCP tool can look like:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Document Assistant")
@mcp.tool()
def search_pdf(question: str) -> str:
"""Search the uploaded PDF and return relevant information."""
# Vector search implementation
return "Relevant document information"
The MCP server exposes this functionality so that an AI client or agent can use it when required.
๐ฏ Use Cases
This project can be useful for:
- ๐ Research document assistants
- ๐ข Company knowledge bases
- ๐ Legal document search
- ๐ Educational document analysis
- ๐จโ๐ผ HR document assistants
- ๐ Business report analysis
- ๐งพ Invoice and report processing
- ๐ Policy and documentation search
- ๐ค AI-powered knowledge management systems
๐ Future Enhancements
- [ ] Multi-document conversational memory
- [ ] DOCX support
- [ ] Image document scanning
- [ ] OCR integration
- [ ] Voice input
- [ ] Source/page citations
- [ ] Chat history
- [ ] User authentication
- [ ] Multi-user support
- [ ] Cloud deployment
- [ ] Advanced agentic workflows
- [ ] Additional MCP tools
- [ ] Database integration
- [ ] Document summarization
- [ ] Hybrid keyword + semantic search
- [ ] Reranking for improved retrieval accuracy
๐ Security
For security:
- Store API keys in
.env. - Never upload API keys to GitHub.
- Add
.envto.gitignore. - Avoid storing sensitive documents in public repositories.
- Validate uploaded files before processing.
๐ง Key Concepts Demonstrated
This project demonstrates practical knowledge of:
- Python
- Generative AI
- Large Language Models
- Retrieval-Augmented Generation
- Vector Databases
- Semantic Search
- Embeddings
- LangChain
- FAISS
- Model Context Protocol
- AI Agents
- Streamlit
- Document Processing
- API Integration
๐จโ๐ป Author
Manoj Sarkar
B.Tech in Computer Science & Engineering
Interested in Python, Generative AI, Agentic AI, RAG, MCP, and AI-powered applications.
โญ Support
If you find this project useful, consider giving the repository a โญ on GitHub.
๐ License
This project is intended for educational and development purposes. Add an appropriate license file if you plan to distribute or reuse the project publicly.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.