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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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