# ๐ Tax Alert Chatbot (MCP-Powered)
An interactive **Streamlit-based chatbot** that connects to a custom **MCP (Model Context Protocol)** server. It allows users to **query**, **insert**, **update**, and **delete** tax alerts stored in a local SQLite database. The app uses **LangGraphโs REACT agent framework** with **Google Gemini models** and supports both **SSE** and **STDIO** transport modes.
<img width="947" alt="image" src="https://github.com/user-attachments/assets/51b19e66-e780-4281-af02-b05e23690e1d" />
---
## ๐ Project Structure
```bash
.
โโโ client.py # Frontend Streamlit Chat UI
โโโ server.py # MCP tool & Backend FastMCP SQLite server
โโโ dummy_tax_alerts.db # SQLite database (if present)
โโโ .env # Environment variables
โโโ.venv # virtual environment
โโโ README.md # Documentation
```
---
## ๐ Features
- ๐ค Conversational interface with Google Gemini 1.5 models
- ๐ง REACT-style reasoning agent via LangGraph
- ๐ ๏ธ Tool execution via MCP server
- ๐ Query, insert, update, and delete operations on tax alert data
- ๐ Real-time responses using SSE or STDIO
---
## ๐ ๏ธ Tech Stack
| Layer | Tools / Frameworks |
|--------------|-----------------------------------------------------|
| Frontend | Streamlit, LangGraph, LangChain |
| Backend | FastMCP, SQLite |
| LLM Provider | Google Gemini 1.5 Flash / Pro (via LangChain) |
| Transport | SSE (Server-Sent Events) or STDIO |
| Runtime | Python 3.10+, venv, python-dotenv |
---
## โ๏ธ Setup Instructions
### 1. Clone the Repository
```bash
git clone https://github.com/your-repo/tax-alert-chatbot.git
cd tax-alert-chatbot
```
### 2. Create and Activate Virtual Environment
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
### 3. Install Dependencies
```bash
pip install -r requirements.txt
(Optional: Split into client/requirements.txt and server/requirements.txt if needed.)
```
### 4. Configure Environment Variables
Create a .env file in the root folder:
```bash
GOOGLE_API_KEY=your_google_api_key
ALERTS_DB=dummy_tax_alerts.db
```
## ๐๏ธ SQLite Schema
```bash
CREATE TABLE tax_alerts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT,
date TEXT,
jurisdiction TEXT,
topics TEXT,
summary TEXT,
full_text TEXT,
source_url TEXT,
tags TEXT,
created_at TIMESTAMP,
updated_at TIMESTAMP
);
```
## ๐ง MCP Server Tools
| Tool Name | Description |
|------------------|--------------------------------------------------|
| `query(sql)` | Run `SELECT` queries on the `tax_alerts` table |
| `insert(...)` | Insert a new tax alert into the database |
| `update(...)` | Update existing tax alerts based on a condition |
| `delete(...)` | Delete tax alerts using `WHERE` conditions |
| `schema_info()` | Return schema and column info of the table |
## โถ๏ธ Running the Server
```bash
python server.py
```
or
```bash
python server.py --transport stdio
```
Make sure your .env contains a valid path to dummy_tax_alerts.db.
## ๐ฌ Running the Client (Chat UI)
```bash
streamlit run client.py
```
It will automatically open streamlit localhost:8501 in your browser.
โ๏ธ Configuration (via Sidebar)
Gemini Model: Choose between gemini-1.5-flash or gemini-1.5-pro
Server Mode: Only single server supported
Server Type: SSE or STDIO
Server URL: Required only for SSE mode
Clear Chat / Show Tool Executions: Debug & reset tools
# ๐งช Sample Interaction
### User Input:
```bash
"Show me tax alerts from 2024 in California"
```
### Agent Response (Tool Call):
```bash
SELECT * FROM tax_alerts WHERE jurisdiction='California' AND date LIKE '2024%'
```
๐งผ Debugging & Notes
MCP server must be running before starting the client.
Full traceback is shown in the client if errors occur.
Ensure correct database path in .env.