mcpField
M
myfinance-mcp

myfinance-mcp

远程服务
myfinance-mcp.com金融数据21 周前更新

关于 myfinance-mcp

myfinance-mcp 是面向个人财务管理的远程 MCP 服务,可通过对话记录收支、导入银行账单并查看预算与净资产。金额统计由服务器使用 SQL 计算,并支持多币种和聊天内交互式面板。

主要功能

  1. 01对话记录收入与支出
  2. 02导入 CSV、PDF 和截图账单
  3. 03管理预算与周期性支出
  4. 04查询账户余额和净资产
  5. 05支持 150 多种货币

适用场景

  1. 01通过对话登记日常消费
  2. 02批量导入银行交易记录
  3. 03查看分类预算进度和趋势
  4. 04汇总账户余额与净资产

MCP 相关

它是供 Claude、ChatGPT、Codex 和 Cursor 等客户端连接的远程 MCP 服务,提供财务记录、查询、导入与管理工具,并在支持 MCP Apps 的客户端中显示交互式面板。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://myfinance-mcp.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

MyFinance MCP

一款用于个人理财的远程 MCP 服务,也是 Claude、ChatGPT、Codex 和 Cursor 的 AI 记账工具——通过对话记录开支、拍摄收据照片、导入任意银行的账单(CSV、PDF 或截图),并为你计算预算、趋势和净资产,支持 150 多种货币。

网站: myfinance-mcp.com · Beta 期间免费 · 由 Rteam 构建

快速开始

服务已托管并可直接使用,只需将其连接到你的 MCP 客户端:

https://myfinance-mcp.com/mcp

在 Claude 上: 自定义 → 连接器 → + 添加 → 添加自定义连接器 → 为其命名并粘贴 URL → 继续 → 身份验证:立即登录(如果表单要求填写 OAuth 客户端,请保留 使用 Claude 已发布的身份(推荐);自动注册也可以)→ 添加。切勿选择“使用你自己的 OAuth 客户端”,也不要填写客户端 ID/密钥,否则会导致无法登录。所有 Claude 套餐均可使用(免费版允许添加一个自定义连接器)。

在 ChatGPT 上(网页版): 开启开发者模式(设置 → 应用 → 高级设置),然后选择插件 → + → 添加自定义 MCP 服务(旧版菜单:设置 → 应用 → 创建)→ 粘贴 URL → 选择 OAuth,客户端 ID/密钥留空 → 创建并登录 → 在聊天中输入 @ 即可使用。根据 OpenAI 帮助中心的信息,带有写入操作(记账所需)的自定义 MCP 服务仅适用于 Business、Enterprise 和 Edu;Pro 可只读访问;帮助中心未列出 Free、Go 或 Plus 套餐的开发者模式,因此如果你看不到该选项,请使用 Codex。

在 Cursor 上: 添加到 Cursor,或者在 ~/.cursor/mcp.json 的 mcpServers 下添加 "myfinance": { "url": "https://myfinance-mcp.com/mcp" },然后在自定义设置中点击 MyFinance 旁边的连接。

在 Codex 上(包含在所有 ChatGPT 套餐中,包括免费版):

codex mcp add myfinance --url https://myfinance-mcp.com/mcp
codex mcp login myfinance

首次连接时,你可以使用 Google 登录,或使用发送到你邮箱的一次性验证码登录;首次登录会创建你的 MyFinance 账户。重新连接后,你的数据仍会保留。各客户端的分步指南:myfinance-mcp.com/install。

原因

  • 无需应用、无需表单、无需电子表格。 “在 Lidl 买食品杂货花了 24.50 欧元”就是完整的工作流。
  • 所有数字均通过 SQL 计算。 数据和计算都由服务端负责;AI 读取计算结果,绝不猜测算术结果。
  • 支持 150 多种货币。 交易保留原始货币(使用 ECB 和乌克兰国家银行汇率,并从 2024 年 3 月起为其他所有 ISO 货币提供公开的每日汇率快照);交易日期对应的基础货币汇率会固定保存,因此历史数据不会被改写。
  • 支持任意银行,通过账单导入。 上传 CSV/PDF 导出文件或银行应用的截图;一次调用即可导入数百条记录,并通过幂等去重、合并手动记录的重复项和核对总额。ZenMoney 用户也可以改用只读同步。
  • 个人与企业账户区分。 账户和交易均可标记实体,并可在各处筛选;导出的 CSV 也包含此标记,方便交给会计师。
  • 在聊天中查看仪表板。 预算、趋势、摘要和账户会以交互式面板(MCP Apps)的形式直接显示在对话中。

技术栈

  • Bun - 运行时和包管理器
  • Express - HTTP 层
  • MCP SDK - 基于 Streamable HTTP 的 Model Context Protocol(无状态)
  • OAuth 2.1 - PKCE、动态客户端注册和客户端 ID 元数据文档(Claude 已发布的身份);使用 Google 登录或通过邮件发送的一次性验证码登录(两种方式均为可选)
  • Prisma + PostgreSQL - 所有金额均使用 numeric,所有统计数据均通过 SQL 聚合计算
  • Docker - 单容器部署

MCP 工具

工具描述
log_expense记录一笔消费、账单或收据(负数金额 = 退款)
log_income记录收入:工资、发票、退款、利息
log_transfer在账户之间转账,支持跨币种;不会计为支出
import_transactions批量导入账单(每次最多 500 行):按银行参考编号或推导键去重,合并双重记录,检查对账情况;并列出发现的定期付款
get_summary按类别、商户、月份或周汇总期间数据;提供支出或收入明细、与上一期间的比较,以及任意报告币种;使用 trend_months 查看逐月趋势
get_transactions列出并筛选交易,支持分页(总数、has_more、offset)
update_transaction修正现有交易的任意字段,包括类型或账户;对某商户的类别修正会被记住
delete_transactions一次调用即可按 ID 删除一笔或多笔交易
get_accounts查看所有账户的余额和净资产,并换算为基础货币
manage_account管理账户:创建、更新、设置余额(将指定日期的实际余额设为基准)、合并(合并到另一个账户并去重)、删除
set_budget设置每月分类限额或总限额;超出限额的记录或导入操作会提示
get_budget_progress查看实时预算进度和剩余天数;以仪表板形式呈现
get_recurring查看订阅、房租和账单:已保存的项目及从记录中发现的项目、月度和年度总额,以及未来 30 天内的待付款项
set_recurring保存、更改或移除定期付款;对于手动记账的用户,auto_log 会在付款日期自动记录
get_settings查看已登录账户、基础货币、时区、邮件摘要选项和服务端版本
update_settings更改基础货币、时区或邮件摘要
export_dataprofile:以 JSON 格式导出除交易以外的所有数据;transactions:以 CSV 格式导出,每页 2000 行
zenmoneyZenMoney(自动检测国际版和 .ru 后端):paste_token、sync、status、按账户切换、disconnect;只读、增量同步,并保留手动编辑
bank封闭测试版,仅限受邀账户。 开放银行服务(Enable Banking,欧盟/英国):list_banks、start consent、sync、status、按账户切换、disconnect;连接正常时也会每日自动同步
delete_all_data永久删除用户资料和所有数据(GDPR 数据清除)

在 0.18.0 中合并的工具(ping、get_trends、delete_transaction、create_account、update_account、delete_account、merge_accounts、log_balance、export_profile、export_transactions、connect_zenmoney、sync_zenmoney、connect_bank、sync_bank)不再列出,但仍可通过旧名称调用,因此保留旧工具列表的客户端仍能正常工作。

MCP Apps

三个工具会返回交互式仪表板(ui://myfinancemcp/dashboard),并直接显示在支持 MCP Apps 的客户端聊天中:预算环形图(get_budget_progress)、类别摘要和月度趋势(get_summary),以及账户/净资产面板(get_accounts)。支持浅色和深色主题。

安全与隐私

  • 收据照片由你的 AI 客户端解析;图片绝不会传到此服务。
  • 金额、商家和备注绝不会写入服务日志(盲日志);使用事件会记录工具名称、耗时、错误类别和经过编码的参数值,并关联到账户,账户删除时也会一并删除。
  • 使用 OAuth 2.1 和 PKCE、轮换刷新令牌(声明支持 offline_access),并对登录进行速率限制。
  • 所有 20 个工具都带有 MCP 注解(标记只读和破坏性操作,并将连接器工具标记为开放世界),客户端可据此正确控制确认流程。
  • 银行访问严格为只读:ZenMoney 使用用户自己的 API 令牌;在封闭测试阶段,通过 Enable Banking 获取开放银行授权(银行验证用户身份;我们不会接触凭据)。会话 ID 和令牌均以 AES-256-GCM 加密存储。
  • CSV 导出和立即彻底删除都是工具,而非支持工单。
  • 托管实例:数据存储在欧盟(Supabase,eu-central-1),与数据库之间使用 TLS,并固定 CA。服务端会将每次查询限制在你的账户范围内;数据库自身的 API 对所有人关闭(行级安全,默认拒绝所有访问)。
  • 401 项自动化端到端检查(涵盖公共客户端和机密客户端的完整 OAuth 流程,包括浏览器绑定和受众检查、每个工具、导入去重语义以及 GDPR 删除)是部署的硬性门槛;CI 会在每次推送时运行 lint 和类型检查。

披露政策请参阅 SECURITY.md。

自行托管

采用 MIT 许可;凡是能运行 Bun 和 Postgres 的环境都可以运行。

site/ 中的落地页使用 Switzer 字体,该字体的免费许可不允许再分发,因此仓库中不包含字体文件。如需相同的外观,请从 Fontshare 下载字体,并将 Switzer-Variable.woff2 放入 site/fonts/;若没有该字体,页面会回退到系统字体。MCP 服务不需要该字体。

1. Postgres

任何 PostgreSQL 15+ 均可。Supabase 免费套餐很合适:创建项目并复制 session pooler 连接字符串(IPv4)。

应用架构,然后关闭 Supabase 公共 Data API 对这些表的访问(Prisma 创建表时默认关闭行级安全,而 Supabase 会向任何持有项目 anon key 的人公开所有 public 表)。每次运行新增表的 db push 后,都要重新运行第二条命令:

bun install
bunx prisma db push
psql "$DATABASE_URL" -f prisma/rls.sql

数据库 TLS:Supabase 主机名会自动通过 Supabase 根 CA 验证;对于其他主机,请在 DATABASE_URL 中设置 sslmode=。

2. 环境变量
变量描述
PORT服务端口(默认值为 8788)
BASE_URL服务的公开 URL(OAuth 发行者)
LEGACY_BASE_URLS(可选) 同一容器提供服务的旧版公开源,以逗号分隔;绑定到这些源的令牌仍然有效,其 /authorize 会重定向到 BASE_URL
DATABASE_URLPostgres 连接字符串
MYFINANCE_MCP_EMAIL引导用户的邮箱
MYFINANCE_MCP_PASSWORD_HASH引导用户的密码哈希(见下文)
GOOGLE_CLIENT_ID(可选) 用于“使用 Google 继续”的 Google OAuth 客户端 ID
GOOGLE_CLIENT_SECRET(可选) Google OAuth 客户端密钥
RESEND_API_KEY(可选) Resend 密钥:用于发送邮箱登录码和注册通知
NOTIFY_EMAIL(可选) 接收注册通知的邮箱
FROM_EMAIL(可选) 已验证的发件人;设置 RESEND_API_KEY 后会启用邮箱登录
TELEGRAM_BOT_TOKEN(可选) 用于发送新用户注册通知的 Telegram 机器人
TELEGRAM_CHAT_ID(可选) 接收通知的聊天
TOKEN_ENC_KEYZenMoney 和银行连接所必需:64 个十六进制字符(openssl rand -hex 32),用于加密存储的服务提供方令牌
EB_APP_ID(可选) Enable Banking 应用 ID;只有设置此项和密钥后才会启用银行连接
EB_PRIVATE_KEY_B64(可选) Enable Banking 应用私钥 PEM 的 Base64 编码
EB_API_ORIGIN(可选) Enable Banking API 源,默认值为 https://api.enablebanking.com
REFRESH_REUSE_GRACE_MS(可选) 轮换后的刷新令牌继续有效的时长,默认值为 30000(并行刷新)
AUTO_SYNC_INTERVAL_MS(可选) 银行自动同步间隔,默认每小时一次(同步超过 20 小时未更新的连接);设为 0 可禁用

生成密码哈希:

bun -e "console.log(await Bun.password.hash(process.argv[1]))" 'your-password'
3. 运行
cp .env.example app.env   # docker compose reads app.env, not .env
docker compose up -d      # uses the included Dockerfile, port 8788

在前面配置 nginx(或任何终止 TLS 的代理),并将 BASE_URL 指向你的域名。site/ 中的静态着陆页为可选项——如果需要,可从同一源提供服务。

开发

bun install
cp .env.example .env   # fill in your values
bun run dev            # hot reload on :8788
bun run e2e            # end-to-end suite (spawns its own server; WRITES to the DATABASE_URL database)
bun run lint

端到端测试套件(359 项检查)覆盖完整的 OAuth 流程(发现、动态注册、客户端 ID 元数据文档、PKCE、刷新令牌轮换、撤销;公开客户端和机密客户端)、每个工具、语句导入去重语义、针对模拟 Diff API 的 ZenMoney 同步,以及 GDPR 数据删除。

API 端点

端点描述
POST /mcpMCP 端点(Bearer 身份验证)
GET /health健康检查
GET /.well-known/oauth-authorization-serverOAuth 元数据发现
GET /.well-known/oauth-protected-resource/mcp受保护资源元数据
POST /register动态客户端注册(客户端也可以使用 https client_id:客户端 ID 元数据文档)
GET /authorizeOAuth 授权(登录页面)
POST /token令牌交换
GET /auth/google启动 Google 登录(配置后可用)
POST /login/email、POST /login/email/verify电子邮件登录验证码:发送、验证(配置后可用)
GET /connect/enablebanking/callback、POST /connect/enablebanking/confirm银行授权返回和确认步骤
GET /api/stats公开的汇总计数(仅计数,不含金额)

许可证

MIT - Rteam FZE LLC

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。