Personal Expense Manager
Enables tracking and analyzing personal expenses stored in CSV files. Supports adding expenses with categorization, retrieving recent spending data, and generating automated analytical summaries with spending patterns and recommendations.
README
📊 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' formatcategoria: 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! 🚀
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.