Expense Mcp

io.github.justfsl50由 GitHub 账号 justfsl50 发布v1.0.1更新于 Oct 24, 2026

Personal Expense Tracker MCP Server — expenses, income, budgets & savings goals

已验证STDIO仅桌面效率与工作流金融

概览

AI 生成的概览

让助手记录个人支出与收入、管理预算和储蓄目标,并生成消费汇总与洞察。

可以做什么
提供添加带分类和描述的支出或收入的工具,可搜索和筛选记录,并按日、周、月、年汇总消费。它还能管理按分类的月度预算并给出使用比例提醒,创建和更新储蓄目标,并报告主要分类、日均支出等消费模式。删除操作会通过确认提示执行,汇总、预算和目标数据也以资源形式提供。
适用场景
适合在 MCP 客户端中通过自然对话进行个人记账,例如记录一笔消费、查看某分类是否超出预算,或回顾一个月的支出。适用于单用户或小型多用户场景,数据存放在本地或自建数据库中。
运行要求
以 Python 包 expense-mcp 在本地通过 stdio 运行,也可在本地地址上以 HTTP 模式运行。需要 Python 环境,并通过 DATABASE_URL 指定数据库地址(默认 SQLite,支持 PostgreSQL);CURRENCY 和 DEFAULT_USER 为可选设置。未声明身份验证。
安装前请注意
它会写入和删除你的记账数据库,请将 DATABASE_URL 指向你愿意修改的数据库并做好备份。PostgreSQL 地址可能包含凭据,应保存在客户端配置中而不要外传。删除操作虽有确认提示,但仍会移除记录。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Expense Mcp,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

💰 expense-mcp

Personal Expense Tracker as an MCP Server — works with Claude Desktop, Cursor, nanobot, Windsurf, and any MCP-compatible client.

[Python] [MCP SDK] [License]


Features

  • 📝 Track expenses & income with categories and descriptions
  • 📊 Spending summaries — today, week, month, year
  • 💳 Budget management — set limits per category, get alerts at 80%/100%
  • 🎯 Savings goals — create goals, track progress with visual bars
  • 📈 Spending insights — top categories, daily averages, biggest days
  • 🗑️ Safe deletion — Pydantic-based elicitation for confirmation
  • 🔄 Dual transport — stdio (local) + streamable HTTP (remote)

Install

bash
# with uv (recommended)uv pip install git+https://github.com/justfsl50/expense-mcp.git
# with pippip install git+https://github.com/justfsl50/expense-mcp.git
# from sourcegit clone https://github.com/justfsl50/expense-mcp.gitcd expense-mcppip install -e .

Quick Start

Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (Mac):

json
{  "mcpServers": {    "expense-mcp": {      "command": "uv",      "args": ["run", "expense-mcp"],      "env": {        "DATABASE_URL": "sqlite:///expenses.db",        "CURRENCY": "₹",        "DEFAULT_USER": "me"      }    }  }}

Cursor / Windsurf

Same config — paste into MCP settings under the respective app.

nanobot

json
{  "mcp": {    "servers": [{      "name": "expense-mcp",      "command": "uv run expense-mcp"    }]  }}

HTTP mode (remote / multi-client)

bash
python server.py http# Server runs at http://127.0.0.1:8000/mcp

Environment Variables

VariableDefaultDescription
DATABASE_URLsqlite:///expenses.dbSQLite or PostgreSQL URL
CURRENCY₹Currency symbol
DEFAULT_USERdefaultUser ID for multi-user setups

PostgreSQL example:

DATABASE_URL=postgresql://user:pass@localhost:5432/expenses

Tools

ToolDescriptionRead-only
expense_addSave expense or income❌
expense_searchFilter by text, date, category, amount✅
expense_summarytoday / week / month / year totals✅
expense_deleteDelete with Pydantic confirmation prompt❌
expense_insightsSpending patterns and top categories✅
budget_setSet monthly category budget❌
budget_listView budgets with usage %✅
goal_createCreate savings goal❌
goal_updateAdd money toward goal❌
goal_listView goals with progress bars✅

Resources

URIDescription
expense://summary/monthCurrent month summary
expense://budgets/currentThis month's budgets
expense://goals/allAll savings goals

Prompts

PromptTitleDescription
monthly_reviewMonthly ReviewStart a full month spending review
budget_setupBudget SetupAuto-suggest budgets from history
savings_planSavings PlanCreate a plan for a savings goal

Usage Examples

Just talk naturally in any MCP client:

"spent 500 on groceries""show food expenses this week""how much did I spend last month?""set food budget to 5000""am I within budget?""save 1000 toward my iPhone goal""give me spending insights""delete expense #12"

Architecture

  • MCP SDK v1.26.0 with FastMCP + json_response=True
  • Typed lifespan — DB engine managed via AppContext dataclass
  • SQLAlchemy 2.0 — DeclarativeBase, sessionmaker
  • Pydantic v2 — input validation, elicitation schemas
  • Tool annotations — readOnlyHint, destructiveHint, idempotentHint
  • Context logging — ctx.info(), ctx.warning() in tools

Database Schema

expenses  — id, user_id, amount, category, description, type, date, source, created_atbudgets   — id, user_id, category, amount, monthgoals     — id, user_id, name, target, saved, deadline

License

MIT — free to use, modify, and distribute.

来源:README.md,提交 6538644

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.1最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分