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