Skip to main content
Glama
Jiliar

Personal Expense Manager

by Jiliar
README.mdβ€’5.34 kB
# πŸ“Š 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 ```bash 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 ```bash mkdir expenses-mcp-server cd expenses-mcp-server ``` ### 2. Create virtual environment (recommended) ```bash python -m venv venv source venv/bin/activate # Linux/Mac # or venv\Scripts\activate # Windows ``` ### 3. Install dependencies ```bash pip install fastmcp mcp ``` ### 4. Run the server ```bash 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:** ```python 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:** ```python 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: ```csv 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 ```python 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** ```bash # 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** ```bash # Get last week summary obtener_gastos_recientes(7) ``` ### 3. **Monthly Report** ```bash # 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!** πŸš€

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

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