个人财务追踪服务

一个基于MCP服务器的个人财务追踪工具,支持通过自然语言指令记录和查询收支情况。

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

使用说明

费用跟踪MCP服务器

作为远程MCP服务器构建的个人财务跟踪器。你告诉克劳德,而不是打开一个应用程序: "Add ₹500 今天午餐” 或 “上个月我在食物上花了多少钱?” --它奏效了。

建于 FastMCP (Python)、SQLite,并部署在 地平线.

实时服务器URL: https://accessible-tomato-meerkat.fastmcp.app/mcp


它做什么

服务器向任何兼容MCP的客户端公开8个工具和1个资源:

工具 说明
add_expense 记录新的支出(日期、金额、类别、子类别、备注)
edit_expense 按ID更新现有条目的任何字段
delete_expense 按ID删除,或跨日期范围批量删除
list_expenses 按日期范围和可选类别筛选的列表条目
summarize_expenses 按类别(或子类别深入查看)汇总
add_income 记录信用/收入条目
list_income 按日期范围列出收入条目
get_budget_summary 将实际支出与预算进行比较,包括净收入

资源: expense://categories --21个类别及其子类别的JSON分类。克劳德在每次写电话之前都会阅读这篇文章,以确保分类的一致性。


建筑

You (natural language)
    │
    ▼
Claude Desktop (MCP client)
    │  HTTPS
    ▼
Horizon Gateway (port 8080) ── auth + routing
    │  internal
    ▼
FastMCP Server (port 8081) ── your tools
    │
    ▼
SQLite DB (/tmp/expenses.db)

Horizon在网关层处理身份验证。FastMCP服务器只接收经过预身份验证的请求,不实现自己的身份验证提供程序。


技术栈

  • FastMCP 3.x --MCP服务器框架
  • aiosqlite --异步SQLite用于非阻塞数据库操作
  • SQLite --嵌入式数据库(Horizon免费层上的临时数据库)
  • 地平线(省长) --内置身份验证的托管MCP托管

本地设置

先决条件

  • Python 3.11或更高版本
  • 紫外线 (推荐)或pip

克隆并安装

git clone https://github.com/Sidhant22/test-remote-mcp-server
cd test-remote-mcp-server

使用紫外线(推荐):

uv venv
uv sync

使用pip:

python -m venv .venv
pip install fastmcp aiosqlite

激活虚拟环境

Windows(命令提示符):

.venv\Scripts\activate

Windows(PowerShell):

.venv\Scripts\Activate.ps1

macOS/Linux:

source .venv/bin/activate

在本地运行

python main.py

服务器启动于 http://localhost:8080/mcp 默认情况下使用stdio传输。要在HTTP模式下运行(与部署的版本相同):

fastmcp run main.py --transport http --host 127.0.0.1 --port 8080

连接到克劳德桌面

选项A——使用实时远程服务器

  1. 打开克劳德桌面→ 设置 → 连接器
  2. 点击 添加自定义连接器
  3. 粘贴: https://accessible-tomato-meerkat.fastmcp.app/mcp
  4. 命名(例如。 SID费用跟踪器)
  5. 关闭并重新打开Claude Desktop
  6. 开始新的聊天并尝试: “增加费用₹500 今天午餐”

选项B--连接到本地服务器

将以下内容添加到您的Claude Desktop配置文件中:

窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "expense-tracker": {
      "command": "python",
      "args": ["C:\\path\\to\\test-remote-mcp-server\\main.py"],
      "env": {}
    }
  }
}

替换 C:\\path\\to\\ 带有克隆仓库的实际路径。在Windows上,使用双反斜杠。

编辑配置后,完全重新启动Claude Desktop(使用Windows上的任务管理器结束所有Claude进程,然后重新打开)。


项目结构

test-remote-mcp-server/
├── main.py              # FastMCP server — all tools and resource
├── categories.json      # Category taxonomy resource
├── pyproject.toml       # Dependencies
└── README.md

环境变量

只有在部署到Horizon或其他云平台时才需要这些。对于本地使用,不需要环境变量。

变量 描述
DB_PATH 覆盖SQLite文件路径(默认: /tmp/expenses.db)

部署到Horizon

  1. 将您的仓库推送到GitHub
  2. 登录地址: horizon.prefect.io
  3. 连接您的GitHub帐户并选择此仓库
  4. 将入口点设置为 main.py
  5. 地平线自动检测 pyproject.toml 并安装依赖项
  6. 您的服务器已上线 https://<your-server-name>.fastmcp.app/mcp

注: 免费套餐使用 /tmp 用于SQLite存储。每次重新部署时都会重置数据。为了持久性,设置 DB_PATH 迁移到装载的卷路径或迁移到托管数据库,如 图尔索.


示例提示

在Claude Desktop中连接后:

Add an expense of ₹450 on 2025-06-03 under food > groceries, note: "Weekly vegetables"
List all my expenses between 2025-06-01 and 2025-06-30
Summarize my food expenses for June 2025
Edit expense with id 3 — change the amount to ₹350
Delete all transport expenses between 2025-06-01 and 2025-06-30
Add income of ₹55000 on 2025-06-01, source: salary, note: "June salary"
Give me a budget summary for June 2025 with these limits — food: ₹2000, transport: ₹1500, shopping: ₹2000

已知限制

  • 临时存储 --SQLite在 /tmp 每次Horizon重新部署时都会被擦除
  • 单一地区 --免费套餐没有地域冗余
  • 无经常性费用 --目前仅手动输入

路线图

  • []持久数据库(Turso/PPostgreSQL)
  • []经常性支出工具
  • []通过文件附件工具导出CSV
  • []持续的预算限制(存储在数据库中,不是每次调用都通过)
  • []多币种支持

相关文章

涵盖架构、关键工程挑战和经验教训的完整报告:


许可证

麻省理工学院