Skip to main content
Glama
Mercury Enhanced MCP

Mercury Enhanced MCP

by collinsb1

Mercury Enhanced MCP

A custom Model Context Protocol (MCP) server for the Mercury banking API. Uses Mercury's personal API tokens instead of OAuth, eliminating the 3-day session expiry that breaks scheduled tasks.

Why not Mercury's official MCP? Mercury's hosted MCP (mcp.mercury.com) uses OAuth2 Authorization Code flow with sessions that expire every 3 days — requiring manual re-authorization. Personal API tokens do not expire.


Prerequisites


Related MCP server: Mercury MCP

Installation

git clone https://github.com/bradcollins/Mercury-Enhanced-MCP.git
cd Mercury-Enhanced-MCP
npm install
npm run build

Configuration

Claude Desktop

Add the following to your claude_desktop_config.json (usually at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "mercury-enhanced-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/Mercury-Enhanced-MCP/dist/index.js"],
      "env": {
        "MERCURY_API_TOKEN": "your_mercury_personal_api_token_here"
      }
    }
  }
}

Replace /absolute/path/to/Mercury-Enhanced-MCP with the actual path where you cloned this repo.

Environment Variable

The server reads your token from MERCURY_API_TOKEN. Never commit this value to version control.


Tools (15 total)

Tool

Description

get_accounts

List all Mercury accounts (checking, savings) with balances and status

get_account

Get details of a specific account by ID

get_account_cards

List debit/credit cards associated with an account

get_account_statements

Get monthly statements for a checking/savings account

get_transaction

Get details of a single transaction by ID

list_account_transactions

List transactions for a specific account with date/status/search filters

list_transactions

Cross-account transaction search with advanced filters

get_organization

Get organization info (EIN, legal name, DBAs)

get_recipients

List all payment recipients

get_recipient

Get full details of a specific recipient by ID

list_categories

List all custom expense categories

list_credit

List all credit accounts

get_treasury_accounts

List all Mercury treasury accounts with balances and net returns

get_treasury_transactions

List transactions for a treasury account (integer cursor pagination)

get_treasury_statements

Get statements for a treasury account (MonthlyStatement, 1099, TradeConfirmation, etc.)


Usage Examples

Once configured in Claude Desktop, you can ask:

  • "What are my Mercury account balances?"

  • "Show me my last 10 transactions"

  • "How much do I have in treasury?"

  • "List all my payment recipients"

  • "Show me all failed transactions this month"

  • "What is my organization's legal business name?"

  • "Download my treasury statements for last quarter"


API Reference

This server wraps the Mercury REST API v1. All requests use Authorization: Bearer <token>.

Key URL patterns:

  • Single account: /account/{id} (singular)

  • Single transaction: /transaction/{id} (singular)

  • Treasury root: /treasury

  • Treasury transactions: /treasury/{id}/transactions


License

MIT — see LICENSE

Available Tools

15 tools
get_accountA

Retrieve details of a specific Mercury account by its account ID. Returns accountNumber, availableBalance, currentBalance, dashboardLink, legalBusinessName, name, nickname, routingNumber, status, and type.

Inputs: accountId (required).

get_account_cardsA

Retrieve all debit and credit cards associated with a specific Mercury account. Returns card details including card type, status, and cardholder information.

Inputs: accountId (required).

get_accountsA

Retrieve a paginated list of all Mercury accounts for the organization. Returns accountNumber, availableBalance, currentBalance, name, nickname, routingNumber, status (active/deleted/pending/archived), and type (mercury/external/recipient). Supports cursor-based pagination with start_after and end_before.

Inputs: limit, order, end_before, start_after.

get_account_statementsA

Retrieve monthly statements for a specific Mercury account. Returns statement list with downloadUrl, startDate, endDate, endingBalance, accountNumber, and EIN. Note: treasury and credit accounts are NOT supported — use get_treasury_statements instead. Maximum date range via start/end parameters is 3 months.

Inputs: accountId (required), end, limit, order, +3 more.

get_organizationA

Retrieve information about the Mercury organization. Returns EIN, legal business name, list of DBAs (Doing Business As names with default flag), organization kind (personal/business), and organization UUID.

Inputs: no named parameters.

get_recipientB

Retrieve full details of a specific payment recipient by their ID. Returns name, nickname, emails, defaultPaymentMethod, status, dateLastPaid, isBusiness, and all routing details (ACH, domestic wire, international wire, RTP).

Inputs: recipientId (required).

get_recipientsB

Retrieve a paginated list of all payment recipients. Returns recipient name, emails, defaultPaymentMethod (ach/check/domesticWire/internationalWire/realTimePayment), status (active/deleted), dateLastPaid, isBusiness, and routing information.

Inputs: limit, order, end_before, start_after.

get_transactionA

Retrieve details of a single Mercury transaction by its transaction ID. Returns id, accountId, amount, counterpartyName, createdAt, postedAt, status, kind, mercuryCategory, note, externalMemo, bankDescription, dashboardLink, and trackingNumber.

Inputs: transactionId (required).

get_treasury_accountsC

Retrieve all Mercury treasury accounts for the organization. Returns availableBalance, currentBalance, status (active/deleted/pending/archived), and monthly netReturns breakdown (dividends by security, Mercury fees, net return amount).

Inputs: limit, order, end_before, start_after.

get_treasury_statementsA

Retrieve statements for a specific Mercury treasury account. Returns downloadUrl, periodStart, periodEnd, documentType, description, and creationDate. Filter by documentType: MonthlyStatement, TradeConfirmation, 1099, 1099R, 1042S, 5498, 5498ESA, 1099Q, FMV, SDIRA.

Inputs: treasuryId (required), limit, order, end_before, +2 more.

get_treasury_transactionsA

Retrieve paginated transactions for a specific Mercury treasury account. Returns amount, balance, canonicalDay, description, and transaction type (depositComplete, withdrawalPosted, interestPosted, dividendPosted, mercuryFeePosted, sweepInPosted, etc.). Note: uses integer cursor pagination, not UUID-based like other endpoints.

Inputs: treasuryId (required), limit, order, cursor.

list_account_transactionsB

Retrieve a paginated list of transactions for a specific Mercury account. Supports filtering by date range, status, search term, and merchant category. Returns trimmed transaction objects: id, amount, counterpartyName, createdAt, postedAt, status, kind, mercuryCategory, note, externalMemo, bankDescription, dashboardLink.

Inputs: accountId (required), end, limit, order, +5 more.

list_categoriesA

Retrieve all available custom expense categories for the organization. These are custom categories distinct from Mercury's built-in mercuryCategory classifications. Returns category IDs and names that can be used to filter transactions via the categoryId parameter.

Inputs: no named parameters.

list_creditA

Retrieve all credit accounts for the organization. Returns credit account details including available credit, balances, and account status.

Inputs: no named parameters.

list_transactionsB

Retrieve transactions across all accounts with advanced filtering. Supports createdAt date range (start/end), postedAt date range (postedStart/postedEnd), comma-separated status list, search term, comma-separated accountId list, mercuryCategory, and cursor-based pagination. Returns trimmed transaction objects.

Inputs: end, limit, order, start, +7 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 15 tools

    Disambiguation4/5

    Most tools have distinct purposes, but list_transactions and list_account_transactions overlap significantly: both retrieve transactions, with list_transactions supporting accountId filtering that can achieve the same result as list_account_transactions. This could cause misselection when an agent wants transactions for a single account.

    Naming Consistency4/5

    Names follow a consistent verb_noun pattern (e.g., get_, list_). Minor inconsistency: get_accounts exists alongside get_account, which is acceptable, but 'get_accounts' is a list operation while 'list_account_transactions' also lists, and some tools use 'get_' where 'list_' might be expected (e.g., get_recipients vs list_recipients would be more consistent).

    Tool Count5/5

    15 tools is well-suited for a financial API covering accounts, transactions, recipients, treasury, and cards. Each tool appears to serve a distinct resource or operation without excessive redundancy.

    Completeness4/5

    The tool set covers key read operations across accounts, transactions, recipients, and treasury, including statements and cards. However, it lacks any write operations (e.g., create recipient, initiate payment), which may be intentional but leaves the surface incomplete for a full payment API.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Simple MCP server that interfaces with the Mercury API, allowing you to talk to your Mercury banking data from any MCP client like Cursor or Claude Desktop.
      4
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for Mercury Banking API that enables listing accounts and retrieving transactions via natural language.
      6 npm
      MIT