Skip to main content
Glama
PK-SANGAMESWAR

Expense Tracker MCP Server

README.md
# Expense Tracker MCP Server

A Model Context Protocol (MCP) server for tracking expenses, built with `fastmcp`.

## Features

This server provides tools to manage expenses in a local SQLite database (`expenses.db`) and exposes categories via a resource.

### Tools

- **`add_expense`**: Add a new expense.
  - Arguments: `date` (YYYY-MM-DD), `amount`, `category`, `subcategory` (optional), `note` (optional).
- **`list_expenses`**: List expenses within a date range.
  - Arguments: `start_date`, `end_date`.
- **`summarize`**: Summarize expenses by category.
  - Arguments: `start_date`, `end_date`, `category` (optional filter).
- **`edit_expense`**: Edit an existing expense.
  - Arguments: `id`, `date`, `amount`, `category`, `subcategory`, `note`.
- **`delete_expense`**: Delete an expense by ID.
  - Arguments: `id`.
- **`add_credit`**: Add credit to a user account (default user).
  - Arguments: `amount`, `user_name` (optional, default="default").

### Resources

- **`expense://categories`**: Returns the content of `categories.json`.

## Prerequisites

- Python >= 3.12
- `uv` (recommended for dependency management)

## Installation & Usage

### Using `uv` (Recommended)

You can run the server directly using `uv`:

```bash
uv run main.py
```

### Manual Installation

1. Create a virtual environment:
   ```bash
   python -m venv .venv
   source .venv/bin/activate  # On Windows: .venv\Scripts\activate
   ```

2. Install dependencies:
   ```bash
   pip install fastmcp
   ```

3. Run the server:
   ```bash
   python main.py
   ```

## Configuration for Claude Desktop

Add the following to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "expense-tracker": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "fastmcp",
        "c:\\Users\\LOQ\\Downloads\\ExpenseTracker_MCP_Server\\main.py"
      ]
    }
  }
}
```

*Note: Update the path to `main.py` to match your local path.*

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity: adding credit, adding/editing/deleting expenses, listing expenses, and summarizing expenses. The descriptions clearly differentiate between credit operations, expense CRUD operations, and analytical functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with snake_case naming: add_credit, add_expense, delete_expense, edit_expense, list_expenses, summarize. The single verb 'summarize' without a noun is appropriate for its analytical function and maintains readability.

Tool Count5/5

Six tools is well-scoped for an expense tracking server, covering core operations without bloat. Each tool earns its place: credit management, full expense CRUD, listing, and summarization provide complete workflow coverage.

Completeness4/5

The tool surface covers most essential expense tracking operations including credit management and expense lifecycle. A minor gap exists in credit operations (no edit/delete credit tools), but agents can work around this limitation effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues