personal-finance-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List every account across all linked Items, with balances. Returns: {"accounts": [...], "warnings": [...]}. Warnings describe Items that are unhealthy (re-auth required, etc.) or hit API errors on this call. |
| get_balancesA | Get live current + available balances for accounts. |
| get_transactionsA | Fetch transactions in [start_date, end_date] across all healthy Items. Dates are ISO YYYY-MM-DD. Uses Plaid /transactions/get with offset pagination (count=500 per page). If start_date is older than ~2 years before end_date, the window is clipped and a warning is emitted. |
| get_recurring_transactionsA | Return recurring inflow and outflow streams across all linked Items. Calls /accounts/get first per Item to collect account IDs (required by /transactions/recurring/get), then fetches recurring streams and shapes them into unified inflows/outflows lists. Returns: {"inflows": [...], "outflows": [...], "warnings": [...]} |
| get_liabilitiesA | Return credit, student-loan, and mortgage liability details across all linked Items. For Items where the liabilities product is not enabled, a per-Item warning with code PRODUCTS_NOT_SUPPORTED is emitted instead of failing the call. Returns: {"credit": [...], "student": [...], "mortgage": [...], "warnings": [...]} |
| get_investment_holdingsA | Return investment holdings with security metadata across all linked Items. Joins holdings with the securities list returned in the same response to provide symbol, name, and security type. Adds institution to each holding. Returns: {"holdings": [...], "warnings": [...]} |
| get_investment_transactionsA | Fetch investment transactions in [start_date, end_date] across all healthy Items. Dates are ISO YYYY-MM-DD. Uses offset pagination (count=500 per page). If start_date is older than ~2 years before end_date, the window is clipped and a warning is emitted. Each transaction is joined with security metadata (ticker symbol, name) from the same response. Returns: {"investment_transactions": [...], "warnings": [...]} |
| get_institutions_statusA | Return health status for every linked Item/institution. No additional network calls beyond what Returns: {"items": [{"env_key", "institution", "institution_id", "status", "reason"}, ...]} |
| search_transactionsA | Search transactions by keyword across merchant, name, and counterparty names. Fetches transactions in [start_date, end_date] and filters them with a case-insensitive substring match against:
The match is performed on the raw Plaid payload before shaping so that
counterparty names (which are dropped by Returns: {"transactions": [...], "warnings": [...]} |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Each tool targets a distinct aspect of personal finance data (balances, transactions, investments, liabilities, etc.), with clear boundaries. There is no overlap in functionality; even transaction-related tools distinguish between regular, investment, recurring, and search operations.
All tools follow a consistent verb_noun pattern in snake_case, primarily using 'get_' for retrieval and 'list_' for accounts, which is predictable and unambiguous.
With 9 tools, the server is well-scoped for a personal finance data aggregator. Each tool serves a clear purpose without redundancy, covering core financial data retrieval needs.
The tool surface covers most essential read operations for personal finance: accounts, balances, transactions (multiple types), liabilities, and holdings. Minor gaps such as lack of categorization or income/expense summaries are acceptable for a focused data provider.