ExpenseTracker MCP Server
by samt439
README.md
# š° ExpenseTracker MCP Server
A lightweight and scalable **Expense Tracking MCP Server** built using FastMCP and SQLite. This server allows you to add, list, and summarize expenses efficiently, making it ideal for personal finance management or integration with MCP-compatible clients like Claude Desktop.
---
## š Features
* ā
Add expenses with category and notes
* š List expenses within a date range
* š Summarize expenses by category
* š Default categories support (with fallback)
* ā” Async database operations using `aiosqlite`
* āļø Cloud-ready (FastMCP deployment compatible)
---
## š ļø Tech Stack
* **Python**
* **FastMCP**
* **SQLite (aiosqlite for async support)**
---
## š Project Structure
```
.
āāā main.py # Main MCP server file
āāā requirements.txt # Dependencies
āāā categories.json # (Optional) Custom categories
āāā README.md
```
---
## āļø Setup & Installation
### 1. Clone the repository
```bash
git clone https://github.com/your-username/your-repo-name.git
cd your-repo-name
```
### 2. Create virtual environment
```bash
python -m venv venv
venv\Scripts\activate # Windows
```
### 3. Install dependencies
```bash
pip install -r requirements.txt
```
---
## ā¶ļø Running the Server
```bash
python main.py
```
Server will start at:
```
http://0.0.0.0:8000
```
---
## š MCP Endpoint
Once deployed on FastMCP, your endpoint will look like:
```
https://your-app-name.fastmcp.app/mcp
```
ā ļø Note: Authentication is required to access this endpoint.
---
## š Available Tools
### ⤠Add Expense
Adds a new expense entry.
**Parameters:**
* `date` (YYYY-MM-DD)
* `amount` (float)
* `category` (string)
* `subcategory` (optional)
* `note` (optional)
---
### ⤠List Expenses
Fetch expenses within a date range.
**Parameters:**
* `start_date`
* `end_date`
---
### ⤠Summarize Expenses
Get category-wise expense summary.
**Parameters:**
* `start_date`
* `end_date`
* `category` (optional)
---
## š Categories Resource
Endpoint:
```
expense:///categories
```
* Loads from `categories.json` if available
* Falls back to default categories if file is missing
---
## š§ How It Works
* Uses a temporary directory for database storage
* Initializes database on startup
* Uses async operations for better performance
* Safe fallback mechanisms for missing files
---
## ā ļø Common Issues & Fixes
### ā Pre-flight check failed
* Ensure your file name is `main.py`
* Make sure `mcp = FastMCP(...)` is correct
* Check logs for missing dependencies
### ā Module not found
* Add missing packages to `requirements.txt`
Example:
```
fastmcp
aiosqlite
```
---
## š” Future Improvements
* User authentication system
* Dashboard UI
* Monthly budget tracking
* Data export (CSV/Excel)
---
## šØāš» Author
Built with ā¤ļø for learning and real-world MCP integration.
---
## ā Support
If you like this project:
* Star ā the repo
* Share with others
* Contribute improvements
---
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues