Expense Tracker MCP Server
by talha963
README.md
# šø Expense Tracker MCP Server
<div align="center">





**A blazing-fast, AI-native Expense Tracker built as an MCP (Model Context Protocol) Server using [FastMCP](https://github.com/jlowin/fastmcp) and SQLite.**
*Plug it directly into Claude Desktop, Cursor, or any MCP-compatible AI client ā let your AI manage your finances for you.*
</div>
---
## š Table of Contents
- [What is MCP?](#-what-is-mcp)
- [Features](#-features)
- [Project Structure](#-project-structure)
- [Prerequisites](#-prerequisites)
- [Installation](#-installation)
- [Running the Server](#-running-the-server)
- [Available Tools](#-available-tools)
- [Connecting to Claude Desktop](#-connecting-to-claude-desktop)
- [Development & Inspection](#-development--inspection)
- [Tech Stack](#-tech-stack)
---
## š¤ What is MCP?
The **Model Context Protocol (MCP)** is an open standard by Anthropic that allows AI models (like Claude) to securely interact with external tools, APIs, and data sources. This project exposes expense-tracking capabilities as MCP **tools**, meaning you can literally tell Claude:
> *"Add an expense: Coffee, $4.50, Food & Drink, Cash, 2026-08-02"*
...and it will call this server and record it in your local SQLite database ā no UI needed.
---
## ⨠Features
- š **Add Expenses** ā Record expenses with title, amount, category, payment method, date, and optional description
- š **List Expenses** ā Retrieve all stored expenses as structured data
- šļø **Persistent SQLite Storage** ā Auto-creates a local `expenses.db` database on first run
- ā” **FastMCP Powered** ā Minimal boilerplate, maximum capability
- š **Built-in Inspector** ā Visual tool inspector for debugging and testing
- š **MCP-Compatible** ā Works with Claude Desktop, Cursor, and any MCP client
---
## š Project Structure
```
expense_tracker_mcp_server/
āāā expense_mcp_server.py # šÆ Main MCP server ā all tools defined here
āāā pyproject.toml # Project metadata & dependencies
āāā uv.lock # Locked dependency versions
āāā .python-version # Python version pin
āāā .gitignore # Git ignore rules
āāā src/
ā āāā expense_tracker_mcp_server/
ā āāā __init__.py # Package entry point
āāā README.md # You are here!
```
---
## š ļø Prerequisites
Make sure you have the following installed:
- **Python 3.11+**
- **pip** (comes with Python)
- **uv** ā Fast Python package manager
---
## š Installation
### Step 1 ā Clone the Repository
```bash
git clone https://github.com/talha963/expense_mcp_server.git
cd expense_mcp_server
```
### Step 2 ā Install `uv`
```bash
pip install uv
```
### Step 3 ā Initialize the Project with `uv`
```bash
uv init .
```
### Step 4 ā Install FastMCP
```bash
# Via pip (global)
pip install fastmcp
# OR via uv (recommended ā adds to project)
uv add fastmcp
```
### Step 5 ā Sync Dependencies
```bash
uv sync
```
---
## ā¶ļø Running the Server
### Option 1 ā Run directly with Python
```bash
python expense_mcp_server.py
```
> Starts an HTTP server on `http://0.0.0.0:8000`
### Option 2 ā Run via `uv`
```bash
uv run expense_mcp_server.py
```
### Option 3 ā Run via FastMCP CLI (Recommended for MCP clients)
```bash
uv run --active fastmcp run expense_mcp_server.py
```
---
## š§ Available Tools
The server exposes the following MCP tools that AI models can call:
### `add_expense`
Adds a new expense entry to the database.
| Parameter | Type | Required | Description |
|-----------------|---------|----------|--------------------------------------|
| `title` | string | ā
| Name/title of the expense |
| `amount` | float | ā
| Amount spent (e.g. `12.50`) |
| `category` | string | ā
| Category (e.g. `Food`, `Transport`) |
| `payment_method`| string | ā
| e.g. `Cash`, `Card`, `Online` |
| `expense_date` | string | ā
| Date in `YYYY-MM-DD` format |
| `description` | string | ā | Optional notes about the expense |
**Example response:**
```json
{
"success": true,
"expense_id": 1,
"message": "Expense added successfully."
}
```
---
### `list_expenses`
Returns all recorded expenses from the database.
**No parameters required.**
**Example response:**
```json
[
{
"id": 1,
"title": "Coffee",
"amount": 4.5,
"category": "Food & Drink",
"payment_method": "Cash",
"expense_date": "2026-08-02",
"description": "Morning coffee at the office"
}
]
```
---
## š„ļø Connecting to Claude Desktop
To use this server with **Claude Desktop**, add the following to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"expense-tracker": {
"command": "uv",
"args": [
"run",
"--active",
"fastmcp",
"run",
"/absolute/path/to/expense_mcp_server.py"
]
}
}
}
```
> **Config file location:**
> - **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
> - **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
After saving, restart Claude Desktop and the **Expense Tracker** tools will appear automatically.
---
## š Development & Inspection
Use the **FastMCP Inspector** to visually test and explore your tools in the browser:
```bash
uv run --active fastmcp dev expense_mcp_server.py
```
This opens an interactive web UI where you can:
- See all registered tools
- Call tools manually with test inputs
- Inspect request/response payloads
---
## š§° Tech Stack
| Technology | Purpose |
|-----------|---------|
| [FastMCP](https://github.com/jlowin/fastmcp) | MCP server framework |
| [SQLite3](https://docs.python.org/3/library/sqlite3.html) | Lightweight persistent storage |
| [uv](https://github.com/astral-sh/uv) | Ultra-fast Python package manager |
| Python 3.11+ | Runtime |
---
## š¤ Author
**Talha** ā [@talha963](https://github.com/talha963)
---
## š License
This project is licensed under the **MIT License** ā feel free to use, modify, and distribute.
---
<div align="center">
<sub>Built with ā¤ļø using FastMCP ā making AI tool integration effortless.</sub>
</div>
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues