mcpField
L
Ledgr

Ledgr

本地服务
github.com金融数据212 周前更新

关于 Ledgr

Ledgr 是面向希望自行托管财务数据的个人财务应用,可同步银行账户并管理预算、投资和报表。内置 MCP 服务让 AI 助手能够查询及更新财务信息。

主要功能

  1. 01Plaid 或 SimpleFIN 银行同步
  2. 02交易自动分类
  3. 03分类月度预算
  4. 04投资组合追踪
  5. 05账单识别与财务报表
  6. 06内置 AI 聊天与 MCP 服务

适用场景

  1. 01查看某月各类别支出
  2. 02跟踪预算与投资组合
  3. 03生成收入、支出和净资产报告

MCP 相关

Ledgr 提供内置 MCP 服务,向兼容客户端开放账户、交易、预算、报表、投资和账单等查询及操作工具。访问由 OAuth 读取、写入和同步权限控制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"kentaniguchi-r-ledgr": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DATABASE_URL",
"-e",
"MCP_ENABLED",
"-e",
"LEDGR_DATA_DIR",
"-e",
"LEDGR_URL",
"-e",
"BETTER_AUTH_URL",
"ghcr.io/kentaniguchi-r/ledgr:0.3.4"
],
"env": {
"DATABASE_URL": "<DATABASE_URL>",
"MCP_ENABLED": "<MCP_ENABLED>",
"LEDGR_DATA_DIR": "<LEDGR_DATA_DIR>",
"LEDGR_URL": "<LEDGR_URL>",
"BETTER_AUTH_URL": "<BETTER_AUTH_URL>"
}
}
}
}
启动命令docker run -i --rm -e DATABASE_URL -e MCP_ENABLED -e LEDGR_DATA_DIR -e LEDGR_URL -e BETTER_AUTH_URL ghcr.io/kentaniguchi-r/ledgr:0.3.4
需要配置的环境变量
DATABASE_URL密钥PostgreSQL connection string (Ledgr needs its own Postgres; docker-compose.yml in the repo provides one)
MCP_ENABLEDTurns on the /api/mcp endpoint (off by default)
LEDGR_DATA_DIRDirectory where generated secrets are persisted
LEDGR_URLPublic base URL of this instance; used as the OAuth issuer and MCP resource identifier
BETTER_AUTH_URL密钥Base URL for sign-in; must match LEDGR_URL

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/kentaniguchi-r/ledgr:0.3.4

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Ledgr

Ledgr

可自托管的个人财务应用,支持自动同步银行数据和 AI Agent。

License: AGPL v3 TypeScript Next.js Docker MCP

Ledgr 仪表盘

Ledgr 通过 Plaid 或 SimpleFIN 连接你的银行账户,自动同步并分类交易,提供预算、投资追踪、账单检测和财务报告——所有功能都运行在你自己的服务器上,数据也由你自己掌控。

它还提供 MCP 服务,因此你可以通过自然对话,让 Claude 等 AI 助手查询你的财务状况。

You: "How much did I spend on dining out last month?"
Claude: Based on your transactions, you spent $342.18 on dining out in April...
Claude Code 中的 Ledgr MCP 演示
通过 MCP 在 Claude Code 中查询你的财务状况

功能

  • 自动同步银行数据 — 通过 Plaid 连接 12,000 多家银行(实时 Webhook 同步或定时轮询);如果不想使用 Plaid 开发者账户,也可以通过 SimpleFIN 连接
  • 智能分类 — 四级处理流程:你的规则 > 商户默认分类 > Plaid 分类 > AI 兜底
  • 预算 — 按类别设置月度预算,实时追踪进度
  • 投资追踪 — 投资组合持仓、业绩历史和资产配置明细,自动从 Plaid 或 SimpleFIN 同步
  • 定期账单检测 — 自动识别订阅和定期扣款
  • 财务报告 — 追踪支出、收入、净资产和类别趋势
  • AI Agent 接口(MCP) — 通过 Claude Code、Claude Desktop、Cursor 或任何 MCP 客户端查询你的财务状况
  • 应用内 AI 聊天 — 直接在仪表盘中询问财务相关问题
  • 自带 AI API 密钥(BYOK) — 使用你自己的 API 密钥(OpenAI、Anthropic、Google 或本地模型)进行聊天和分类
  • CSV/OFX/QFX 导入和 CSV 导出 — 支持 Plaid 未覆盖的账户,也可用于导出你的数据
  • 自托管 — 使用 Docker Compose 和 PostgreSQL,数据绝不会离开你的服务器
Ledgr 预算页面,显示各类别支出进度
按类别设置月度预算,并对照实际支出追踪进度

Ledgr 支出报告,显示类别明细
支出、收入、现金流、趋势和净资产报告
## 快速开始

需要安装 Docker 和 Docker Compose。

curl -fsSL https://raw.githubusercontent.com/KenTaniguchi-R/ledgr/main/scripts/install.sh | sh

这会创建一个 ledgr/ 目录,下载 docker-compose.yml,并启动应用。

想先查看操作步骤?
mkdir ledgr && cd ledgr
curl -O https://raw.githubusercontent.com/KenTaniguchi-R/ledgr/main/docker-compose.yml
docker compose up -d

访问 http://localhost:4200,创建账户,然后开始探索。

首次启动时,Ledgr 会生成一个加密密钥和会话密钥,并将它们存储在应用数据卷中。请将该数据卷(或 /data/encryption-key 文件)与数据库一同备份——如果丢失密钥,就无法访问 Plaid 和 SimpleFIN 令牌等加密数据。想自行管理密钥?请在 .env 文件中设置 ENCRYPTION_KEY(参见配置),该设置优先级更高。

在 .env 中添加 Plaid 密钥即可启用银行同步——请参见下文的连接银行(也可以不添加密钥,改用 SimpleFIN)。即使两者都不使用,也可以通过 CSV 导入使用应用。

连接银行

  1. 在 dashboard.plaid.com 注册,并从 Developers > Keys 获取 client_id 和密钥
  2. 将它们添加到与 docker-compose.yml 同级的 .env 文件中(如果没有该文件,请从 .env.example 开始):
    PLAID_CLIENT_ID=your_client_id
    PLAID_SECRET=your_secret
    PLAID_ENV=production      # or sandbox for fake data
    
  3. 重启:docker compose restart
  4. 在应用中,前往 Accounts > Link Bank,通过 Plaid 连接

Plaid 的免费试用方案包含 10 个生产环境连接和不限量的沙盒访问权限。之后,Launch 方案按使用量付费,无需签订合约。还没有 Plaid 密钥?应用仍可正常使用——通过 CSV 导入交易,之后再添加 Plaid。

通过 Plaid Link 连接银行
通过 Plaid 连接 12,000 多家银行
或通过 SimpleFIN 连接

SimpleFIN 开箱即用——无需开发者账户,也无需修改 .env。

  1. 获取 SimpleFIN Bridge 账户,并从你的桥接服务提供商处生成 Setup Token
  2. 在应用中,前往 Accounts > Link Bank,选择 SimpleFIN 选项
  3. 粘贴 Setup Token 以完成连接

SimpleFIN 不支持 Webhook,因此账户按每日计划同步(SCHEDULER_SIMPLEFIN_SYNC_CRON,参见配置),而非实时同步。投资持仓的同步方式与 Plaid 相同。

连接 AI Agent

Ledgr 内置了 MCP 服务,并支持插件。

首先,在 .env 中启用 MCP 端点,然后重启:

MCP_ENABLED=true

然后选择你的工具:

Claude Code

/plugin marketplace add KenTaniguchi-R/ledgr
/plugin install ledgr@ledgr

Codex CLI

codex plugin marketplace add KenTaniguchi-R/ledgr

OpenCode — 添加到 opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "plugin": ["ledgr"]
}

OpenClaw

openclaw plugins install ledgr --marketplace KenTaniguchi-R/ledgr

Hermes

hermes plugins install KenTaniguchi-R/ledgr
其他 MCP 客户端(Cursor、Windsurf、Cline 等)

将任意兼容 MCP 的客户端指向你的 Ledgr 实例:

http://localhost:4200/api/mcp

首次连接时,Ledgr 会将你重定向到 OAuth 流程,以授权访问。

### 可用工具
工具描述
list_accounts已关联的银行账户和余额
get_account_summary按账户类型汇总余额
get_transactions搜索和筛选交易
update_transaction_category重新设置交易类别
mark_transaction_transfer将交易标记为转账或取消转账标记
get_budget某月的预算进度
set_budget_category设置某个类别的预算金额
list_categories支出类别
get_spending_report指定日期范围内的支出明细
get_income_vs_expense收入与支出趋势
get_net_worth_history净资产随时间的变化
get_holdings投资组合持仓
get_portfolio_summary投资组合价值和配置
get_upcoming_bills定期交易和账单
get_dashboard_summary财务概览
show_financial_dashboard交互式仪表板小组件
sync_accounts触发银行同步

读取、写入和同步工具受 OAuth 权限范围(ledgr:read、ledgr:write、ledgr:sync)控制,你需要在授权时授予这些权限。

示例提示词:

  • “我这个月在食品杂货上花了多少钱?”
  • “显示我的预算状态”
  • “我有哪些定期账单?”
  • “生成第一季度的支出报告”
  • “同步我的账户并显示余额”

对比

LedgrActual BudgetFirefly III
自动银行同步Plaid(12,000+ 家银行)或 SimpleFINSimpleFIN(美国/加拿大)、GoCardless(欧盟/英国)SimpleFIN、GoCardless、Spectre(通过 Data Importer)
内置 MCP 服务是----
AI 分类是(BYOK)----
投资跟踪是----
可自托管是是是
数据库PostgreSQLSQLiteMySQL/Postgres
许可证AGPL-3.0MITAGPL-3.0

更新

docker compose pull
docker compose up -d

迁移会在容器启动时自动运行。

配置

变量必需默认值描述
ENCRYPTION_KEY否自动生成加密 Plaid 令牌和 API 密钥。首次启动时生成,并保存在应用数据卷中;可使用 openssl rand -hex 32 设置自己的密钥
BETTER_AUTH_SECRET否自动生成会话密钥,保存在应用数据卷中。可使用 openssl rand -base64 32 设置自己的密钥
PORT否4200应用的主机端口
POSTGRES_PASSWORD否ledgr数据库密码(在生产环境中请修改)
PLAID_CLIENT_ID否--Plaid 客户端 ID
PLAID_SECRET否--Plaid 密钥
PLAID_ENV否productionproduction 或 sandbox
PLAID_SYNC_MODE否pollpoll(定时)或 webhook(实时)
PLAID_WEBHOOK_URL否--Plaid webhook 的公开 URL(webhook 模式)
SCHEDULER_SIMPLEFIN_SYNC_CRON否45 4 * * *每日 SimpleFIN 账户同步(不支持 webhook,因此这是唯一的同步触发方式)
AI_PROVIDER否--openai、anthropic、google、openrouter 或 custom
AI_API_KEY否--用于 AI 聊天和分类的服务提供商 API 密钥
MCP_ENABLED否false为 AI Agent 启用 MCP 端点

所有选项请参阅 .env.example。

开发

**如果你要自托管 Ledgr,请使用上面的快速开始。**以下说明面向贡献者。

前提条件
  • Node.js 24+
  • pnpm 10+
  • PostgreSQL 18(或运行 pnpm dev:db,在 Docker 中启动一个实例)
设置
git clone https://github.com/KenTaniguchi-R/ledgr.git
cd ledgr
pnpm install
cp .env.example .env        # Fill in ENCRYPTION_KEY
pnpm dev:setup              # Start DB + migrate + dev server

如需从源代码在 Docker 中运行完整应用(而非拉取预构建镜像):

docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
命令
pnpm dev                    # Dev server (Turbopack)
pnpm test                   # Unit + integration tests
pnpm test:e2e               # Playwright E2E tests
pnpm lint                   # ESLint
pnpm typecheck              # Type checking
pnpm db:studio              # Drizzle Studio (DB browser)

技术栈

层选择
框架Next.js 16(App Router)
语言TypeScript
UIshadcn/ui + Tailwind CSS 4
图表Recharts 3
数据库PostgreSQL 18(通过 Drizzle ORM)
身份验证Better Auth
银行同步Plaid Node SDK、SimpleFIN
AIVercel AI SDK(BYOK)
MCPModel Context Protocol SDK
测试Vitest + Playwright + Stryker

路线图

  • Plaid Webhook 支持(实时同步)
  • AI 聊天助手(应用内)
  • OFX/QFX 导入
  • SimpleFIN 银行同步(Plaid 替代方案)
  • 自动检测账户间转账
  • 适配移动设备的 UI
  • 多币种支持
  • 自定义报告生成器
  • 目标跟踪(储蓄目标、还清债务)
  • 定期预算模板

请参阅 Issues,了解当前正在进行的工作。

安全

安全对财务应用至关重要。如果您发现漏洞,请不要公开提交 Issue。 请参阅 SECURITY.md,了解负责任地披露漏洞的说明。

有关 Ledgr 如何处理您的数据的详情,请参阅 PRIVACY.md。

贡献

欢迎贡献!请先提交 Issue,讨论您希望进行的更改。设置和工作流详情请参阅 CONTRIBUTING.md。

  1. Fork 此仓库
  2. 创建分支(git checkout -b feat/my-feature)
  3. 提交更改
  4. 推送并创建 Pull Request

许可证

AGPL-3.0 — 您可以自由自托管。如果您修改并分发此服务端,必须以开源方式发布您的更改。

评论

支持 Markdown

第一次接触 MCP?

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

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