个人开支追踪服务

一个轻量级的MCP服务器,用于通过FastMCP和SQLite追踪个人开支。

  • by SAYOUNCDR
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 SAYOUNCDR/Expense-Tacker-MCP-Server

使用说明

ExpenseTracker FastMCP服务器

轻量级MCP服务器,用于使用FastMCP和SQLite跟踪个人支出。此存储库提供了一个小型的本地MCP服务器,您可以在计算机上运行,用于快速实验、演示或作为远程部署的基础。

这是什么-

  • 一个最小的MCP服务器,提供了一些工具来记录和查询费用。
  • 将数据存储在本地SQLite数据库中: expenses.db (自动创建)。
  • 发送JSON资源 expense://categories 由...支持 categories.json.

主要特点

  • add_expense(日期、金额、类别、子类别、注释)
  • list_expenses(开始日期、结束日期)
  • update_expense(expense_id,…)
  • delete_expense(expense_id)
  • 总结(开始日期、结束日期、类别=无)
  • 类别资源(JSON)

快速启动(Windows-cmd.exe)

  1. 创建虚拟环境并激活它(Windows cmd.exe):

首先,如果你还没有全局使用uv,请安装它:

pip install uv

然后创建并激活虚拟环境:


python -m venv .venv
.venv\Scripts\activate
  1. 安装依赖项。如果你使用 pip 直接安装FastMCP。如果您的项目使用锁文件或 pyproject.toml,更喜欢这样。
pip install fastmcp
# or, if you maintain requirements.txt:
pip install -r requirements.txt

可选:如果您正在使用 uv help CLI(在某些FastMCP指南中使用),您可以通过以下方式添加FastMCP uv CLI而不是pip。只有当您已经拥有 uv 工具已安装:

uv add fastmcp
  1. 在开发模式下运行服务器(打开FastMCP studio(如果可用)):
uv run fastmcp dev main.py
  1. 运行服务器以正常使用:
uv run fastmcp run main.py

备注

  • 数据库: expenses.db 将在旁边创建 main.py 第一次跑步。
  • 编辑 categories.json 自定义类别;MCP categories 资源在每次调用时都会重新读取它。

使用FastMCP Studio/Claude Desktop进行测试

您可以使用FastMCP studio(开发模式)或通过将服务器添加到Claude Desktop在本地测试和检查MCP服务器。

  1. 运行FastMCP工作室(开发模式)
uv run fastmcp dev main.py

这将在开发模式下运行服务器,并打开FastMCP的工作室/检查器(如果可用),以便您可以交互式地调用工具。

  1. 将服务器添加到Claude Desktop(可选)

如果您希望Claude Desktop管理并与您的MCP服务器通信,请使用FastMCP/uv帮助程序安装Claude Desktop帮助程序(仅当您拥有 uv 已安装帮助程序):

uv run fastmcp install claude-desktop main.py

使用Claude Desktop时的重要注意事项:

  • 更改服务器代码后,完全重新启动Claude Desktop,以便重新加载MCP服务器。这意味着完全退出应用程序(从系统托盘/任务栏退出),然后重新打开它。
  • 如果Claude Desktop无法加载您的MCP服务器,请编辑Claude Desktop MCP配置:打开Claude Desktop,转到设置→ 开发者→ 编辑配置。你会看到这样的JSON:
{
  "mcpServers": {
    "ExpenseTracker": {
      "command": "C:\\Users\\Sayoun Parui\\AppData\\Roaming\\Python\\Python313\\Scripts\\uv.exe", # here if u see  only  uv 
      "args": [
        "run",
        "--with",
        "fastmcp",
        "fastmcp",
        "run",
        "C:\\Users\\Sayoun Parui\\Desktop\\ExpenceTracker MCP Server\\main.py"
      ],
      "env": {},
      "transport": "stdio",
      "type": null,
      "cwd": null,
      "timeout": null,
      "description": null,
      "icon": null,
      "authentication": null
    }
  },
  "preferences": {
    "menuBarEnabled": false,
    "legacyQuickEntryEnabled": false
  }
}
  • 如果 command 值只显示 uv (或一个简短的名称)您应该将其替换为 uv 可执行。要查找完整路径,请打开Windows cmd.exe 并运行:
where uv

复制返回的完整路径(例如 C:\Users\You\AppData\Roaming\Python\Python313\Scripts\uv.exe)并将其粘贴到 command Claude配置中的字段,替换短 uv 价值。保存配置并重新启动Claude Desktop。

如果 where uv 返回多个结果,选择一个指向您所需的Python环境(全局或您安装的环境 uv).

工具/API(您可以称之为)

  • add_expense(日期:str,金额:float,类别:str,子类别:str=“”,注意:str=”“)->{状态,id}
  • list_expenses(开始日期:str,结束日期:str)->费用对象列表
  • update_expense(expense_id:int、日期、金额、类别、子类别、注释)->{status}
  • delete_expense(expense_id:int)->{status}
  • summer(start_date:str,end_date:srt,category:可选[str])->[{category,total_amount}]
  • 资源: expense://categories --退货 categories.json 内容(mime_type:应用程序/json)

示例调用(伪):

# with FastMCP client or via the studio, call the `add_expense` tool:
result = mcp.call('add_expense', date='2025-10-01', amount=12.50, category='food', subcategory='snacks', note='coffee')

项目布局

  • main.py --MCP服务器实现和工具定义。
  • categories.json --资源使用的默认类别/子类别。
  • expenses.db --SQLite数据库(自动创建)。

部署和下一步

这个项目故意设计得很小,所以很容易转换为远程服务。生产就绪部署的想法:

  • 将数据库移动到Postgres或其他托管数据库(RDS、Cloud SQL)。
  • 将应用程序容器化并部署到ECS、EKS、GKE或应用程序服务。
  • 向MCP端点添加身份验证,并保护网关后面的服务器。

短期建议:

  • 添加基本的模式迁移工具(alembic/sqlalchemy或简单的迁移脚本)。
  • 添加输入验证和更丰富的日期处理(ISO 8601强制执行)。
  • 为工具功能添加单元测试。

贡献

欢迎小额捐款。建议工作流程:

  1. 分叉回购
  2. 创建要素分支
  3. 打开一个PR,简要描述更改

请保持变化小而集中。如果您计划进行大型重构(数据库更改、API重新设计),请首先打开一个问题。