Skip to main content
Glama
elcukro

bank-mcp

by elcukro

🏦 bank-mcp

AI 어시스턴트에게 은행 계좌에 대한 안전한 읽기 전용 액세스 권한을 부여하세요.

npm version License: MIT CI Node.js TypeScript


대부분의 사람들은 은행 포털에 로그인하고, CSV를 다운로드하고, 스프레드시트를 작성하여 재정을 관리합니다. bank-mcp는 AI 어시스턴트가 자연스러운 대화를 통해 잔액, 거래 내역, 지출 분석 등 은행 계좌를 직접 조회할 수 있게 하여 이러한 번거로움을 없애줍니다. Model Context Protocol을 통해 실제 은행 API에 연결되므로 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+

클라이언트 ID + 시크릿

쉬움

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를 통해 지원되며, EU 및 영국 전역의 주요 은행을 포함합니다:

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

대화형 마법사가 제공업체 선택, 자격 증명, 은행 승인 및 계좌 확인 등 모든 과정을 세련된 터미널 UI로 안내합니다:

┌  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. 사용해 보기

AI 어시스턴트에게 자연어로 재정 상태를 물어보세요:

"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?

스크린샷

아래 모든 예시는 모의 제공업체(npx @bank-mcp/server --mock)를 사용하는 Claude Code를 기준으로 합니다.

계좌 목록 조회"내 은행 계좌 목록 보여줘"

계좌 목록 조회

잔액 확인"현재 잔액이 얼마야?"

계좌 잔액

거래 내역"지난 15일간의 거래 내역 보여줘"

지출 분석이 포함된 최근 거래 내역

거래 검색"지난 2주 동안 스타벅스에서 결제한 내역 찾아줘"

스타벅스 결제 내역 찾기

카테고리별 지출"이번 달 카테고리별 지출 보여줘"

차트가 포함된 카테고리 분석

주요 가맹점"어디서 가장 많이 지출했어?"

가맹점 지출 분석

구독 추적"내 정기 구독 내역 보여줘"

정기 구독 분석

식료품 비교"Trader Joe's와 Whole Foods 지출 비교해줘"

Trader Joe's vs Whole Foods 분석

전체 재정 현황"2월 전체 재정 현황을 알려줘"

월간 수입, 지출 및 저축 데이터

아키텍처

파일 구조

~/.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!

팁: 마법사가 리디렉션 URI 설정, 은행 선택, 세션 생성 등 전체 OAuth 흐름을 처리합니다. 세션은 90일 후 만료됩니다(PSD2 규정). 새로 고치려면 init을 다시 실행하세요.

Teller (미국 은행)

준비물:

  • [ ] Teller 개발자 계정

  • [ ] 애플리케이션 ID (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!

팁: 샌드박스로 시작하세요. 인증서가 필요 없으며 즉시 테스트 데이터를 사용할 수 있습니다. 개발/운영 환경의 경우 마법사가 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

팁: 샌드박스로 시작하세요. 마법사가 자동으로 테스트 토큰을 생성하며 브라우저가 필요 없습니다. Plaid는 104개의 하위 카테고리와 신뢰도 점수를 포함한 가장 풍부한 거래 분류를 제공하여 LLM 기반 지출 분석에 이상적입니다.

Tink (유럽 오픈 뱅킹)

준비물:

  • [ ] Tink 개발자 계정 (테스트용 무료)

  • [ ] 클라이언트 ID 및 클라이언트 시크릿 (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는 유럽 전역의 3,400개 이상의 은행을 지원합니다. 샌드박스의 경우 테스트 자격 증명(마법사에 표시됨)과 함께 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는 HTTP 서버가 아닌 stdio 프로세스(stdin/stdout)로 실행됩니다. 열린 포트가 없으며 네트워크를 통한 공격 표면이 없습니다.

  • 최소한의 의존성 — 4개의 런타임 의존성(@modelcontextprotocol/sdk, `@clack/prompts

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
    -