使用说明
费用跟踪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——使用实时远程服务器
- 打开克劳德桌面→ 设置 → 连接器
- 点击 添加自定义连接器
- 粘贴:
https://accessible-tomato-meerkat.fastmcp.app/mcp - 命名(例如。 SID费用跟踪器)
- 关闭并重新打开Claude Desktop
- 开始新的聊天并尝试: “增加费用₹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
- 将您的仓库推送到GitHub
- 登录地址: horizon.prefect.io
- 连接您的GitHub帐户并选择此仓库
- 将入口点设置为
main.py - 地平线自动检测
pyproject.toml并安装依赖项 - 您的服务器已上线
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
- []持续的预算限制(存储在数据库中,不是每次调用都通过)
- []多币种支持
相关文章
涵盖架构、关键工程挑战和经验教训的完整报告:
许可证
麻省理工学院