Skip to main content
Glama

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!** šŸš€

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