Tax Alert Chatbot MCP Server
by Soham-bakshi
README.md
# π 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.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues