Skip to main content
Glama
Whooing MCP

Whooing MCP

by jmjeong

whooing-mcp

npm version

MCP server for Whooing (후잉) personal finance — manage transactions, view spending, balance sheets, budgets, and more.

Setup

1. Get API Credentials

  1. Go to Whooing App Settings

  2. Note your app_id, token, and signature

  3. Find your section_id from the API or URL

2. Configure Environment

export WHOOING_APP_ID=3
export WHOOING_TOKEN=your_token
export WHOOING_SIGNATURE=your_signature
export WHOOING_SECTION_ID=your_section_id

Or create a .env file (see .env.example).

Related MCP server: t212-mcp-server

Usage

stdio mode (Claude Code, Claude Desktop)

npx whooing-mcp

HTTP mode (daemon)

npx whooing-mcp --http --port 8182

Claude Code config (~/.mcp.json)

{
  "mcpServers": {
    "whooing": {
      "command": "npx",
      "args": ["whooing-mcp"],
      "env": {
        "WHOOING_APP_ID": "3",
        "WHOOING_TOKEN": "...",
        "WHOOING_SIGNATURE": "...",
        "WHOOING_SECTION_ID": "..."
      }
    }
  }
}

Claude Desktop config

{
  "mcpServers": {
    "whooing": {
      "command": "npx",
      "args": ["whooing-mcp"],
      "env": {
        "WHOOING_APP_ID": "3",
        "WHOOING_TOKEN": "...",
        "WHOOING_SIGNATURE": "...",
        "WHOOING_SECTION_ID": "..."
      }
    }
  }
}

Tools

Tool

Description

Parameters

whooing_pl

Profit & loss (spending/income by category)

start_date?, end_date?, section_id?

whooing_entries

Transaction list with account names; supports client-side filters

start_date?, end_date?, limit?, account_ids?, account_name?, l_account_id?, r_account_id?, min_money?, max_money?, item?, memo?, item_contains?, memo_contains?, query?, keywords?, sort_column?, sort_order?, section_id?

whooing_search_entries

Search-focused transaction lookup

start_date?, end_date?, limit?, account_ids?, account_name?, l_account_id?, r_account_id?, min_money?, max_money?, item?, memo?, item_contains?, memo_contains?, query?, keywords?, sort_column?, sort_order?, section_id?

whooing_entry_detail

Single transaction lookup by ID

entry_id, section_id?

whooing_duplicate_candidates

Find likely duplicate transactions in a date range

start_date?, end_date?, limit?, account_ids?, account_name?, l_account_id?, r_account_id?, min_money?, max_money?, item?, memo?, item_contains?, memo_contains?, query?, keywords?, sort_column?, sort_order?, include_memo?, min_group_size?, page_limit?, max_pages?, section_id?

whooing_account_activity

Account-focused transaction summary

start_date?, end_date?, account_id?, account_name?, limit?, recent_limit?, page_limit?, max_pages?, max_api_calls?, section_id?

whooing_balance

Balance sheet (assets, liabilities, capital)

start_date?, end_date?, section_id?

whooing_budget

Budget status

start_date?, end_date?, section_id?

whooing_accounts

Full account list

section_id?

whooing_sections

List all sections (가계부)

(none)

whooing_calendar

Daily income/expense overview by month

start_month?, end_month?, section_id?

whooing_monthly_summary

Month-by-month income, expense, net amount, and transaction count

start_month?, end_month?, section_id?

whooing_frequent_items

Saved frequent transaction templates

section_id?

whooing_latest_items

Recent unique items for autocomplete (60 days)

section_id?

whooing_add_entry

Create a new transaction entry

entry_date, l_account_id, r_account_id, item, money, memo?, section_id?

whooing_bulk_add_entries

Create multiple transaction entries

entries[], section_id?

whooing_update_entry

Update an existing entry

entry_id, entry_date, l_account_id, r_account_id, item, money, memo?, section_id?

whooing_delete_entry

Delete an entry

entry_id, section_id?

  • Dates use YYYYMMDD format. Default: current month (1st to today).

  • Calendar months use YYYYMM format. Default: current month.

  • whooing_entries filters are applied after fetching the date-range results from Whooing. Use a larger limit when searching busy periods.

  • whooing_search_entries uses Whooing's server-side filters first (item, memo, account, amount range) and paginates with the max cursor when needed.

  • account_name matches account titles case-insensitively, so account_name: "Game" can narrow results to a game expense category without looking up its account ID first.

  • When account_name matches multiple accounts, search tools split the query per account so each request can still use Whooing's server-side account filter.

  • min_money and max_money filter whooing_entries by amount.

  • query and keywords match against both item and memo; item_contains and memo_contains target one field.

  • item and memo pass through Whooing's raw search syntax. Use these for exact item matches, * wildcards, item detail parentheses, memo AND terms, and ! exclusions.

  • sort_column accepts entry_date, item, money, total, l_account_id, or r_account_id; sort_order accepts desc or asc.

  • Entry-list date ranges are validated before calling Whooing because entries.json supports at most one year per request.

  • For efficient broad searches, prefer item_contains, memo_contains, account filters, and amount filters over generic keywords; query is optimized as server-side item-or-memo search.

  • whooing_duplicate_candidates groups entries with the same date, amount, accounts, and item; set include_memo to make memo part of the duplicate key. Use account/item/amount filters to keep duplicate scans efficient.

  • whooing_account_activity accepts either account_id or account_name and summarizes only matching entries.

  • Search tools cap internal Whooing requests with max_api_calls to stay within API rate guidance.

  • whooing_account_activity also tries Whooing's account-specific aggregate APIs for daily changes, item totals, and client totals.

  • whooing_monthly_summary uses report_summary.json with rows_type=month for direct monthly income/expense totals.

  • whooing_bulk_add_entries validates account IDs for each row before creating it and reports partial failures.

  • section_id defaults to WHOOING_SECTION_ID env var.

  • Write tools resolve account types automatically from the account cache. Use whooing_accounts to look up account IDs first.

Running as a daemon (macOS launchd)

Create ~/Library/LaunchAgents/com.whooing.mcp.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key><string>com.whooing.mcp</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/homebrew/bin/npx</string>
        <string>whooing-mcp</string>
        <string>--http</string>
        <string>--port</string>
        <string>8182</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>WHOOING_APP_ID</key><string>3</string>
        <key>WHOOING_TOKEN</key><string>YOUR_TOKEN</string>
        <key>WHOOING_SIGNATURE</key><string>YOUR_SIGNATURE</string>
        <key>WHOOING_SECTION_ID</key><string>YOUR_SECTION_ID</string>
        <key>PATH</key><string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
    </dict>
    <key>KeepAlive</key><true/>
    <key>RunAtLoad</key><true/>
    <key>StandardOutPath</key><string>/tmp/whooing-mcp.log</string>
    <key>StandardErrorPath</key><string>/tmp/whooing-mcp.err</string>
</dict>
</plist>
chmod 600 ~/Library/LaunchAgents/com.whooing.mcp.plist
launchctl load ~/Library/LaunchAgents/com.whooing.mcp.plist

Development

git clone https://github.com/jmjeong/whooing-mcp.git
cd whooing-mcp
npm install
npm run build
node dist/cli.js

License

MIT

Available Tools

18 tools
whooing_account_activityA
Read-only

Summarize activity for one account in a date range, including totals, frequent items, and recent matching entries.

Inputs: start_date, end_date, section_id, account_id, +6 more.

whooing_accountsA
Read-only

Get the full list of accounts (assets, liabilities, income, expenses, capital)

Inputs: section_id.

whooing_add_entryA

Create a new transaction entry in Whooing (e.g. expense, income). Use whooing_accounts first to look up account IDs.

Inputs: entry_date (required), l_account_id (required), r_account_id (required), item (required), +3 more.

whooing_balanceA
Read-only

Get balance sheet (assets, liabilities, capital) as of a date range

Inputs: start_date, end_date, section_id.

whooing_budgetB
Read-only

Get budget status (expenses) for a date range. Dates use YYYYMM (month) format.

Inputs: start_date, end_date, section_id.

whooing_bulk_add_entriesA

Create multiple transaction entries in Whooing. Use whooing_accounts first to look up account IDs.

Inputs: entries (required), section_id.

whooing_calendarA
Read-only

Get daily income/expense overview for a month. Shows per-day transaction counts, income, and expenses.

Inputs: start_month, end_month, section_id.

whooing_delete_entryA

Delete a transaction entry from Whooing. Use whooing_entries to find the entry_id first.

Inputs: entry_id (required), section_id.

whooing_duplicate_candidatesA
Read-only

Find likely duplicate transactions in a date range by grouping same date, amount, accounts, and item.

Inputs: start_date, end_date, section_id, limit, +19 more.

whooing_entriesB
Read-only

Get transaction entries (individual transactions with account names) for a date range

Inputs: start_date, end_date, section_id, limit, +17 more.

whooing_entry_detailA
Read-only

Get one transaction entry by entry_id. Use this before updating or deleting when you already know the ID.

Inputs: entry_id (required), section_id.

whooing_frequent_itemsB
Read-only

List frequently used transactions (templates for quick entry). Returns saved transaction templates organized by slots.

Inputs: section_id.

whooing_latest_itemsA
Read-only

Get recent unique transaction items from the past 60 days. Useful for autocomplete suggestions when adding new entries.

Inputs: section_id.

whooing_monthly_summaryA
Read-only

Get month-by-month income, expense, net amount, and transaction count for a month range.

Inputs: start_month, end_month, section_id.

whooing_plA
Read-only

Get profit & loss summary (spending and income by category) for a date range

Inputs: start_date, end_date, section_id.

whooing_search_entriesA
Read-only

Search transactions with query, account, amount, and date filters. Prefer this for natural-language find/search requests.

Inputs: start_date, end_date, section_id, limit, +17 more.

whooing_sectionsA
Read-only

List all sections (가계부) in the Whooing account

Inputs: no named parameters.

whooing_update_entryA

Update an existing transaction entry in Whooing. Use whooing_entries to find the entry_id, and whooing_accounts to look up account IDs.

Inputs: entry_id (required), entry_date (required), l_account_id (required), r_account_id (required), +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 18 tools

    Disambiguation5/5

    Each tool has a clear and distinct purpose, such as adding an entry vs. searching entries vs. getting accounts. There is minimal overlap, and descriptions help differentiate similar tools like 'entries' and 'search_entries'.

    Naming Consistency4/5

    Most tools follow a consistent 'whooing_verb_noun' pattern (e.g., whooing_add_entry, whooing_delete_entry). However, a few tools like 'whooing_accounts' and 'whooing_budget' omit the verb, which is a minor inconsistency but still understandable.

    Tool Count5/5

    With 18 tools, the server covers a comprehensive set of operations for personal finance management without being overwhelming. Each tool serves a necessary function, and the count is well-scoped for the domain.

    Completeness5/5

    The tool surface provides full lifecycle coverage: listing accounts, creating/reading/updating/deleting entries, balance sheets, profit/loss, budgets, calendar views, duplicate detection, and search. No obvious gaps exist for typical personal finance tracking.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides read-only access to Monarch Money financial data, enabling AI assistants to analyze transactions, budgets, and cashflow.
      4
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides read-only access to Trading 212 accounts, enabling AI assistants to retrieve portfolio positions, account summaries, instrument data, and transaction history.
      32 npm
      5
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Provides read-only access to Kledo accounting data, enabling listing and searching of invoices, contacts, products, and running financial reports through natural language.
      20 npm
      Apache 2.0
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides read-only access to self-hosted cash-flow forecasts, balances, transactions, and credit-card data, letting AI clients answer spending and upcoming-obligation questions without modifying financial settings.
      MIT