项目简介
Expense Tracker API是一个全面的个人支出管理系统,旨在帮助用户高效地记录、分类和分析日常开销。它提供强大的RESTful API接口,支持基于规则的自动分类,并可集成外部工具(如n8n)实现邮件自动解析。更重要的是,它集成了Model Context Protocol (MCP) 服务器功能,允许大型语言模型(LLM)客户端以标准化的方式访问财务数据并调用相关功能,从而实现AI驱动的财务洞察和管理。
主要功能点
- 支出管理: 全面记录、查看、修改和删除各项个人支出。
- 自动分类: 根据用户自定义的商户匹配规则,自动为新添加的支出进行智能分类。
- 类别与规则管理: 灵活地创建、编辑和删除支出类别,以及管理用于自动分类的商户匹配规则(支持模糊匹配和正则表达式)。
- 财务分析: 提供详细的支出摘要、类别支出明细、平均消费以及按支付方式(如信用卡、借记卡)划分的账单周期分析。
- 电子邮件集成: 通过与n8n等自动化平台的集成,能够自动解析银行或商户的邮件通知,提取支出信息并自动创建记录。
- MCP服务器接口: 提供标准化的MCP接口,允许LLM客户端直接获取支出数据(资源)、创建商户规则(工具),实现AI辅助的财务规划和分析。
- API密钥认证: 所有API接口(文档页除外)均通过API密钥进行安全认证。
安装步骤
1. 克隆仓库
首先,将项目仓库克隆到本地:
git clone https://github.com/julioag/expense-tracker.git cd expense-tracker
2. 使用Docker (推荐,快速启动)
这是最简单快捷的启动方式,适用于本地开发环境。
- 前置条件: 确保您的系统已安装Docker和Docker Compose。
- 启动命令:
chmod +x docker-dev.sh # 首次运行需要赋予执行权限 ./docker-dev.sh start - 访问: API服务器将在 'http://localhost:8000' 运行。
- API文档: 'http://localhost:8000/docs'
- 健康检查: 'http://localhost:8000/health'
3. 本地Python安装 (需要手动配置PostgreSQL)
- 前置条件:
- Python 3.8+
- 一个运行中的PostgreSQL数据库实例。
- 安装依赖:
pip install -r requirements.txt - 配置环境变量:
复制示例配置文件,并编辑 '.env' 文件,填入您的PostgreSQL数据库连接信息和API密钥。
cp .env.example .env # 编辑 .env 文件,设置 DATABASE_POSTGRES_URL 和 API_KEY - 初始化数据库:
python app/init_db.py - 启动API服务器:
API服务器将在 'http://localhost:8000' 运行。python app/main.py
服务器配置 (用于MCP客户端)
您的MCP客户端(例如LM Studio)可以通过以下配置连接到此Expense Tracker MCP服务器。此配置假定MCP客户端能够直接启动一个Python进程(例如通过Stdio传输),并设置所需的API密钥。
{ "mcpServers": { "expense-tracker": { "command": ["python", "app/main.py"], "args": [], "headers": { "x-api-key": "your-secret-api-key" } } } }
请注意:
- 'command': '["python", "app/main.py"]' 指示MCP客户端启动位于仓库根目录下的 'app/main.py' 文件作为一个Python进程。请确保MCP客户端的当前工作目录是仓库的根目录,或者调整为 '["python", "/path/to/your/expense-tracker/app/main.py"]'。
- 'args': 此服务器在作为MCP服务器运行时通常不需要额外的命令行参数,因此此处为空数组。
- 'headers': '{"x-api-key": "your-secret-api-key"}' 用于身份验证。请将 'your-secret-api-key' 替换为你在 '.env' 文件或 'API_KEY' 环境变量中设置的实际API密钥。
- 此MCP服务器通过FastAPI框架提供服务,并暴露以下核心功能供LLM客户端调用:
- 'get_expenses': 获取支出记录资源。
- 'get_categories': 获取支出类别资源。
- 'create_merchant_rule': 创建商户匹配规则的工具。
- 'get_merchant_rules': 获取商户匹配规则资源。
基本使用方法
-
设置API密钥: 确保在 '.env' 文件或 'docker-compose.yml' 中设置了 'API_KEY' 环境变量。所有需要认证的API请求都必须在请求头中包含 'x-api-key: your-api-key'。
-
通过REST API进行操作: 您可以使用任何HTTP客户端(如'curl'、Postman、Insomnia)与FastAPI后端交互。
- 创建类别:
curl -X POST "http://localhost:8000/categories/" \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key" \ -d '{"name": "Groceries", "description": "Food shopping", "color": "#FF6B6B"}' - 添加支出:
curl -X POST "http://localhost:8000/expenses/" \ -H "Content-Type: application/json" \ -H "x-api-key: your-api-key" \ -d '{ "amount": 45.67, "merchant": "Walmart Supercenter", "description": "Weekly groceries", "transaction_date": "2024-01-15T10:30:00" }'
- 创建类别:
-
通过MCP客户端与LLM交互: 配置好您的MCP客户端(如LM Studio)后,LLM可以利用上述MCP接口进行智能交互。例如:
- LLM可以请求获取您的最新支出记录,进行分析并给出消费建议。
- LLM可以识别未分类的支出,并提示您创建新的商户规则。
- LLM可以帮助您总结特定时间段的支出情况,或者根据支付方式进行预算分析。
信息
分类
生产力应用