Cashflow

io.github.theluckystrike由 GitHub 帳號 theluckystrike 發布v0.22.6更新於 Oct 24, 2026

Bank CSV cashflow: categorise, summarise per currency, reconcile against expenses.

概覽

AI 產生的概覽

把銀行 CSV 匯出轉成本地帳本,讓助理匯入、分類、依幣別彙總、與收據對帳並匯出。

可以做什麼
  • 匯入銀行 CSV,自動辨識表頭列、日期、金額與幣別欄位、數字地區格式及重複列
  • 依日期區間、帳戶、分類或文字列出與搜尋交易,並提供各幣別合計
  • 設定分類規則,並依 id 為交易指定分類
  • 依分類、月份、帳戶或交易對象彙總收入、支出與淨額,一律分幣別
  • 辨識訂閱與週期性扣款(週期、年化成本),並將銀行扣款與支出記錄中的收據對帳
  • 將指定區間匯出為 CSV 或 JSON,並列出已匯入帳戶
適用情境
適合在對話中處理個人或小型事業記帳:把每月銀行匯出變成分類彙總、找出訂閱支出、檢查哪些扣款沒有對應收據。適合希望在本機處理、不想訂閱記帳 SaaS 的使用者。
執行需求
以本機程序執行,僅支援桌面端。說明指出 npm 套件尚未發布,目前可用 .mcpb 一鍵包,或複製原始碼並以 Node.js 建置安裝。可選的 MCP_LICENSE_KEY 可啟用 Pro 功能;不需帳號或網路連線。
安裝前請注意
會處理敏感的銀行流水資料,但說明稱資料僅存於本機 JSON 檔案且不發出任何網路請求。匯入會寫入該帳本,設定分類規則會重新套用到已存交易,匯出可能覆蓋既有檔案。Pro 功能需一次性付費授權碼;免費版對帳戶數、歷史範圍、規則數與匯出有限制。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Cashflow,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-bank-statement

In the official MCP Registry (io.github.theluckystrike/bank-statement-csv-categorize-reconcile-ledger).

[bank-statement demo]

Export the CSV from your bank, say "import this", and the month is readable. This MCP server turns a bank export into a local ledger: it finds the header row under whatever preamble the bank prints above it, works out which column is the date, which is the money and which way the money went, and reads amounts in the file's own locale, so 1 234,56 from mBank and 1,234.56 from a US bank both become the same number. A debit is stored negative and a credit positive, once, at import, so nothing downstream has to guess. Re-importing the same export adds nothing: every line carries a hash of its date, amount, currency and description, with an occurrence index, so two identical coffees on one day stay two transactions while a second import of the same file stays zero. Your rules categorise transactions as they arrive, summaries report money in, money out and the net per currency and never mix currencies, recurring_detect finds the subscriptions and what each costs per year, and reconcile_expenses matches bank debits against the receipts in mcp-expense-tracker so you can see which debits have no receipt and which receipts never reached the bank. Everything is a plain JSON file on your own machine; nothing is uploaded anywhere.

Turn a bank CSV into a categorised, reconciled month in chat, no accounting SaaS required.

Bank profiles: Revolut, Wise, mBank, PKO BP, ING, N26, and a generic reader that works from the headers alone.

File shapes it reads without being asked: UTF-8 and UTF-16 (either byte order, as Excel on Windows saves it), CRLF, LF and CR-only line endings, quoted fields holding commas, quotes and newlines, 1.234,56 and 1,234.56, accounting parentheses (12.50) and a trailing minus 12.50- (both negative), and a mixture of currencies inside one file. A cell holding - or nothing is skipped and named in skipped_lines rather than read as zero. When the date column is ambiguous (03/04/2026 with no value above 12 anywhere), the assumed order is stated in the response instead of silently picking one.

60-second install

npm publish for @theluckystrike/mcp-bank-statement is pending. Until then, the .mcpb one-click bundle or a clone+build is the working path, both are verified below.

One-click (.mcpb): download bank-statement.mcpb from the latest release and double-click it in Claude Desktop: https://github.com/theluckystrike/mcp-servers/releases/latest

(claude_desktop_config.json):

json
{  "mcpServers": {    "bank-statement": {      "command": "npx",      "args": ["-y", "@theluckystrike/mcp-bank-statement"]    }  }}

Claude Code:

sh
claude mcp add bank-statement -- npx -y @theluckystrike/mcp-bank-statement

(.cursor/mcp.json):

json
{  "mcpServers": {    "bank-statement": {      "command": "npx",      "args": ["-y", "@theluckystrike/mcp-bank-statement"]    }  }}

The npx form above starts working the moment the package is published. Until then, use the .mcpb bundle above, or build from source with exactly these three commands:

sh
git clone https://github.com/theluckystrike/mcp-servers.git && cd mcp-serversnpm installnpm run build -w packages/mcp-license -w servers/spreadsheet -w servers/bank-statement

Then point your client's command at node with one arg: the absolute path to servers/bank-statement/dist/index.js.

To run in Pro mode set MCP_LICENSE_KEY in the same config block, or call license_activate once with your key.

Tools

ToolWhat it does
statement_importRead a bank CSV into the ledger. Detects the header row under any preamble, the date, description, amount (or debit and credit) and currency columns, the date order and the number locale. Reports what it detected, what it stored, how many lines were duplicates of what is already there, and every line it skipped with the reason
transactions_listList transactions in a date range, filtered by account, category or uncategorized, with totals per currency
transactions_searchFind transactions whose description, counterparty, category or account contains the query. Substring only, never a regex
category_rulesSet or list the rules that categorise transactions. An empty match is refused, because it would stamp one category on the whole ledger. A plain match is a case-insensitive substring; regex: true compiles the pattern only if it cannot backtrack exponentially, and (a+)+ is refused and used as a substring. Setting rules re-applies them to stored transactions
transaction_categorizeSet the category on transactions by id. Nothing changes unless every id exists
statement_summaryMoney in, money out and the net for a range, grouped by category, month, account or counterparty, always per currency
reconcile_expensesMatch bank debits against the receipts in mcp-expense-tracker: same currency, same amount, within a date window. Reports matches, bank lines with no receipt, and receipts that never reached the bank. The expense ledger is only ever read
recurring_detectFind subscriptions and recurring charges: the same counterparty, an amount that barely moves, a steady cadence. Reports the cadence, the typical amount, the next expected date and the annualised cost. Two charges are one interval, so the yearly cost is withheld (cadence_confirmed: false) until a third charge confirms it
statement_exportWrite a range to csv or json and return the path. Written atomically, so a failure never leaves a half file. Replacing an existing file is allowed and reported (overwrote_existing_file)
accounts_listThe imported accounts, with bank, currencies, transaction count, date range and last balance
license_statusShow free or Pro mode
license_activateActivate a Pro key (verified offline)

Resource bank://month returns this month's money in, money out and net, grouped by category, per currency. Prompt monthly_review drives the whole month-end pass: totals, uncategorised lines, subscriptions, reconciliation.

Free vs Pro

FreePro
Accounts2unlimited
History read backlast 12 monthsall of it
Category rules5unlimited
Import, list, search, summariseyesyes
reconcile_expensesyes, 31 days at a timeany date range
recurring_detectyes, last 3 months, 5 chargesfull history, every charge
statement_exportnoyes

Import always stores every row, whatever the tier: silently dropping lines on the way in would make the ledger disagree with the bank. The free limit is on what is read back.

Get Pro: https://mcp.zovo.one/buy/bank-statement, $19 one-time for this server, $39 for every server, lifetime. Keys are verified offline; nothing is sent anywhere.

Pairs with

  • mcp-expense-tracker, log the receipts and the mileage; reconcile_expenses reads that ledger and tells you which bank debits have no receipt behind them.
  • mcp-spreadsheet, this server parses your bank CSV with the spreadsheet server's own RFC 4180 reader and locale number parser, so 1 234,56 means the same thing in both. Use it to slice an exported range.
  • mcp-invoice, the income side: raise the invoice, then watch the payment land in statement_summary grouped by counterparty.

Privacy

Everything stays on your machine. Statements are parsed locally and stored in a plain JSON file under ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/bank-statement/. The server makes no network calls at all, not for licensing, not for parsing, not for anything. Deleting that directory resets it.

Built by theluckystrike. Support: [email protected]

Use these docs as an MCP server

Any MCP client (Claude, Cursor, Windsurf, VS Code) can read this repository's documentation directly via GitMCP - no install:

來源:servers/bank-statement/README.md,提交 6535b33

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

3
  1. v0.22.6最新Oct 14, 2026
  2. v0.22.3Sep 23, 2026
  3. v0.21.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分