mcpField
L
Ledgr

Ledgr

ローカル
github.com金融データ212 週間前に更新

Ledgr について

Ledgrは、財務データを自分のサーバーで管理したい個人向けのセルフホスト型家計管理アプリです。銀行同期、予算、投資追跡、レポートに加え、AIアシスタント向けのMCPサーバーを備えています。

主な機能

  1. 01PlaidまたはSimpleFINの銀行同期
  2. 02取引の自動カテゴリ分類
  3. 03カテゴリ別の月間予算
  4. 04投資ポートフォリオの追跡
  5. 05定期請求の検出とレポート
  6. 06AIチャットと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エージェント対応を備えた、セルフホスト可能な個人向け家計管理アプリです。

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 経由でも接続できます
  • スマートな分類 — 4 層の処理パイプライン:独自のルール > 加盟店の既定値 > Plaid のカテゴリ > AI によるフォールバック
  • 予算管理 — カテゴリごとに月次予算を設定し、進捗をリアルタイムで追跡できます
  • 投資の追跡 — ポートフォリオの保有資産、運用実績の履歴、配分の内訳を確認でき、Plaid または SimpleFIN から自動で同期されます
  • 定期的な請求の検出 — サブスクリプションや定期的な請求を自動で識別します
  • 財務レポート — 支出、収入、純資産、カテゴリ別の推移を時系列で確認できます
  • AI エージェント用インターフェース(MCP) — Claude Code、Claude Desktop、Cursor、または任意の MCP クライアントから財務情報を照会できます
  • アプリ内 AI チャット — ダッシュボードから直接、財務に関する質問をできます
  • BYOK AI — チャットや分類用に、ご自身の API キー(OpenAI、Anthropic、Google、またはローカルモデル)を利用できます
  • CSV/OFX/QFX のインポートと CSV エクスポート — Plaid に対応していない口座のデータを取り込んだり、ご自身のデータを取り出したりできます
  • セルフホスト — PostgreSQL を含む Docker Compose を使用し、データがサーバーの外に出ることはありません
カテゴリ別の支出進捗を表示する 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 を設定してください(設定を参照)。設定したキーが優先されます。

銀行との同期を有効にするには、Plaid のキーを .env に追加してください。下記の銀行を接続するを参照してください(またはキーは設定せず、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 アカウントを取得し、Bridge プロバイダーから Setup Token を生成します
  2. アプリで Accounts > Link Bank に移動し、SimpleFIN オプションを選択します
  3. Setup Token を貼り付けて接続します

SimpleFIN には Webhook がないため、アカウントはリアルタイムではなく、毎日のスケジュール(SCHEDULER_SIMPLEFIN_SYNC_CRON。詳しくは設定を参照)で同期されます。投資保有資産も Plaid と同じ方法で同期されます。

AI エージェントを接続する

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)によって制限されています。

プロンプトの例:

  • 「今月、食料品にいくら使いましたか?」
  • 「予算の状況を見せて」
  • 「定期的な請求には何がありますか?」
  • 「第1四半期の支出レポートを作成して」
  • 「口座を同期して、残高を見せて」

比較

LedgrActual BudgetFirefly III
銀行口座の自動同期Plaid(12,000+ の銀行)または SimpleFINSimpleFIN(US/CA)、GoCardless(EU/UK)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いいえfalseAI エージェント向けの 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
データベースDrizzle ORM 経由の PostgreSQL 18
認証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. リポジトリをフォークします
  2. ブランチを作成します(git checkout -b feat/my-feature)
  3. 変更をコミットします
  4. プッシュしてプルリクエストを作成します

ライセンス

AGPL-3.0 — 自由にセルフホストできます。サーバーを変更して配布する場合は、変更内容をオープンソースにする必要があります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。