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)
- 创建虚拟环境并激活它(Windows
cmd.exe):
首先,如果你还没有全局使用uv,请安装它:
pip install uv然后创建并激活虚拟环境:
python -m venv .venv
.venv\Scripts\activate- 安装依赖项。如果你使用
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- 在开发模式下运行服务器(打开FastMCP studio(如果可用)):
uv run fastmcp dev main.py- 运行服务器以正常使用:
uv run fastmcp run main.py备注
- 数据库:
expenses.db将在旁边创建main.py第一次跑步。 - 编辑
categories.json自定义类别;MCPcategories资源在每次调用时都会重新读取它。
使用FastMCP Studio/Claude Desktop进行测试
您可以使用FastMCP studio(开发模式)或通过将服务器添加到Claude Desktop在本地测试和检查MCP服务器。
- 运行FastMCP工作室(开发模式)
uv run fastmcp dev main.py这将在开发模式下运行服务器,并打开FastMCP的工作室/检查器(如果可用),以便您可以交互式地调用工具。
- 将服务器添加到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可执行。要查找完整路径,请打开Windowscmd.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强制执行)。
- 为工具功能添加单元测试。
贡献
欢迎小额捐款。建议工作流程:
- 分叉回购
- 创建要素分支
- 打开一个PR,简要描述更改
请保持变化小而集中。如果您计划进行大型重构(数据库更改、API重新设计),请首先打开一个问题。
