Expense Tracker
Automated expense management with a Supabase backend and hierarchical category support.
Expense Tracker Backend
AI-powered expense tracking system with natural language interface, intelligent categorization, and real-time sync.
Architecture
The system uses a two-server architecture:
- MCP Server: Core expense tracking tools exposed via Model Context Protocol
- Gemini AI Server: FastAPI server providing chat interface with authentication
Features
- 🤖 Natural language expense management via Gemini AI
- 🧠 Intelligent categorization using embeddings and similarity search
- 🔐 JWT authentication with Supabase
- 📊 Hierarchical categories for organization
- 🏷️ Predefined tag system
- 📈 Real-time data sync
- 🔄 Learning system that improves over time
Quick Start
Prerequisites
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Environment Setup
cp .env.example .env
# Add your credentials:
# - SUPABASE_URL
# - SUPABASE_KEY
# - GOOGLE_API_KEY (for Gemini)
Database Setup
Execute the SQL scripts in your Supabase SQL Editor:
# Core tables
scripts/create_tables.sql
# Embeddings support
scripts/create_embeddings_schema.sql
Run Both Servers
Terminal 1 - MCP Server:
python run_mcp.py
Terminal 2 - Gemini AI Server:
uvicorn app.servers.gemini.main:app --reload --port 8000
Initialize Data
# Populate categories
python scripts/populate_hierarchical_categories.py
# Populate predefined tags
python scripts/populate_predefined_tags.py
API Endpoints
Chat Interface
POST /chat- Send natural language commandsPOST /auth/refresh- Refresh JWT token
MCP Tools (via chat)
- Create expenses from natural language
- Auto-categorize transactions
- Get spending summaries
- Analyze subscriptions
- View recent transactions
Flutter Client
refer https://github.com/keyurgit45/expense-tracker-client
Testing
# Run all tests with mocks
ENVIRONMENT=test pytest tests/ -v
# Run specific components
ENVIRONMENT=test pytest tests/test_mcp_tools.py -v
ENVIRONMENT=test pytest tests/test_categorization.py -v
Project Structure
backend/
├── app/
│ ├── core/ # Business logic
│ ├── servers/
│ │ ├── gemini/ # AI chat server
│ │ └── mcp/ # MCP tool server
│ └── shared/ # Shared configs
├── scripts/ # Utilities
└── tests/ # Test suite
AI Categorization
The system uses a hybrid approach:
- Generates embeddings for transactions using Sentence Transformers
- Finds similar past transactions using pgvector
- Uses weighted voting to predict categories
- Falls back to rule-based matching
- Learns from user confirmations
Development
- API docs: http://localhost:8000/docs
- Frontend integration: Configure CORS in Gemini server
- MCP tools can be tested directly via chat interface
관련 서버
n8n
Provides AI assistants with direct access to the n8n automation platform.
Todoist
Full implementation of Todoist Rest API for MCP server
Things MCP
Integrate with the Things 3 to-do app on macOS.
Excalidraw
An MCP server for creating, modifying, and manipulating Excalidraw drawings via an API.
Redmine MCP
Integrates Claude AI with the Redmine project management system to enhance project management tasks.
Pulsetic MCP Server
The Pulsetic MCP Server connects Pulsetic monitoring with AI agents and MCP-compatible tools, enabling direct access to uptime data, cron monitoring results, incident management workflows, and status page information through the Model Context Protocol (MCP). It allows teams to securely expose operational monitoring data in a structured format, making it easy to build AI-driven automation, monitoring assistants, and intelligent operational workflows without custom middleware.
Atlassian Jira
Integrates AI with Atlassian Jira to manage projects, search for issues, and view development information like commits and pull requests.
Todo MCP Server
A Todo and Task Manager server for creating, updating, and managing tasks, using a SQLite database.
Apple Notes MCP
MCP server for Apple Notes with semantic search and CRUD operations. Claude searches, reads, creates, updates, and manages your Apple Notes through natural language.
mcp-banco-inter
MCP (Model Context Protocol) Server for integration with the Banco Inter Business (PJ) API. It allows checking balances, statements, and managing billings via AI assistants.