个人支出追踪服务

一个基于SQLite数据库的个人支出追踪服务,通过自然语言与Claude Desktop集成,提供支出管理功能。

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

使用说明

费用跟踪MCP服务器

一种模型上下文协议(MCP)服务器,用于使用SQLite数据库存储跟踪个人支出。该服务器与Claude Desktop集成,通过自然语言提供费用管理功能。

特性

  • ✅ 添加、更新和删除费用
  • ✅ 按日期范围列出费用
  • ✅ 按类别汇总费用
  • ✅ 根据多种条件灵活删除
  • ✅ 预定义的支出类别
  • ✅ 用于持久存储的SQLite数据库
  • ✅ 本地和远程部署选项

快速启动选项

选择最适合您的设置方法:

选项1:直接远程服务器(即时设置-仅限Claude Pro)

⚠️ 需要Claude Pro订阅 -直接URL连接是Pro的一项功能。

直接连接到部署的远程服务器,无需任何本地设置:

  1. 打开Claude Desktop配置文件:

    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 添加此配置:

{
  "mcpServers": {
    "expense-tracker": {
      "url": "https://boiling-aqua-trout.fastmcp.app/mcp"
    }
  }
}
  1. 重新启动克劳德桌面
  2. 立即开始跟踪费用! 🎉

备注:此远程服务器托管在FastMCP Cloud上。您的数据存储在远程服务器上。

没有克劳德·普罗吗? 使用下面的选项2通过本地代理服务器连接!


选项2:远程服务器的本地代理(免费用户和自定义)

✅ 与Claude Free计划合作! 运行一个本地MCP服务器,将请求代理到远程服务器。如果您没有Claude Pro,这是访问远程MCP服务器的方法。

使用案例:

  • 连接到Claude Free计划上的远程服务器
  • 添加自定义日志记录或中间件
  • 使用远程数据时在本地运行
  • 通过附加功能扩展功能

设置步骤:

  1. 安装uv (如果尚未安装):

Windows(PowerShell):

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 创建一个新项目:
mkdir expense-tracker-proxy
cd expense-tracker-proxy
uv init .
  1. 安装FastMCP:
uv add fastmcp
  1. 创建代理服务器 (main.py):
from fastmcp import FastMCP

mcp = FastMCP.as_proxy(
    "https://boiling-aqua-trout.fastmcp.app/mcp",
    name="expense tracker remote proxy server"
)

if __name__ == "__main__":
    mcp.run()
  1. 配置Claude桌面:
{
  "mcpServers": {
    "expense-tracker-proxy": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/Users/YOUR_USERNAME/path/to/expense-tracker-proxy",
        "run",
        "main.py"
      ]
    }
  }
}

重要:将路径替换为实际的项目目录。

  1. 重新启动克劳德桌面

代理方法的好处:

  • 添加自定义日志记录或中间件
  • 转发前修改请求/响应
  • 在本地运行,但利用远程基础设施
  • 易于扩展,具有其他功能

选项3:完全本地安装(完全控制和隐私)

对于那些想要完全控制、隐私和修改核心服务器逻辑的人来说。

先决条件

  • Python 3.10或更高版本
  • 紫外线 包管理器
  • Claude桌面应用程序

安装

1.安装uv

Windows(PowerShell):

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

macOS/Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

2.克隆或创建项目

# Clone this repository
git clone https://github.com/Sudhanvaha/expense-tracker-mcp-server.git
cd expense-tracker-mcp-server

# OR create from scratch
mkdir expense-tracker-mcp-server
cd expense-tracker-mcp-server
uv init .

3.安装依赖项

# Install required packages
uv add fastmcp

4.创建服务器

复制完整 main.py 将此存储库中的代码导入到您的项目中。

5.测试服务器

# Run the server
uv run main.py

6.为本地服务器配置Claude桌面

  1. 打开Claude Desktop配置文件(上述位置)

  2. 添加MCP服务器配置:

{
  "mcpServers": {
    "expense-tracker-local": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/Users/YOUR_USERNAME/path/to/expense-tracker-mcp-server",
        "run",
        "main.py"
      ]
    }
  }
}

重要:将路径替换为实际的项目目录路径。

  1. 重新启动克劳德桌面

用法

配置后(通过任何方法),您可以使用自然语言通过Claude与费用跟踪器进行交互:

增加支出

"Add an expense: $50 for groceries on 2024-12-14"
"Log $25.50 spent on transport today with note 'Uber to office'"

列出费用

"Show me all expenses from December 1 to December 14, 2024"
"List my expenses for last week"

更新费用

"Update expense ID 5 to $75"
"Change the category of expense 3 to 'entertainment'"

删除费用

"Delete expense with ID 5"
"Remove all food expenses from last week"
"Delete expenses in the transport category"

汇总费用

"Summarize my expenses by category for December 2024"
"What's my total spending on food this month?"

查看类别

"What expense categories are available?"
"Show me the list of categories"

可用工具

add_expense

在跟踪器中添加新费用。

参数:

  • date (字符串):YYYY-MM-DD格式的日期
  • amount (浮动):费用金额
  • category (string):费用类别
  • subcategory (字符串,可选):子类别
  • note (字符串,可选):附加注释

list_expenses

列出日期范围内的所有费用。

参数:

  • start_date (字符串):开始日期(YYYY-MM-DD)
  • end_date (字符串):结束日期(YYYY-MM-DD)

update_expense

更新现有费用(仅更新提供的字段)。

参数:

  • cid (int):要更新的支出ID
  • date (字符串,可选):新日期
  • amount (浮动,可选):新金额
  • category (字符串,可选):新类别
  • subcategory (字符串,可选):新建子类别
  • note (字符串,可选):新注释

delete_expense

根据各种标准删除费用。

参数:

  • id (int,可选):按ID删除
  • date (字符串,可选):按日期删除
  • category (字符串,可选):按类别删除
  • subcategory (字符串,可选):按子类别删除
  • amount (浮动,可选):按金额删除
  • note (字符串,可选):按注释删除
  • start_date & end_date (字符串,可选):按日期范围删除

summarize_expenses

获取按类别分组的费用汇总。

参数:

  • start_date (字符串):开始日期(YYYY-MM-DD)
  • end_date (字符串):结束日期(YYYY-MM-DD)
  • category (字符串,可选):按特定类别筛选

可用资源

expense://categories

以JSON格式返回可用支出类别的列表。

数据库模式

CREATE TABLE expenses (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    date TEXT NOT NULL,
    amount REAL NOT NULL,
    category TEXT NOT NULL,
    subcategory TEXT DEFAULT '',
    note TEXT DEFAULT ''
);

文件结构

对于完整的本地安装:

expense-tracker-mcp-server/
├── main.py              # MCP server code
├── expense.db           # SQLite database (auto-created)
├── categories.json      # Categories list (auto-created)
├── pyproject.toml       # uv project configuration
└── README.md            # This file

对于代理设置:

expense-tracker-proxy/
├── main.py              # Proxy server code (5 lines!)
└── pyproject.toml       # uv project configuration

默认类别

服务器具有以下默认类别:

  • 食物
  • 运输
  • 娱乐
  • 公用事业
  • 医疗保健

您可以修改 categories.json 添加或删除类别(仅限本地安装)。

部署选项比较

功能 直接远程(Pro) 本地代理(免费/Pro) 完全本地
克劳德计划 仅限Pro 免费&专业版 免费&专业版
设置时间 2分钟 5分钟 15-20分钟
隐私 远程存储 远程存储>完全隐私
定制 无 仅中间件 完全控制
维护 零 最小 手动更新
需要互联网 是 是 否
需要代码 否 5行 完整代码库
付费 专业订阅 免费 免费

故障排除

服务器未出现在Claude Desktop中

  1. 检查配置文件路径是否正确
  2. 确保 command 路径指向您的项目目录(用于本地/代理设置)
  3. 验证远程URL是否正确(用于直接远程设置)
  4. 完全重新启动克劳德桌面
  5. 检查Claude Desktop日志是否有错误

远程服务器问题

如果远程服务器没有响应:

  1. 检查您的互联网连接
  2. 验证URL: https://boiling-aqua-trout.fastmcp.app/mcp
  3. 尝试删除并重新添加配置
  4. 如果问题仍然存在,请通过GitHub issues联系我

代理服务器问题

如果代理不工作:

  1. 独立测试代理服务器: uv run main.py
  2. 检查远程URL是否可访问
  3. 验证您的FastMCP安装: uv add fastmcp
  4. 检查Claude Desktop配置路径

数据库错误(仅限本地安装)

如果遇到数据库错误:

# Delete the database to reset
rm expense.db

# Restart the server to recreate the database
uv run main.py

导入错误

# Reinstall dependencies
uv sync

发展

扩展代理服务器

您可以向代理服务器添加自定义逻辑:

from fastmcp import FastMCP

mcp = FastMCP.as_proxy(
    "https://boiling-aqua-trout.fastmcp.app/mcp",
    name="expense tracker remote proxy server"
)

# Add custom logging
@mcp.tool()
def log_expense_activity():
    """Log all expense activities"""
    # Your custom logging logic here
    pass

if __name__ == "__main__":
    mcp.run()

修改完整服务器

要修改服务器,请执行以下操作:

  1. 编辑 main.py
  2. 测试更改: uv run main.py
  3. 重新启动Claude Desktop以加载更改

部署您自己的远程服务器

想在FastMCP Cloud上部署自己的版本吗?

  1. 注册于 FastMCP云
  2. 遵循他们的部署说明
  3. 更新Claude Desktop配置或代理代码中的URL
  4. 与他人共享您的服务器URL!

贡献

欢迎投稿!请随时提交问题或拉取请求。

路线图

  • []添加预算跟踪和警报
  • []支持多种货币
  • []经常性支出模板
  • []导出到CSV/Excel
  • []数据可视化和图表
  • []支持多用户身份验证
  • []远程服务器访问的身份验证

支持

关于以下问题:

致谢

内置:


⭐ 如果你觉得这个项目很有帮助,请考虑在GitHub上给它一颗星!

📧 问题?打开一个问题或联系 领英