Skip to main content
Glama
elcukro

bank-mcp

by elcukro

🏦 bank-mcp

Предоставьте своему ИИ-ассистенту безопасный доступ в режиме «только чтение» к вашим банковским счетам.

npm version License: MIT CI Node.js TypeScript


Большинство людей управляют своими финансами, заходя на банковские порталы, скачивая CSV-файлы и создавая электронные таблицы. bank-mcp устраняет эти сложности, позволяя вашему ИИ-ассистенту напрямую запрашивать данные о ваших банковских счетах — балансы, транзакции, детализацию расходов — с помощью естественного общения. Он подключается к реальным банковским API через Model Context Protocol, поэтому любой MCP-совместимый клиент (Claude Code, Claude Desktop и другие) может понимать ваши финансы.

  • 5 провайдеров, 15 000+ учреждений — охват банков США и Европы

  • Только чтение по дизайну — нет доступа на запись, нет переводов, нет изменений

  • Работает с любым MCP-клиентом — Claude Code, Claude Desktop, Cursor и другими

  • Плагинная архитектура — добавьте своего провайдера менее чем за 100 строк кода

Содержание

Related MCP server: Lunch Flow MCP Server

Поддерживаемые провайдеры

Провайдер

Регион

Учреждения

Метод аутентификации

Сложность настройки

Enable Banking

Европа

2 000+

RSA-ключ + сессия

Средняя

Teller

США

7 000+

mTLS-сертификат

Средняя

Plaid

США / Канада / ЕС

12 000+

Client ID + secret

Легкая

Tink

Европа

3 400+

OAuth2-токен

Легкая

Mock

Демо

Нет

Мгновенно

Банки США

Поддерживаются через Plaid и Teller — охватывают 20 крупнейших банков США и тысячи других:

JPMorgan Chase · Bank of America · Wells Fargo · Citibank · Capital One · U.S. Bank · PNC · Truist · Goldman Sachs · TD Bank · Citizens · Fifth Third · M&T Bank · Huntington · KeyBank · Ally · Regions · BMO · American Express · USAA

Европейские банки

Поддерживаются через Enable Banking и Tink — охватывают основные банки ЕС и Великобритании:

HSBC · BNP Paribas · Deutsche Bank · ING · Crédit Agricole · Santander · Société Générale · UniCredit · Intesa Sanpaolo · Barclays · Lloyds · BBVA · CaixaBank · Commerzbank · Rabobank · ABN AMRO · Swedbank · Handelsbanken · Nordea · PKO Bank Polski

Быстрый старт

1. Запустите мастер настройки

npx @bank-mcp/server init

Интерактивный мастер проведет вас через все этапы — выбор провайдера, учетные данные, авторизация в банке и проверка счета — и все это с удобным терминальным интерфейсом:

┌  bank-mcp — Connect your bank account
│
◇  Choose your banking provider
│  Plaid / Teller / Tink / Enable Banking
│
◇  Environment
│  Sandbox / Development / Production
│
◇  Found 3 account(s) ─────────────────────────╮
│    ****1591 (Bank of America Platinum Card)   │
│    ****3588 (Bank of America My Checking)     │
│    ****2450 (Bank of America Essential Savings)│
├───────────────────────────────────────────────╯
│
└  Setup complete!

2. Добавьте в свой MCP-клиент

В конце настройки мастер спросит, какой MCP-клиент вы используете, и покажет точную конфигурацию:

  • Claude Code — одна команда: claude mcp add bank -- npx @bank-mcp/server

  • Cursor — добавьте в .cursor/mcp.json

  • Windsurf — добавьте в ~/.codeium/windsurf/mcp_config.json

  • Gemini CLI — добавьте в ~/.gemini/settings.json

  • Codex CLI — добавьте в ~/.codex/config.json

Используете другой инструмент? См. Настройка клиента для всех поддерживаемых клиентов, включая Claude Desktop, VS Code и Zed.

3. Попробуйте

Спросите своего ИИ-ассистента о ваших финансах на естественном языке:

"What's my checking account balance?"
"Show my spending by category this month"
"Find all Amazon purchases over $50"
"Compare my spending this month vs last month"

Демо-режим

У вас еще нет банковских учетных данных? Начните с реалистичных фиктивных данных:

npx @bank-mcp/server --mock

Это запустит сервер с фиктивным провайдером, который генерирует детерминированные примеры счетов и транзакций — идеально подходит для тестирования настройки или разработки на базе bank-mcp перед подключением реальных счетов.

Настройка клиента

bank-mcp работает с любым MCP-совместимым клиентом. Выберите свой инструмент ниже.

Claude Code

Добавьте в .mcp.json в корне вашего проекта (или ~/.claude/.mcp.json для всех проектов):

{
  "mcpServers": {
    "bank": {
      "command": "npx",
      "args": ["@bank-mcp/server"]
    }
  }
}

Или добавьте через CLI:

claude mcp add bank -- npx @bank-mcp/server

Claude Desktop

Добавьте в ваш claude_desktop_config.json:

{
  "mcpServers": {
    "bank": {
      "command": "npx",
      "args": ["@bank-mcp/server"]
    }
  }
}

Расположение файла конфигурации:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Cursor

Добавьте в .cursor/mcp.json в корне вашего проекта (или ~/.cursor/mcp.json глобально):

{
  "mcpServers": {
    "bank": {
      "command": "npx",
      "args": ["@bank-mcp/server"]
    }
  }
}

VS Code (Copilot)

Добавьте в .vscode/mcp.json в вашем рабочем пространстве:

{
  "servers": {
    "bank": {
      "type": "stdio",
      "command": "npx",
      "args": ["@bank-mcp/server"]
    }
  }
}

Windsurf

Добавьте в ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "bank": {
      "command": "npx",
      "args": ["@bank-mcp/server"]
    }
  }
}

OpenAI Codex CLI

Добавьте в ~/.codex/config.toml (или .codex/config.toml в вашем проекте):

[mcp_servers.bank]
command = "npx"
args = ["@bank-mcp/server"]

Или добавьте через CLI:

codex mcp add bank -- npx @bank-mcp/server

Gemini CLI

Добавьте в ~/.gemini/settings.json (или .gemini/settings.json в вашем проекте):

{
  "mcpServers": {
    "bank": {
      "command": "npx",
      "args": ["@bank-mcp/server"]
    }
  }
}

Zed

Добавьте в ваш Zed settings.json:

{
  "context_servers": {
    "bank": {
      "command": {
        "path": "npx",
        "args": ["@bank-mcp/server"]
      }
    }
  }
}

Не видите свой инструмент? bank-mcp использует стандартный транспорт MCP stdio. Любой клиент, поддерживающий MCP stdio-серверы, может подключиться, используя npx @bank-mcp/server в качестве команды.

Доступные инструменты

Инструмент

Описание

Ключевые параметры

list_accounts

Список всех банковских счетов по подключениям

connectionId?

list_transactions

Получение транзакций с фильтрацией

accountId, from?, to?, minAmount?, maxAmount?

search_transactions

Полнотекстовый поиск по описаниям и продавцам

query, accountId?, from?, to?

get_balance

Текущие и доступные балансы

accountId, connectionId?

spending_summary

Расходы, сгруппированные по продавцу или категории

accountId, from?, to?, groupBy?

Скриншоты

Все примеры ниже используют Claude Code с фиктивным провайдером (npx @bank-mcp/server --mock).

Список счетов«Покажи мои банковские счета»

Список банковских счетов

Проверка баланса«Какой у меня текущий баланс?»

Балансы счетов

История транзакций«Покажи мои транзакции за последние 15 дней»

Последние транзакции с детализацией расходов

Поиск транзакций«Найди все покупки в Starbucks за последние 2 недели»

Поиск покупок в Starbucks

Расходы по категориям«Покажи мои расходы по категориям в этом месяце»

Детализация по категориям с графиком

Топ продавцов«На каких продавцов я трачу больше всего?»

Детализация расходов по продавцам

Отслеживание подписок«Покажи мои регулярные подписки»

Анализ регулярных подписок

Сравнение продуктов«Сравни расходы в Trader Joe's и Whole Foods»

Анализ Trader Joe's против Whole Foods

Полная финансовая картина«Дай мне полную финансовую картину за февраль»

Ежемесячный доход, расходы и сбережения

Архитектура

Структура файлов

~/.bank-mcp/
  config.json          # Connections & credentials (permissions: 600)
  keys/                # RSA keys and certificates

src/
  providers/
    base.ts            # Abstract BankProvider class
    registry.ts        # Provider registration
    enable-banking/    # PSD2 via Enable Banking API
    teller/            # US banks via mTLS
    plaid/             # US/CA/EU via Plaid API
    tink/              # EU Open Banking via Tink API
    mock/              # Deterministic fake data
  tools/               # MCP tool implementations
  utils/
    cache.ts           # In-memory TTL cache
    http.ts            # Fetch with timeout + retry

Интерфейс провайдера

Каждый провайдер расширяет один и тот же абстрактный класс, что упрощает добавление новых интеграций:

abstract class BankProvider {
  abstract listAccounts(config): Promise<BankAccount[]>;
  abstract listTransactions(config, accountId, filter?): Promise<Transaction[]>;
  abstract getBalance(config, accountId): Promise<Balance[]>;
  abstract getConfigSchema(): ConfigField[];
}

Руководства по настройке провайдеров

Enable Banking (PSD2)

Что вам нужно:

  • [ ] Учетная запись Enable Banking с зарегистрированным приложением

  • [ ] Ваш закрытый RSA-ключ (файл .pem, загруженный при создании приложения)

npx @bank-mcp/server init
# Select: Enable Banking → enter App ID + key path
# Pick your country → select your bank
# Log in at your bank → paste the redirect URL
# → Session created, accounts verified!

Совет: Мастер берет на себя весь процесс OAuth — настройку URI перенаправления, выбор банка и создание сессии. Сессии истекают через 90 дней (регулирование PSD2); перезапустите init для обновления.

Teller (Банки США)

Что вам нужно:

  • [ ] Учетная запись разработчика Teller

  • [ ] Ваш идентификатор приложения (из панели управления Teller)

npx @bank-mcp/server init
# Select: Teller → enter Application ID
# Pick environment (sandbox for testing)
# → Teller Connect opens in your browser
# → Link your bank, token captured automatically!

Совет: Начните с песочницы (sandbox) — сертификаты не нужны, мгновенные тестовые данные. Для разработки/продакшена мастер запросит пути к mTLS-сертификатам. Бесплатный уровень поддерживает до 100 активных подключений.

Plaid (США/Канада/ЕС)

Что вам нужно:

npx @bank-mcp/server init
# Select: Plaid → enter client ID + secret
# Pick environment (sandbox for testing)
# → Sandbox: token created automatically!
# → Dev/Prod: paste an existing access token

Совет: Начните с песочницы (sandbox) — мастер автоматически создает тестовый токен, браузер не нужен. Plaid предоставляет самую богатую категоризацию транзакций — 104 подкатегории с оценками достоверности — идеально подходит для анализа расходов с помощью LLM.

Tink (Открытый банкинг ЕС)

Что вам нужно:

  • [ ] Учетная запись разработчика Tink (бесплатно для тестирования)

  • [ ] Ваш Client ID и Client Secret (из консоли Tink)

npx @bank-mcp/server init
# Select: Tink → enter Client ID + Secret
# Pick your market (country)
# → Tink Link opens in your browser
# → Connect your bank, paste redirect URL

Совет: Tink охватывает более 3400 банков по всей Европе. Для песочницы используйте Demo Bank с тестовыми учетными данными (показаны в мастере). Транзакции включают категории PFM с обогащением данных о продавцах.

Кэширование

Все данные кэшируются в оперативной памяти (без сохранения на диск — кэш удаляется вместе с процессом):

Данные

TTL

Почему

Список счетов

1 час

Счета редко меняются; минимизирует вызовы API

Транзакции

15 минут

Баланс между новыми транзакциями и свежестью данных

Балансы

5 минут

Самые чувствительные ко времени; пользователи ожидают актуальные данные

Кэш привязан к подключению и счету. Перезапуск сервера очищает все кэши.

Несколько подключений

Настройте столько банковских подключений, сколько вам нужно — даже от разных провайдеров:

{
  "connections": [
    { "id": "ing-main", "provider": "enable-banking", "..." : "..." },
    { "id": "chase-checking", "provider": "plaid", "..." : "..." },
    { "id": "revolut", "provider": "tink", "..." : "..." }
  ]
}

Все инструменты принимают необязательный параметр connectionId для выбора конкретного подключения. Если он опущен, опрашиваются все подключения, а результаты объединяются — поэтому «покажи все мои балансы» автоматически работает для всех банков.

Безопасность

Принципы проектирования

bank-mcp обрабатывает чувствительные финансовые учетные данные. Его подход к безопасности основан на минимизации поверхности атаки:

  • Только чтение по дизайну — интерфейс BankProvider предоставляет только методы чтения (listAccounts, listTransactions, getBalance). Нет методов записи — нет переводов, нет изменений счетов, нет инициирования платежей. Это обеспечивается на уровне типов, а не по соглашению.

  • Нет сетевого слушателя — bank-mcp работает как процесс stdio (stdin/stdout), а не как HTTP-сервер.

Available Tools

5 tools
get_balanceA

Get current account balance(s). Returns closing booked balance and expected balance when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionIdNo
accountIdNoAccount UID. If omitted, returns balances for all accounts.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior. It does mention the return types ('closing booked balance' and 'expected balance'), which is helpful, but it does not address whether the tool is read-only, if it requires authentication (implicit via connectionId), or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no redundant words, and directly addresses the tool's purpose and output. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple balance retrieval tool with two parameters and no output schema, the description is mostly complete. It covers the output type and the optionality of accountId. However, it could clarify terms like 'closing booked balance' and 'expected balance' for better clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only accountId has a description). The description for accountId adds useful context: 'If omitted, returns balances for all accounts.' However, connectionId lacks a description in both schema and tool description, leaving its meaning unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'current account balance(s)', and specifies that it returns 'closing booked balance and expected balance'. This distinguishes it from sibling tools like list_accounts or list_transactions, which deal with other account data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, when to prefer get_balance over list_accounts or spending_summary, or any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_accountsB

List all bank accounts across configured connections. Returns account UIDs, IBANs, names, and currencies.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionIdNoConnection ID to query. If omitted, queries all connections.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must cover behavioral traits. It does not mention that this is a read-only operation, nor any potential performance considerations, rate limits, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences: one describing the action and scope, one describing the output. No redundant information, efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema and no annotations, the description is adequate but lacks usage guidelines and behavioral context. It covers the basic purpose and return fields but not when or how to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of the single parameter with a clear description. The tool description adds no additional semantics beyond stating it lists accounts, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all bank accounts across configured connections and specifies the returned fields (UIDs, IBANs, names, currencies). It distinguishes from siblings like get_balance or list_transactions by focusing on account listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., get_balance for a single account). No explicit conditions or prerequisites provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_transactionsB

List bank transactions with optional filters. Defaults to last 90 days. Supports date range, amount range, and debit/credit type filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionIdNoConnection ID. If omitted, queries all connections.
accountIdNoAccount UID. If omitted, queries all accounts.
dateFromNoStart date (YYYY-MM-DD). Defaults to 90 days ago.
dateToNoEnd date (YYYY-MM-DD). Defaults to today.
amountMinNoMinimum absolute amount.
amountMaxNoMaximum absolute amount.
typeNoFilter by transaction type.
limitNoMaximum number of transactions to return.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses default date range and optional filters, but does not state that the operation is read-only, nor mention pagination, rate limits, or any side effects. This is a significant gap for a tool with 8 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and resource. Every sentence adds value: first states purpose and filters, second gives default behavior. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 8 parameters and no output schema, the description covers defaults and filter types, but does not explain return value, pagination behavior, or typical usage scenarios. Schema descriptions fill some gaps, but overall completeness is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds little beyond the schema – it mentions 'debit/credit type filtering' which is already in the enum, and 'amount range' which is covered by 'amountMin' and 'amountMax'. No new semantic insight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists bank transactions with optional filters. It is a specific verb-resource pairing. However, it does not differentiate from sibling 'search_transactions', which may have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing transactions with filters and mentions a default 90-day window, but lacks explicit guidance on when to use this tool versus alternatives like 'search_transactions' or 'spending_summary'. No exclusions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_transactionsA

Full-text search across transaction descriptions, merchant names, and references. Use for finding specific payments or payees.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch text — matched against description, merchant name, and reference.
connectionIdNo
dateFromNo
dateToNo
limitNoMax results. Default 50.

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It describes the search operation but does not disclose whether it is read-only, any performance implications, pagination behavior, or error handling. The word 'search' implies read but is not explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long with no extraneous words. The first sentence states the action, the second provides usage context. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 5 parameters (1 required) and no output schema. While the purpose is clear, the description fails to explain optional parameters like connectionId, dateFrom, dateTo, and does not describe return format or behavior for edge cases. This leaves gaps for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 40% (only query and limit have descriptions). The description adds semantics for query (full-text across specific fields) but does not explain connectionId, dateFrom, or dateTo. With low schema coverage, the description should compensate but does not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it is a 'full-text search across transaction descriptions, merchant names, and references' with a specific use case of 'finding specific payments or payees'. This distinctly separates it from sibling tools like list_transactions which likely list all transactions without search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use the tool ('for finding specific payments or payees') but does not explicitly mention when not to use it or compare to alternatives like list_transactions. The guidance is clear but lacks explicit exclusionary context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spending_summaryC

Group expenses by merchant or category with totals. Shows where money is being spent. Use groupBy "merchant" for vendor breakdown, "category" for category breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectionIdNo
dateFromNo
dateToNo
groupByNoGroup expenses by "merchant" (default) or "category".
limitNoMax groups to return (default 20, sorted by total spent).

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility. It mentions grouping and totals but omits critical behavioral details such as the ability to filter by date range (dateFrom, dateTo) and the default limit and sorting behavior, which are only present in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief, with three clear sentences that front-load the purpose. It avoids unnecessary detail and is easy to parse, though it could be slightly more structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given five parameters and no output schema, the description omits important context such as the meaning of dateFrom/dateTo for filtering and the default limit of 20. It also lacks any hint of the return format beyond 'totals', making it incomplete for an agent to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds minimal value beyond the input schema: it reiterates the groupBy options but does not explain the purpose of connectionId, dateFrom, dateTo, or limit beyond what the schema already provides. With 40% schema coverage, the description should compensate more.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool groups expenses by merchant or category with totals, showing where money is spent. It distinguishes from sibling tools like list_transactions and get_balance by focusing on aggregation rather than raw data or balances.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description suggests when to use each groupBy option but does not provide explicit guidance on when to use this tool versus alternatives like search_transactions or list_transactions. The context is implied but not directly contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 5 tool updatesv0.1.0
    • First observedget_balance
    • First observedlist_accounts
    • First observedlist_transactions
    • First observedsearch_transactions
    • First observedspending_summary

TDQS

A3.6/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get_balance for balances, list_accounts for account listing, list_transactions for filtered transaction lists, search_transactions for full-text search, spending_summary for aggregation. No overlap.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun or descriptive pattern (get_balance, list_accounts, list_transactions, search_transactions, spending_summary). No mixing of conventions.

Tool Count5/5

5 tools is well-scoped for a banking data retrieval server. Each tool covers a core function without redundancy, and the count feels natural for the domain.

Completeness4/5

The set covers balance, accounts, transactions (with search and filters), and spending summaries. Minor gaps include no individual transaction detail endpoint, but search can retrieve specifics. Overall solid coverage for read-only banking information.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to access and analyze MonarchMoney personal finance data through natural language queries. Provides comprehensive financial insights including account balances, transaction analysis, budget tracking, and spending patterns with enterprise-grade security.
    9
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access financial data from 20,000+ banks across 40+ countries, allowing users to query account balances, transactions, and spending patterns through natural language.
    4
    MIT
  • F
    license
    Not graded
    quality
    F
    maintenance
    An AI-powered financial management engine that enables budgeting, smart expense tracking, and affordability analytics via the Model Context Protocol. It allows AI assistants to interact with financial data through natural language for tasks like category detection, bulk expense ingestion, and budget impact predictions.
    1
    -