finance-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HUD_PORT | No | Port for the HUD dashboard | 4321 |
| FINANCE_DB_PATH | No | Path to the SQLite database file | data/finance.db |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| finance_import_csvA | Import a Rocket Money transaction CSV export into the local store. Idempotent: re-importing the same or an updated export dedupes by a stable row hash, so only genuinely new transactions are added. Args: path (absolute path to the .csv). Returns counts (parsed/inserted/skipped), the date span, and any parsing warnings. |
| finance_data_overviewA | Summarize what's in the store: total transaction count, date span, last import time, and per-category inflow/outflow totals across all history. Call this first to know what data is available. No args. |
| finance_search_transactionsA | Search transactions with filters. All optional; combine freely. Returns newest-first, paginated. Amounts are signed (positive = money in, negative = money out). Args: from/to (YYYY-MM-DD), category, merchant (substring on name/descriptor), min_amount/max_amount (by absolute value), flow ('in'|'out'|'all'), limit (1-500, default 100), offset. Returns { total, count, offset, has_more, transactions: [{id, txn_date, amount, description, category, account, institution}] }. |
| finance_spending_by_categoryA | Total inflow and outflow grouped by category over an optional date range (defaults to all history). Sorted by outflow descending. Args: from/to (YYYY-MM-DD). Returns { range, categories: [{category, inflow, outflow, count}], total_outflow, total_inflow, net }. |
| finance_list_subscriptionsA | Detect recurring charges (subscriptions, memberships, bills) from transaction history using merchant-key normalization and cadence analysis. Flags price hikes vs the prior baseline. Args: none (analyzes all history). Returns { totals: {monthly, annual, count, hikes}, subscriptions: [{label, category, cadence, lastAmount, monthlyCost, occurrences, lastDate, nextDate, daysUntilNext, priceHike?}] }. |
| finance_cash_flow_forecastA | Project cash flow over the next N days from detected recurring bills (outflows) and recurring income (inflows, cadence-aware). Args: starting_balance (current available cash; default 0), window_days (7-90, default 30). Returns a day-by-day projection with the running balance and a flag for the lowest point. Note: starting_balance isn't in the CSV — pass your real current balance for an accurate low-point. |
| finance_merchant_historyA | Every charge from a given merchant (substring match on name/descriptor), with a spend summary. Useful for 'how much have I paid X' and spotting creep. Args: merchant (required), from/to (optional). Returns { merchant, count, total_spent, total_received, first_date, last_date, average, transactions: [...] }. |
| finance_debt_payoff_planA | Simulate a debt-payoff plan given a list of debts and a monthly budget. Strategy 'avalanche' (highest APR first) or 'snowball' (smallest balance first), or 'compare' to run both and show interest/time saved. Debts are provided by you (not read from the CSV). Args: debts: [{id, name, balance, apr, minPayment}], monthly_budget, strategy. Returns the plan(s): months to debt-free, total interest, debt-free date, per-debt payoff month. |
| finance_link_bankA | Connect a bank via SimpleFIN Bridge for real-time balances and ongoing transaction sync. Get a one-time setup token from bridge.simplefin.org (My Account → generate a token) and pass it here. Claims the token into a durable access URL stored locally, then runs an initial 365-day sync. Idempotent transactions (dedupe by provider id). Args: setup_token. Returns account balances + import counts. |
| finance_balancesA | Live per-account balances and net worth via SimpleFIN (fetched fresh on each call, then cached). Credit-card and loan balances are shown as positive amounts OWED and subtracted from net worth. If the live fetch fails, returns the last cached balances with a note. Requires finance_link_bank first. No args. Returns { accounts: [{name, institution, type, balance, currency, as_of}], assets, liabilities, net_worth, live }. |
| finance_syncA | Pull new transactions and refresh balances from SimpleFIN. By default fetches from the day after the latest transaction already in the store (so it won't re-pull or double-count history from your CSV) — pass days_back to force a wider window (e.g. 365 for a full refresh). Transactions dedupe by provider id. Requires finance_link_bank first. Args: days_back (optional, 1-730). Returns { accounts, newTransactions, store_span }. |
| finance_disconnect_bankA | Forget the SimpleFIN connection (clears the stored access URL). Imported transactions and cached balances are kept. No args. |
| finance_add_category_ruleA | Create a rule that assigns a category to any transaction whose merchant name or bank descriptor contains a given substring — and immediately recategorize all matching transactions (past and future imports/syncs honor it too). Use this to clean up transactions stuck in 'other'. Match is case-insensitive. Args: match (substring, e.g. 'menards'), category. Returns how many transactions were recategorized. Example: {match:'robinhood', category:'transfers'}. |
| finance_list_category_rulesA | List all merchant→category rules (most specific first) and re-apply them across the whole store, returning how many transactions changed. Call after editing rules to resync. No args. |
| finance_remove_category_ruleA | Delete a category rule by its exact match string. Transactions it already recategorized keep their current category (rules don't store the original). Args: match. Returns whether a rule was removed. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Marcusdt-UX/finance-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server