Skip to main content
Glama
README.md
# Study Tools MCP šŸ“š

![Python](https://img.shields.io/badge/python-3.10+-blue.svg)
![FastAPI](https://img.shields.io/badge/FastAPI-latest-green.svg)
![MCP](https://img.shields.io/badge/MCP-Server-orange.svg)
![License](https://img.shields.io/badge/license-MIT-blue.svg)
[![CI/CD](https://github.com/francis-rf/study-Tools-mcp-server/actions/workflows/deploy.yml/badge.svg)](https://github.com/francis-rf/study-Tools-mcp-server/actions/workflows/deploy.yml)
[![Live Demo](https://img.shields.io/badge/Live%20Demo-AWS%20EC2-orange?logo=amazonaws)](http://3.210.199.248:8080/)

An AI-powered study assistant built with Model Context Protocol (MCP) that generates quizzes, flashcards, summaries, and concept explanations from your study materials.


## šŸŽÆ Features

- **Smart Summarization** — Generate concise summaries from study materials
- **Quiz Generation** — Create customizable quizzes with difficulty levels
- **Concept Explanation** — Get beginner/intermediate/advanced explanations
- **Flashcards** — Auto-generate flashcard decks from documents
- **Comparison Tool** — Compare and contrast multiple concepts
- **MCP Integration** — Works directly with Claude Desktop
- **Web UI** — Standalone chat interface with FastAPI backend

## šŸ› ļø Tech Stack

- **Backend**: FastAPI + Python 3.10
- **AI Framework**: Model Context Protocol (MCP)
- **AI**: OpenAI API
- **Document Parsing**: PyPDF2, pdfplumber, python-docx
- **Frontend**: Vanilla JavaScript, HTML, CSS
- **Cloud**: AWS EC2 + S3 + Secrets Manager
- **CI/CD**: GitHub Actions

## šŸš€ Quick Start

### Prerequisites

- Python 3.10+
- OpenAI API key

### Installation

1. Clone the repository:

```bash
git clone https://github.com/francis-rf/study-Tools-mcp-server.git
cd study-Tools-mcp-server
```

2. Install dependencies:

```bash
pip install -r requirements.txt
```

3. Create `.env` file:

```bash
cp .env.example .env
# Edit .env and add your OPENAI_API_KEY
```

4. Add study materials:

Place PDF or Markdown files in `data/notes/`:
```
data/notes/
ā”œā”€ā”€ Machine Learning.pdf
└── Your Notes.md
```

5. Run the application:

```bash
python app.py
```

6. Open browser:

`http://localhost:8080`

## 🐳 Docker Deployment

### Build and Run

```bash
docker build -t study-tools-mcp .
docker run -p 8080:8080 --env-file .env study-tools-mcp
```

## ā˜ļø AWS Deployment

### Services Used

| Service | Purpose |
|---------|---------|
| EC2 (t2.micro) | Hosts the Docker container |
| S3 (`study-tools-mcp-materials`) | Stores PDF study materials |
| Secrets Manager (`study-tools-mcp`) | Stores OpenAI API key |
| IAM Role | Grants EC2 access to S3 and Secrets Manager |

### Setup

1. Store OpenAI API key in **AWS Secrets Manager** under secret name `study-tools-mcp`
2. Upload PDFs to **S3** bucket `study-tools-mcp-materials`
3. Launch **EC2** instance with IAM role attached (`study-tools-mcp-ec2-role`)
4. SSH in, install Docker, clone repo and run container


## āš™ļø GitHub Actions CI/CD

Automated deployment is configured via `.github/workflows/deploy.yml`.

### Workflow: Deploy to AWS EC2

On every push to `main`, the pipeline:

1. **Checks out** the code
2. **SSHs** into the EC2 instance
3. **Pulls** latest code from GitHub
4. **Rebuilds** the Docker image
5. **Restarts** the container with zero downtime

### Required GitHub Secrets

| Secret | Description |
|--------|-------------|
| `EC2_HOST` | EC2 instance public IP |
| `EC2_USER` | `ubuntu` |
| `EC2_SSH_KEY` | Contents of the `.pem` key file |

### Workflow Status

[![Deploy to AWS EC2](https://github.com/francis-rf/study-Tools-mcp-server/actions/workflows/deploy.yml/badge.svg)](https://github.com/francis-rf/study-Tools-mcp-server/actions/workflows/deploy.yml)

## šŸ“ Project Structure

```
study-Tools-mcp-server/
ā”œā”€ā”€ app.py                          # FastAPI web application
ā”œā”€ā”€ src/study_tools_mcp/
│   ā”œā”€ā”€ server.py                   # MCP server entry point
│   ā”œā”€ā”€ config.py                   # Configuration (Secrets Manager + .env fallback)
│   ā”œā”€ā”€ tools/                      # Quiz, flashcards, summarizer, explainer
│   ā”œā”€ā”€ parsers/                    # PDF and Markdown parsers
│   └── utils/                      # Logger
ā”œā”€ā”€ static/                         # Frontend assets
ā”œā”€ā”€ templates/                      # HTML templates
ā”œā”€ā”€ data/notes/                     # Study materials (local only — S3 on AWS)
ā”œā”€ā”€ logs/                           # Application logs
ā”œā”€ā”€ .github/workflows/              # CI/CD
│   └── deploy.yml
ā”œā”€ā”€ Dockerfile
ā”œā”€ā”€ requirements.txt
└── pyproject.toml
```

## šŸ“” API Endpoints

| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/` | Web UI |
| GET | `/health` | Health check |
| GET | `/api/files` | List available study materials |
| POST | `/api/chat` | Chat with streaming |
| POST | `/api/chat/clear` | Clear conversation history |

## šŸ”Œ Claude Desktop Integration

Add to `%APPDATA%\Claude\claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "study-tools-mcp": {
      "command": "uv",
      "args": ["--directory", "C:\\path\\to\\study-tools-mcp", "run", "study-tools-mcp"]
    }
  }
}
```

Restart Claude Desktop — the tools will be available automatically.

## šŸ“ø Screenshots

![Application Interface](screenshots/image.png)
_Study Tool AI Interface with quiz generation_

![Claude Desktop Integration](screenshots/claude_image.png)
_Study Tool AI Integration with Claude Desktop_

## šŸ“„ License

MIT License

TDQS

B3.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: compare concepts, generate flashcards, create quizzes, explain topics, summarize chapters, and summarize topics. Even the two summarization tools are differentiated by scope (chapter vs. topic). Agents can easily select the appropriate tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., compare_two_concepts, create_flashcards). The naming convention is uniform and predictable across all tools.

Tool Count5/5

Six tools is an appropriate number for a study aid server, covering core actions like explanation, comparison, summary generation, flashcard creation, and quiz creation. The count is neither too thin nor too heavy.

Completeness4/5

The tool set covers essential study material generation tasks: explaining, comparing, summarizing, creating flashcards, and creating quizzes. A minor gap is the lack of tools to manage or edit generated items, but this is acceptable for a generation-focused server.

Maintenance

ActivityInactive
ResponsivenessNo issues