个人费用管理服务

一个基于MCP协议的个人费用管理服务,支持从CSV文件导入、分析和管理个人支出。

  • by Jiliar
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Jiliar/mcp-server

使用说明

📊 MCP服务器 - 个人开销管理器

一个用于管理并分析CSV文件中个人支出的MCP(模型上下文协议)服务器。

🚀 特点

  • 增加费用 导出为带有分类的CSV文件
  • 获取最近的费用 基于日期的过滤
  • MCP 资源 以便直接访问所有费用
  • 专业提示 能够生成自动分析摘要
  • 按类别和支付方式进行分析
  • 趋势检测与消费模式

📋 要求

pip install fastmcp mcp

🗂️ 项目结构

expenses-mcp-server/
├── server.py              # Main MCP server
├── data/
│   └── expenses.csv      # Expenses file (created automatically)
├── requirements.txt
└── README.md

🛠️ 安装与使用

1. 克隆或创建项目

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

2. 创建虚拟环境(推荐)

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

3. 安装依赖项

pip install fastmcp mcp

4. 运行服务器

python server.py

🔧 可用功能

工具

1. agregar_gasto (添加费用)

向系统中添加一项新费用。

参数:

  • fecha日期格式为“YYYY-MM-DD”
  • categoria费用类别(例如,“食品”、“交通”)
  • cantidad费用金额(浮点数)
  • metodo_pago使用的支付方式

示例:

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

2. obtener_gastos_recientes (获取最近的费用)

获取过去N天的费用。

参数:

  • dias查询的天数(默认:5)

示例:

obtener_gastos_recientes(7)  # Last 7 days

资源

resource://gastos

直接访问所有已存储的费用。

专业提示

Resumen de Gastos Recientes (近期费用概要)

生成一个包含结构化数据的提示,以便AI能够创建完整的分析,其中包括:

  • 📈 统计计算(总计、平均值)
  • 🏷️ 类别分析
  • 💳 支付方式分布
  • 🔍 趋势识别
  • 💡 个性化推荐

📊 CSV 结构

这个(或“它”) data/expenses.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 客户端集成

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())

🎯 使用场景

1. 日常开销追踪

# 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. 每周分析

# Get last week summary
obtener_gastos_recientes(7)

3. 月度报告

# Complete 30-day analysis
obtener_gastos_recientes(30)

📈 生成的示例分析

这个专门的提示生成的分析类似于:

📊 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

🛠️ 故障排除

错误:“文件未找到”

  • 确保 data/ 目录存在
  • 服务器在首次记录费用时自动创建该文件

错误:“编码问题”

  • 服务器使用UTF-8以确保特殊字符的兼容性

错误:“日期格式无效”

  • 使用精确格式: YYYY-MM-DD
  • 示例: 2024-01-18

📝 许可证

麻省理工学院许可证(MIT License)

📞 支持

对于问题和疑问,请在项目仓库中提交一个工单。


开始智能追踪您的支出吧! 🚀 火箭/快速前进/飞速发展(根据上下文可灵活翻译)