plaid-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLAID_ENV | Yes | Plaid environment: 'production' or 'sandbox' (default is 'production') | |
| PLAID_MCP_DB | No | Path to SQLite database file (default is '~/.plaid-mcp/plaid.db') | |
| PLAID_SECRET | Yes | Your Plaid secret from dashboard.plaid.com (sandbox or production) | |
| MCP_AUTH_TOKEN | No | Random 32-byte token for HTTP mode authentication (required for remote deployment) | |
| PLAID_PRODUCTS | No | Comma-separated list of Plaid products required at link time (e.g., 'transactions') | |
| PLAID_CLIENT_ID | Yes | Your Plaid client ID from dashboard.plaid.com | |
| PLAID_CLIENT_NAME | No | Client name shown to users in Plaid Link (default is 'plaid-mcp') | |
| PLAID_WEBHOOK_URL | No | URL for webhook-driven link completion (optional, for remote deployment) | |
| PLAID_COUNTRY_CODES | No | Comma-separated country codes (e.g., 'US' or 'US,CA,GB') | |
| PLAID_OPTIONAL_PRODUCTS | No | Comma-separated list of Plaid products requested if supported (e.g., 'investments,liabilities,identity') |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| link_accountA | Start a new Plaid Link session. Returns a URL the user opens in their browser to authenticate with their bank. After they finish, call complete_linking with the returned link_token. |
| complete_linkingA | Finalize a Link session once the user has completed it in their browser. Exchanges the public_token for a permanent access_token and caches accounts. |
| list_linked_institutions_toolA | List every institution currently linked, with account counts and any errors. |
| remove_institution_toolB | Unlink an institution (Plaid item) and delete its local data. |
| list_accounts_toolA | List every account across every linked institution (from the local cache). |
| get_balances_toolA | Live balance lookup (hits Plaid, not cached). Filter by account_id if given. |
| sync_transactions_toolA | Pull the latest transactions from Plaid into the local cache. Idempotent and incremental — uses cursors from the last sync. Plaid's first sync after linking an institution runs asynchronously;
when wait_for_ready is True (default), this tool blocks briefly until
the historical pull reports HISTORICAL_UPDATE_COMPLETE. Returned
|
| refresh_transactions_toolA | Nudge Plaid to pull fresh transactions from the bank right now. Use when a user just made a purchase and wants to see it, or when transactions look stale. Plaid normally refreshes on its own every few hours; this forces an immediate pull. Asynchronous — wait 30-60s then call sync_transactions to ingest any new data. Pass item_id to refresh one institution, or leave empty to refresh everything. Some smaller banks don't support on-demand refresh. |
| get_transactions_toolA | Query cached transactions. Dates are YYYY-MM-DD. Run sync_transactions first to refresh. Positive amounts = spend. |
| search_transactions_toolC | Fuzzy search across transaction description and merchant name. |
| spending_summary_toolC | Aggregate spending by category | subcategory | merchant | account. |
| get_holdings_toolC | Current investment positions (tickers, quantities, market value, cost basis). |
| get_investment_transactions_toolC | Brokerage transactions: buys, sells, dividends, fees. |
| get_liabilities_toolC | Credit cards, student loans, mortgages with APRs, balances, due dates. |
| get_identity_toolC | Account holder names, emails, phones, addresses as reported by the institution. |
| get_income_toolB | Bank-detected income streams. Requires Income product enabled in your Plaid dashboard. |
| set_account_override_toolA | Annotate a linked card with the real APR when Plaid misses it. Common case: Citi doesn't consistently report 0% intro / balance-transfer promos through /liabilities/get. Use this to record the true effective APR and (optionally) a promo expiration date so summarize_debt_tool can reason honestly. After the promo_expires date, payoff analysis reverts to Plaid's reported purchase APR. |
| clear_account_override_toolC | Remove any APR override for an account. |
| list_overrides_toolB | List every account APR override the user has recorded. |
| add_external_debt_toolA | Track a debt that isn't behind a linked Plaid account. Use for BNPL (Affirm, Klarna), medical bills, 401(k) loans, or debts at
non-linkable lenders. |
| update_external_debt_toolC | Update any subset of fields on an existing external debt. |
| remove_external_debt_toolC | Delete an external debt entry. |
| list_external_debts_toolA | List every external (non-Plaid-linked) debt the user has recorded. |
| summarize_debt_toolA | Rank every debt and project payoff timelines. Merges Plaid-reported credit cards with user APR overrides and any external debts, then ranks by strategy:
|
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
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/t-rhex/plaid-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server