费用追踪服务

一个基于Model Context Protocol (MCP)的费用追踪服务,通过与Claude AI的自然语言交互管理个人或业务支出。

  • by Jiten-Bhalavat
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Jiten-Bhalavat/Expense-Tracker-MCP

使用说明

费用追踪器 MCP

一个强大的 模型上下文协议(MCP)服务器 这款用于费用追踪的工具能与Claude桌面版无缝集成。它基于FastMCP构建,让您能够通过与Claude AI的自然对话来管理个人或业务费用。

🎯 这个项目是什么?

这是一个费用跟踪系统,它利用模型上下文协议(Model Context Protocol)为像Claude这样的AI助手提供费用管理功能。您无需使用传统的用户界面,而是可以通过自然语言对话与您的费用数据进行交互。

主要特点

  • 💰 添加费用记录支出时,需注明日期、金额、类别、子类别及备注
  • 📊 列出支出查看任意日期范围内的费用
  • 📈 总结支出获取任意时间段内按类别划分的汇总数据和总计
  • 🏷️ 类别访问预定义的费用类别,以便进行一致的跟踪
  • 💾 SQLite 数据库所有数据均存储在本地的轻量级数据库中
  • 🤖 人工智能集成与Claude Desktop对话,自然管理您的开支

它是如何工作的

服务器提供了MCP工具,由Claude代您调用:

  1. add_expense(date, amount, category, subcategory, note) - 添加新的费用条目
  2. list_expenses(start_date, end_date) - 提取指定日期范围内的费用
  3. summarize(start_date, end_date, category) - 按类别获取费用汇总
  4. categories 资源 - 查看可用的费用类别

与克劳德的示例对话:

  • “10月15日增加45.50美元的杂货费用”
  • “给我看看10月1日到10月15日的所有支出”
  • “我这个月在食物上花了多少钱?”
  • “总结我上周按类别划分的支出”

📦 安装与设置

1. 安装uv

首先,安装 uv 包管理器。访问 紫外线(UV)相关文档 请参阅安装说明。

2. 创建一个项目文件夹

为您的项目创建一个新目录:

mkdir expense-tracker-mcp
cd expense-tracker-mcp

3. 初始化项目

在你的终端中打开该文件夹并运行:

uv init .

4. 安装依赖项

将 FastMCP 添加到您的项目中:

uv add fastmcp

使用方法

检查版本

验证FastMCP安装(请确保您已在虚拟环境中):

fastmcp version

测试服务器

以开发模式运行服务器:

uv run fastmcp dev main.py

运行服务器

以生产模式运行服务器:

uv run fastmcp run main.py

🚀 开始使用Claude桌面版

安装后,您可以通过Claude Desktop使用自然语言与您的支出进行交互。以下是您可以执行的操作:

示例命令

增加费用:

  • “今天增加50美元的杂货费用”
  • “10月10日记录120元的电费支出,备注‘月度公用事业费’”

查看费用:

  • “给我显示10月1日至10月15日的所有费用”
  • “列出我这周的开销”

分析支出:

  • “按类别总结我这个月的开销”
  • “我上周在交通上花了多少钱?”
  • “我十月的总支出是多少?”

管理类别:

  • “给我看看可用的费用类别”
  • “食品下面有哪些子类别?”

添加到Claude Desktop

安装到Claude桌面版

运行以下命令将服务器添加到Claude Desktop:

uv run fastmcp install claude-desktop main.py

⚠️ 重要提示: 这个命令可能会报错,因为生成的配置文件将仅包含 "uv" 而不是到(文件/目录的)绝对路径 uv 可执行文件。

修复配置

您需要手动更新Claude桌面配置文件并替换 "uv" 使用您的绝对路径 uv 可执行文件。

示例路径(Windows):

"C:\\Users\\jiten\\AppData\\Roaming\\Python\\Python313\\Scripts\\uv.exe"

找到你的UV路径:

  • Windows:运行 where uv 在 PowerShell 或命令提示符中
  • macOS/Linux:运行 which uv 在终端中

将FastAPI转换为FastMCP

如果你已经有一个现有的 FastAPI 应用程序,将其转换为 FastMCP 是非常直接的:

from fastmcp import FastMCP
from main import app   # Import your FastAPI app

mcp = FastMCP.from_fastapi(
    name="XYZ",
    app=app, 
)
        
if __name__ == "__main__":
    print("Running MCP")
    mcp.run()

📁 项目结构

expense-tracker-mcp/
├── main.py              # Main MCP server file with tools and resources
├── categories.json      # Predefined expense categories and subcategories
├── expenses.db          # SQLite database storing all expense records
├── pyproject.toml       # Project dependencies and metadata
├── uv.lock              # Lock file for reproducible dependency installation
└── README.md            # This documentation file

数据库模式

这个 expenses 表结构:

列 类型 描述
id 整数 主键(自增)
date 文本 费用日期(YYYY-MM-DD 格式)
amount REAL 费用金额
category 文本 主类别(例如,食品、交通)
subcategory 文本 可选子类别
note 文本 可选备注或描述

许可证

麻省理工学院(MIT)