Skip to main content
Glama

Personal Expense Manager

by Jiliar

πŸ“Š MCP Server - Personal Expense Manager

An MCP (Model Context Protocol) server for managing and analyzing personal expenses from CSV files.

πŸš€ Features

  • Add expenses to a CSV file with categorization

  • Get recent expenses with day-based filtering

  • MCP Resource for direct access to all expenses

  • Specialized prompt that generates automatic analytical summaries

  • Analysis by category and payment method

  • Trend detection and spending patterns

πŸ“‹ Requirements

pip install fastmcp mcp

πŸ—‚οΈ Project Structure

expenses-mcp-server/ β”œβ”€β”€ server.py # Main MCP server β”œβ”€β”€ data/ β”‚ └── expenses.csv # Expenses file (created automatically) β”œβ”€β”€ requirements.txt └── README.md

πŸ› οΈ Installation & Usage

1. Clone or create the project

mkdir expenses-mcp-server cd expenses-mcp-server

2. Create virtual environment (recommended)

python -m venv venv source venv/bin/activate # Linux/Mac # or venv\Scripts\activate # Windows

3. Install dependencies

pip install fastmcp mcp

4. Run the server

python server.py

πŸ”§ Available Functionalities

Tools

1. agregar_gasto (Add Expense)

Adds a new expense to the system.

Parameters:

  • fecha: Date in 'YYYY-MM-DD' format

  • categoria: Expense category (e.g., "Food", "Transport")

  • cantidad: Expense amount (float)

  • metodo_pago: Payment method used

Example:

agregar_gasto("2024-01-15", "Groceries", 150.75, "Debit Card")

2. obtener_gastos_recientes (Get Recent Expenses)

Gets expenses from the last N days.

Parameters:

  • dias: Number of days to query (default: 5)

Example:

obtener_gastos_recientes(7) # Last 7 days

Resource

resource://gastos

Direct access to all stored expenses.

Specialized Prompt

Resumen de Gastos Recientes (Recent Expenses Summary)

Generates a prompt with structured data for AI to create a complete analysis including:

  • πŸ“ˆ Statistical calculations (totals, averages)

  • 🏷️ Category analysis

  • πŸ’³ Payment method distribution

  • πŸ” Trend identification

  • πŸ’‘ Personalized recommendations

πŸ“Š CSV Structure

The data/expenses.csv file has the following structure:

fecha,categoria,cantidad,metodo_pago 2024-01-15,Groceries,150.75,Debit Card 2024-01-16,Transport,45.50,Cash 2024-01-17,Entertainment,89.99,Credit Card

πŸ”Œ MCP Client Integration

Python Client Example

import asyncio from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client async def main(): server_params = StdioServerParameters( command="python", args=["server.py"] ) async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: # Initialize session await session.initialize() # Add expense result = await session.call_tool( "agregar_gasto", { "fecha": "2024-01-18", "categoria": "Restaurant", "cantidad": 85.50, "metodo_pago": "Credit Card" } ) print(result) # Get recent expenses expenses = await session.call_tool( "obtener_gastos_recientes", {"dias": 5} ) print(expenses) if __name__ == "__main__": asyncio.run(main())

🎯 Use Cases

1. Daily Expense Tracking

# Add transport expense agregar_gasto("2024-01-18", "Transport", 35.00, "Cash") # Add food expense agregar_gasto("2024-01-18", "Food", 120.00, "Debit Card")

2. Weekly Analysis

# Get last week summary obtener_gastos_recientes(7)

3. Monthly Report

# Complete 30-day analysis obtener_gastos_recientes(30)

πŸ“ˆ Example Generated Analysis

The specialized prompt generates analysis like:

πŸ“Š EXPENSE SUMMARY - LAST 5 DAYS πŸ’° TOTAL SPENT: $1,245.75 πŸ“… DAILY AVERAGE: $249.15 πŸ”’ TRANSACTIONS: 8 purchases 🏷️ CATEGORY DISTRIBUTION: β€’ Groceries: 45% ($560.25) β€’ Transport: 25% ($311.44) β€’ Entertainment: 20% ($249.15) β€’ Restaurant: 10% ($124.58) πŸ’³ PAYMENT METHODS: β€’ Credit Card: 60% β€’ Debit Card: 30% β€’ Cash: 10% πŸ“ˆ OBSERVATIONS: β€’ Highest spending on Wednesday ($420.50) β€’ "Groceries" category represents almost half of expenses β€’ Growing trend in credit card usage πŸ’‘ RECOMMENDATIONS: β€’ Consider bulk purchases to reduce grocery expenses β€’ Diversify payment methods for better control β€’ Set weekly limit for entertainment

πŸ› οΈ Troubleshooting

Error: "FileNotFoundError"

  • Ensure the data/ directory exists

  • Server creates the file automatically with the first expense

Error: "Encoding issues"

  • Server uses UTF-8 for special character compatibility

Error: "Invalid date format"

  • Use exact format: YYYY-MM-DD

  • Example: 2024-01-18

πŸ“ License

MIT License

πŸ“ž Support

For issues and questions, open a ticket in the project repository.


Start tracking your expenses intelligently! πŸš€

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/Jiliar/mcp-server'

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