ZeeshanML/expense-tracker-mcp-server
3.2
If you are the rightful owner of expense-tracker-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Expense Tracker MCP Server is a minimal Model Context Protocol server designed for tracking personal expenses using SQLite, built with the fastmcp library.
Tools
4
Resources
0
Prompts
0
Expense Tracker MCP Server
A minimal Model Context Protocol (MCP) server for tracking personal expenses using SQLite, built with fastmcp.
Features
- Add expense: date, amount, category, optional subcategory and note
- List expenses: filter by inclusive date range
- Delete expense: remove by id
- Summarize: totals by category within a date range (optionally for a single category)
- Categories resource:
expense://categoriesservescategories.json
Requirements
- Python: >= 3.13
- Optional: uv package manager (uv docs)
Quick start (uv)
# From the repo root
uv sync
uv run python main.py
Quick start (pip)
# From the repo root
python -m venv .venv
# Windows PowerShell
.\.venv\Scripts\Activate.ps1
pip install -U fastmcp
python main.py
Your MCP-compatible client can launch the server by executing python path/to/main.py (or uv run python main.py) via stdio.
Tools exposed
- add_expense(date, amount, category, subcategory="", note="") →
{ status, id } - list_expenses(start_date, end_date) → array of expense objects
- delete_expense(id) →
{ status } - summarize(start_date, end_date, category=None) → array of
{ category, total_amount } - Resource: expense://categories → contents of
categories.json
Dates are stored as text (ISO YYYY-MM-DD recommended). Amounts are REAL.
Data
- Database:
expenses.dbis created on first run with tableexpenses(id, date, amount, category, subcategory, note). - Categories: Edit
categories.jsonto customize categories/subcategories; the resource is read fresh on each request.
Notes
- This repo is intentionally simple to demonstrate an MCP server. Integrate it by configuring your MCP client to launch
main.py. - If you prefer a fresh database, delete
expenses.dbbefore starting the server.