Expenses Tracker MCP Server Client
FreeNot checkedExpenses Tracker MCP Server Client — Model Context Protocol server
About
Expenses Tracker MCP Server Client — Model Context Protocol server
README
A modern expense tracking system built with FastMCP 2.0 and Streamlit, featuring Google Gemini 2.5 Flash AI integration for intelligent natural language expense processing.
✨ Features
🏦 MCP Server (FastMCP 2.0)
- Modern MCP Implementation: Latest FastMCP 2.0 with HTTP transport
- SQLite Database: Robust local storage with proper indexing
- Smart Categories: Predefined categories with intelligent subcategory mapping
- Date Range Filtering: Flexible date-based expense queries
- Currency Support: Native support for Indian Rupees (₹)
- AI-Powered Analysis: Gemini integration for expense insights
🤖 AI Integration (Google Gemini 2.5 Flash)
- Natural Language Processing: Parse expenses like "I spent 250 rupees on breakfast today"
- Smart Date Recognition: Understands "today", "yesterday", "last week", "this month"
- Intelligent Categorization: Auto-categorizes expenses from context
- Conversational Interface: Chat-style interaction for expense management
- Context-Aware Responses: AI responses based on your actual expense data
💻 Streamlit Web Client
- Modern Chat Interface: WhatsApp-style conversation UI
- Real-time Processing: Instant expense entry and retrieval
- Dynamic Date Calculations: Automatic date range calculations
- LangGraph Agent: Advanced AI agent with tool orchestration
- Error Handling: Robust error handling with user-friendly messages
🎯 Smart Features
- Week Calculation: Proper Monday-to-Sunday week definitions
- Table Formatting: Beautiful expense tables with category breakdowns
- Quick Commands: Sidebar with example queries
- Session Persistence: Chat history maintained across interactions
🚀 Quick Start
1. Prerequisites
# Ensure you have Python 3.11+ installed
python --version
# Create virtual environment (recommended)
python -m venv .venv
# Activate virtual environment
# Windows:
.\.venv\Scripts\Activate.ps1
# Linux/Mac:
source .venv/bin/activate
2. Installation
# Install dependencies using uv (faster) or pip
uv pip install -r requirements.txt
# OR
pip install -r requirements.txt
3. Configuration
# Set your Google Gemini API key
# Get your key from: https://aistudio.google.com/app/apikey
set GOOGLE_API_KEY=your_actual_api_key_here
# OR Linux/Mac:
export GOOGLE_API_KEY=your_actual_api_key_here
4. Start the System
# Terminal 1: Start MCP Server
python server.py
# Terminal 2: Start Streamlit Client (in virtual environment)
.\.venv\Scripts\Activate.ps1
streamlit run client.py
5. Access the Applications
- Streamlit Chat Interface: http://localhost:8501
- MCP Server: http://localhost:8000/mcp (for other MCP clients)
📖 Usage Guide
Streamlit Chat Interface
Natural Language Expense Entry:
"I spent 250 rupees on breakfast today" "Add ₹500 for groceries yesterday" "Paid ₹2000 for cab to native place on Oct 3"Smart Date Queries:
"Show my expenses for last 10 days" "Summarize all my transactions for this week" "What did I spend this month?" "List expenses from last 30 days in tabular fashion"Category Analysis:
"Analyze my spending patterns" "Show category breakdown for food expenses" "How much did I spend on transport?"Conversational Interface:
- Type naturally in the chat box
- Get instant responses with formatted tables
- View category breakdowns and totals
- Historical context maintained in chat
Example Interactions
Adding an Expense:
User: "I spent 150 rupees on cab fare today"
Assistant: ✅ Added expense: ₹150 for transport (cab) on 2025-10-07
Viewing Expenses:
User: "Show my last 7 days expenses"
Assistant: [Displays formatted table with 7 days of transactions]
Direct MCP Client Usage
Connect to the MCP server directly:
import asyncio
from fastmcp import Client
async def main():
async with Client("http://localhost:8000/mcp") as client:
# Add an expense
result = await client.call_tool("add_expense", {
"date": "2025-10-07",
"amount": 250.0,
"category": "food",
"subcategory": "breakfast",
"note": "Morning breakfast"
})
# List expenses for date range
result = await client.call_tool("list_expenses", {
"start_date": "2025-09-27",
"end_date": "2025-10-07"
})
# Get expense summary
result = await client.call_tool("get_expense_summary", {})
# AI analysis
result = await client.call_tool("analyze_expenses_with_ai", {
"query": "What are my spending patterns this month?"
})
asyncio.run(main())
🛠️ MCP Integration
FastMCP 2.0 Server
The system runs as a complete MCP server using FastMCP 2.0 with HTTP transport:
# The server runs automatically when you start server.py
# Accessible at: http://localhost:8000/mcp
Available MCP Tools
add_expense(date, amount, category, subcategory, note): Add new expense with validationlist_expenses(start_date?, end_date?, category?): List expenses with optional filteringget_expense_summary(start_date?, end_date?, category?): Get category summaries and totalsdelete_expense(expense_id): Remove expense by IDanalyze_expenses_with_ai(query): AI-powered expense analysis using Gemini
Tool Examples
# Add expense
await client.call_tool("add_expense", {
"date": "2025-10-07",
"amount": 250.0,
"category": "food",
"subcategory": "breakfast",
"note": "Breakfast at cafe"
})
# List last 10 days
await client.call_tool("list_expenses", {
"start_date": "2025-09-27",
"end_date": "2025-10-07"
})
# Get summary for current month
await client.call_tool("get_expense_summary", {
"start_date": "2025-10-01",
"end_date": "2025-10-07"
})
📁 Project Structure
MCP/
├── server.py # FastMCP 2.0 server with expense tools
├── client.py # Streamlit chat interface with LangGraph agent
├── uv.lock # Dependency lock file
├── data/
│ ├── expenses.db # SQLite database with expenses
│ └── categories.json # Category definitions
├── pyproject.toml # Python dependencies and project metadata
└── README.md
🔧 Configuration
Environment Variables
# Required for AI features
GOOGLE_API_KEY=your_gemini_api_key_here
# Optional: Custom MCP server URL for client
EXPENSE_MCP_URL=http://localhost:8000/mcp
Categories System
The system uses a hierarchical category structure defined in data/categories.json:
{
"categories": {
"food": ["groceries", "dining", "breakfast", "lunch", "dinner"],
"transport": ["cab", "bus", "train", "fuel", "public_transport"],
"shopping": ["clothing", "electronics", "household"],
"healthcare": ["medical", "pharmacy", "fitness"],
"utilities": ["electricity", "water", "internet", "phone"],
"entertainment": ["movies", "games", "books"],
"education": ["courses", "materials", "books"],
"housing": ["rent", "maintenance", "utilities"],
"other": ["miscellaneous"]
}
}
Smart Categorization
The AI automatically maps natural language to categories:
- "breakfast", "lunch", "dinner" →
food - "cab", "taxi", "uber", "bus" →
transport - "medicine", "doctor", "pharmacy" →
healthcare
🚦 Running Options
Standard Setup (Recommended)
# Terminal 1: MCP Server
python server.py
# Terminal 2: Streamlit Client (ensure virtual environment is active)
.\.venv\Scripts\Activate.ps1
streamlit run client.py
Development Mode
# Run server with debug output
python server.py --debug
# Run Streamlit on custom port
streamlit run client.py --server.port 8502
🔍 MCP Server Endpoints
MCP Protocol
POST /mcp- Main MCP endpoint for tool callsGET /mcp- MCP capabilities and tool listings
Available Tools via MCP
- add_expense - Add new expense entry
- list_expenses - List expenses with optional date/category filters
- get_expense_summary - Get aggregated expense summaries
- delete_expense - Remove expense by ID
- analyze_expenses_with_ai - AI-powered expense analysis
Health Check
- Server runs on
http://localhost:8000 - MCP endpoint:
http://localhost:8000/mcp
🧠 AI Features (Google Gemini 2.5 Flash)
Natural Language Processing
Transform conversational text into structured expense data:
- Input: "I spent 250 rupees on breakfast today"
- Processing: Extracts amount (250), category (food), subcategory (breakfast), date (today)
- Output: Structured expense entry with ₹250, food category, 2025-10-07 date
Smart Date Recognition
Understands various date expressions:
- "today", "yesterday" → Exact dates
- "last 10 days", "this week" → Date ranges with proper calculations
- "this month", "last month" → Monthly boundaries
- Dynamic calculation using Python datetime
Intelligent Categorization
AI maps context to expense categories:
- "breakfast", "lunch", "dinner" →
foodcategory - "cab", "taxi", "bus", "train" →
transportcategory - "medicine", "doctor" →
healthcarecategory - Falls back to "other" for unknown items
Conversational Analysis
Ask natural questions about spending:
- "Show my expenses for last 10 days in tabular fashion"
- "How much did I spend on transport this month?"
- "Analyze my spending patterns"
- "What's my category breakdown?"
Context-Aware Responses
- Remembers conversation history
- Provides formatted tables with ₹ currency
- Shows category breakdowns and percentages
- Calculates totals and trends automatically
🐛 Troubleshooting
Common Issues
Streamlit "ModuleNotFoundError":
# Ensure you're in the virtual environment .\.venv\Scripts\Activate.ps1 streamlit run client.pyMCP Server not starting:
# Check if port 8000 is in use netstat -an | findstr :8000 # Kill existing processes taskkill /f /im python.exeAI features not working:
- Verify
GOOGLE_API_KEYenvironment variable - Check API key at https://aistudio.google.com/app/apikey
- Ensure internet connection for Gemini API
- Verify
Date filtering issues:
- Check system date/time settings
- Verify date calculations in debug output
- Use
python quick_test.pyto test MCP tools directly
Tool parameter errors:
# Test MCP server tools directly python quick_test.py # Check server logs for validation errors
Health Checks
# Test MCP server
python quick_test.py
# Check database
python view_database.py
# Verify Streamlit client
streamlit run client.py --server.headless true
Debug Mode
# Run with verbose output
python server.py --verbose
# Check Streamlit logs in terminal
# Look for "Found X tools from MCP server" message
📊 Database Schema
CREATE TABLE expenses (
id INTEGER PRIMARY KEY AUTOINCREMENT,
date TEXT NOT NULL,
amount REAL NOT NULL,
category TEXT NOT NULL,
subcategory TEXT DEFAULT '',
note TEXT DEFAULT '',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
🤝 Contributing
- Fork the repository
- Create feature branch:
git checkout -b feature-name - Make changes and test thoroughly
- Submit pull request with description
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- FastMCP: For the excellent MCP framework
- FastAPI: For the robust web framework
- Google Gemini: For the powerful AI capabilities
- Rich: For the beautiful CLI interface
🎯 Key Features Demonstrated
MCP Integration Excellence
- ✅ FastMCP 2.0 - Latest MCP framework with HTTP transport
- ✅ Tool Orchestration - 5 expense management tools
- ✅ Parameter Validation - Robust input validation and error handling
- ✅ Async Operations - Non-blocking expense operations
AI Integration Mastery
- ✅ Google Gemini 2.5 Flash - Latest AI model integration
- ✅ LangGraph Agent - Advanced agent with React pattern
- ✅ Natural Language - Conversational expense entry
- ✅ Context Awareness - Chat history and session memory
Modern Web Interface
- ✅ Streamlit Chat UI - Modern conversational interface
- ✅ Real-time Processing - Instant AI responses
- ✅ Dynamic Date Calculations - Smart date range handling
- ✅ Currency Support - Native Indian Rupees (₹) formatting
🏆 Technical Achievements
This project demonstrates:
- MCP Server Development using FastMCP 2.0
- AI Agent Architecture with LangGraph and LangChain
- Natural Language Processing for expense parsing
- Modern Web UI with Streamlit chat interface
- Database Management with SQLite and async operations
- Error Handling and user experience optimization
from github.com/Surya-KF/Expenses-Tracker---MCP-Server-_Client
Installing Expenses Tracker MCP Server Client
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/Surya-KF/Expenses-Tracker---MCP-Server-_ClientFAQ
Is Expenses Tracker MCP Server Client MCP free?
Yes, Expenses Tracker MCP Server Client MCP is free — one-click install via Unyly at no cost.
Does Expenses Tracker MCP Server Client need an API key?
No, Expenses Tracker MCP Server Client runs without API keys or environment variables.
Is Expenses Tracker MCP Server Client hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Expenses Tracker MCP Server Client in Claude Desktop, Claude Code or Cursor?
Open Expenses Tracker MCP Server Client on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Expenses Tracker MCP Server Client with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
