Tax Alert Chatbot MCP Server
π 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.
π Project Structure
.
βββ 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
git clone https://github.com/your-repo/tax-alert-chatbot.git
cd tax-alert-chatbot2. Create and Activate Virtual Environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate3. Install Dependencies
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:
GOOGLE_API_KEY=your_google_api_key
ALERTS_DB=dummy_tax_alerts.dbποΈ SQLite Schema
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 |
| Run |
| Insert a new tax alert into the database |
| Update existing tax alerts based on a condition |
| Delete tax alerts using |
| Return schema and column info of the table |
βΆοΈ Running the Server
python server.pyor
python server.py --transport stdioMake sure your .env contains a valid path to dummy_tax_alerts.db.
π¬ Running the Client (Chat UI)
streamlit run client.pyIt 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:
"Show me tax alerts from 2024 in California"Agent Response (Tool Call):
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.