Skip to main content
Glama
README.md
# MCP File Reader
A fully local, free AI-powered file reader that uses **MCP (Model Context Protocol)** to connect a Python tool server with a local LLM (Ollama + Mistral). No API keys, no cloud, no cost โ€” runs entirely on your machine.

## ๐Ÿงพ Features
- MCP Server with custom tools (`list_files`, `read_file`)
- Local LLM integration via Ollama (Mistral / Llama3.2)
- Automatic file discovery and content reading
- AI-powered summarization of file contents
- Path traversal protection (security built-in)
- Zero cost โ€” no API keys or subscriptions required

## ๐Ÿ› ๏ธ Tech Stack

| Technology | Description                              |
|------------|------------------------------------------|
| Python     | Core language for server and client      |
| MCP        | Model Context Protocol (tool server)     |
| Ollama     | Local LLM runtime (free, offline)        |
| Mistral    | Local AI model for summarization         |
| asyncio    | Async communication between client/server|
| requests   | HTTP calls to Ollama API                 |

## ๐Ÿ“ฆ Installation

```bash
git clone https://github.com/JaneKarunyaJ/MCP-File-Reader.git
cd MCP-File-Reader
pip install mcp requests
```

Install Ollama from [https://ollama.com](https://ollama.com), then pull the model:

```bash
ollama pull mistral
```

## ๐Ÿš€ Usage

Make sure Ollama is running (it starts automatically after installation), then:

```bash
python client.py
```

The client will:
1. Launch the MCP server as a subprocess
2. Call `list_files` to discover files in `my_files/`
3. Call `read_file` for each file found
4. Send the real content to Mistral for summarization

## ๐Ÿ“ Project Structure

```
MCP-File-Reader/
โ”‚
โ”œโ”€โ”€ server.py          # MCP server โ€” exposes list_files and read_file tools
โ”œโ”€โ”€ client.py          # MCP client โ€” calls tools and queries Ollama
โ”œโ”€โ”€ requirements.txt   # Python dependencies
โ””โ”€โ”€ my_files/          # Folder the AI is allowed to read
    โ”œโ”€โ”€ project_ideas.txt
    โ””โ”€โ”€ wishlist.txt
```

## ๐Ÿ” Security

- The MCP server only allows reads from the `my_files/` directory
- Path traversal attacks (e.g. `../../etc/passwd`) are automatically blocked
- No data leaves your machine โ€” fully offline after setup

## ๐Ÿง  How It Works

```
client.py
   โ”‚
   โ”œโ”€โ”€ Step 1: Calls MCP tool โ†’ list_files()
   โ”‚              โ†“
   โ”‚         Returns filenames from my_files/
   โ”‚
   โ”œโ”€โ”€ Step 2: Calls MCP tool โ†’ read_file(filename)
   โ”‚              โ†“
   โ”‚         Returns actual file contents
   โ”‚
   โ””โ”€โ”€ Step 3: Sends real content to Ollama (Mistral)
                  โ†“
             Returns AI summary
```

## โž• Extending the Project

- **Add your own files**: Drop any `.txt` file into `my_files/` and run again
- **Add new tools**: Add a new tool handler in `server.py` (e.g. `search_in_file`, `write_file`)
- **Change the question**: Edit `user_question` in `client.py` to ask anything about your files
- **Swap the model**: Change `MODEL = "mistral"` in `client.py` to any model you have pulled in Ollama

## ๐Ÿ“‹ Requirements

- Python 3.9+
- Ollama installed ([ollama.com](https://ollama.com))
- Mistral model pulled (`ollama pull mistral`)
- `mcp` and `requests` Python packages