Skip to main content
Glama
Sudhanvaha

Expense Tracker MCP Server

by Sudhanvaha
README.md6.24 kB
# Expense Tracker MCP Server A Model Context Protocol (MCP) server for tracking personal expenses with SQLite database storage. This server integrates with Claude Desktop to provide expense management capabilities through natural language. ## Features - ✅ Add, update, and delete expenses - ✅ List expenses by date range - ✅ Summarize expenses by category - ✅ Flexible deletion by multiple criteria - ✅ Predefined expense categories - ✅ SQLite database for persistent storage ## Prerequisites - Python 3.10 or higher - [uv](https://github.com/astral-sh/uv) package manager - Claude Desktop app ## Installation ### 1. Install uv **Windows (PowerShell):** ```powershell powershell -c "irm https://astral.sh/uv/install.ps1 | iex" ``` **macOS/Linux:** ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` ### 2. Initialize Project ```bash # Create and navigate to project directory mkdir expense-tracker-mcp-server cd expense-tracker-mcp-server # Initialize uv project uv init . ``` ### 3. Install Dependencies ```bash # Install required packages uv add fastmcp uv add sqlite3 # Usually comes with Python ``` ### 4. Create the Server Create a file named `main.py` and paste the expense tracker code (from the document provided). ### 5. Test the Server ```bash # Run the server uv run main.py ``` ## Configuration ### Claude Desktop Setup 1. Open Claude Desktop configuration file: - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Linux**: `~/.config/Claude/claude_desktop_config.json` 2. Add the MCP server configuration: ```json { "mcpServers": { "expense-tracker": { "command": "uv", "args": [ "--directory", "C:/Users/YOUR_USERNAME/Desktop/expense-tracker-mcp-server", "run", "main.py" ] } } } ``` **Important**: Replace `C:/Users/YOUR_USERNAME/Desktop/expense-tracker-mcp-server` with your actual project path. 3. Restart Claude Desktop ## Usage Once configured, you can interact with the expense tracker through Claude using natural language: ### Add Expense ``` "Add an expense: $50 for groceries on 2024-12-14" "Log $25.50 spent on transport today with note 'Uber to office'" ``` ### List Expenses ``` "Show me all expenses from December 1 to December 14, 2024" "List my expenses for last week" ``` ### Update Expense ``` "Update expense ID 5 to $75" "Change the category of expense 3 to 'entertainment'" ``` ### Delete Expense ``` "Delete expense with ID 5" "Remove all food expenses from last week" "Delete expenses in the transport category" ``` ### Summarize Expenses ``` "Summarize my expenses by category for December 2024" "What's my total spending on food this month?" ``` ### View Categories ``` "What expense categories are available?" "Show me the list of categories" ``` ## Available Tools ### `add_expense` Add a new expense to the tracker. **Parameters:** - `date` (string): Date in YYYY-MM-DD format - `amount` (float): Expense amount - `category` (string): Expense category - `subcategory` (string, optional): Subcategory - `note` (string, optional): Additional notes ### `list_expenses` List all expenses within a date range. **Parameters:** - `start_date` (string): Start date (YYYY-MM-DD) - `end_date` (string): End date (YYYY-MM-DD) ### `update` Update an existing expense (only provided fields will be updated). **Parameters:** - `cid` (int): Expense ID to update - `date` (string, optional): New date - `amount` (float, optional): New amount - `category` (string, optional): New category - `subcategory` (string, optional): New subcategory - `note` (string, optional): New note ### `delete` Delete expenses based on various criteria. **Parameters:** - `id` (int, optional): Delete by ID - `date` (string, optional): Delete by date - `category` (string, optional): Delete by category - `subcategory` (string, optional): Delete by subcategory - `amount` (float, optional): Delete by amount - `note` (string, optional): Delete by note - `start_date` & `end_date` (strings, optional): Delete by date range ### `summarize` Get expense summaries grouped by category. **Parameters:** - `start_date` (string): Start date (YYYY-MM-DD) - `end_date` (string): End date (YYYY-MM-DD) - `category` (string, optional): Filter by specific category ## Available Resources ### `expense://categories` Returns the list of available expense categories in JSON format. ## Database Schema ```sql CREATE TABLE expenses ( id INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT NOT NULL, amount REAL NOT NULL, category TEXT NOT NULL, subcategory TEXT DEFAULT '', note TEXT DEFAULT '' ); ``` ## File Structure ``` expense-tracker-mcp-server/ ├── main.py # MCP server code ├── expense.db # SQLite database (auto-created) ├── categories.json # Categories list (auto-created) ├── pyproject.toml # uv project configuration └── README.md # This file ``` ## Default Categories The server comes with these default categories: - food - transport - entertainment - utilities - healthcare You can modify `categories.json` to add or remove categories. ## Troubleshooting ### Server not appearing in Claude Desktop 1. Check the configuration file path is correct 2. Ensure the `command` path points to your project directory 3. Restart Claude Desktop completely 4. Check Claude Desktop logs for errors ### Database errors If you encounter database errors: ```bash # Delete the database to reset rm expense.db # Restart the server to recreate the database uv run main.py ``` ### Import errors ```bash # Reinstall dependencies uv sync ``` ## Development To modify the server: 1. Edit `main.py` 2. Test changes: `uv run main.py` 3. Restart Claude Desktop to load changes ## Contributing Contributions are welcome! Feel free to submit issues or pull requests. ## Support For issues related to: - **MCP Protocol**: [MCP Documentation](https://modelcontextprotocol.io) - **FastMCP**: [FastMCP GitHub](https://github.com/jlowin/fastmcp) - **Claude Desktop**: [Anthropic Support](https://support.anthropic.com)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Sudhanvaha/expense-tracker-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server