expense-tracker-mcp-server
# Expense Tracker MCP Server
A Model Context Protocol (MCP) server for tracking, categorizing, and summarizing personal & business expenses. Built with Python, [FastMCP](https://github.com/jlowin/fastmcp), and SQLite.
## Features
- **Add Expenses (`add_expense`)**: Log date, amount, category, subcategory, and optional notes.
- **List Expenses (`list_expenses`)**: Fetch expense logs within a specified date range.
- **Summarize Expenses (`summarize`)**: Aggregated totals grouped by category (or filter by specific category).
- **Categories Resource (`expense://categories`)**: Dynamic access to preset expense categories and subcategories.
---
## Prerequisites
- Python 3.12+
- [`uv`](https://github.com/astral-sh/uv) (recommended) or `pip`
---
## Setup & Running
1. **Clone the Repository**:
```bash
git clone https://github.com/<YOUR_USERNAME>/expense-tracker-mcp-server.git
cd expense-tracker-mcp-server
```
2. **Install Dependencies**:
```bash
uv sync
```
3. **Run the MCP Server**:
```bash
uv run main.py
```
---
## MCP Client Configuration
### Claude Desktop Configuration
Add the following to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"expense-tracker": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/expense-tracker-mcp-server",
"run",
"main.py"
]
}
}
}
```
---
## License
[MIT](LICENSE)
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: add_expense writes entries, list_expenses reads them by date range, and summarize aggregates them by category. There is no ambiguity between the three tools.
All tools use a consistent verb_infinitive arrangement (add_, list_, summarize), though adding and listing are verb_noun patterns while summarize is less obviously named in the same convention. Minor deviation but the pattern is predictable.
Three tools is on the thin side for an expense tracker, which typically needs update and delete operations to manage entries. The count is minimal but each tool does carry meaningful weight.
The surface covers create (add) and read (list, summarize), but lacks update and delete operations for expenses—a clear gap in CRUD coverage. Users cannot edit or remove entries, which is a significant functionality hole for an expense tracker.