bank-mcp
🏦 bank-mcp
AIアシスタントに銀行口座への安全な読み取り専用アクセス権を与えましょう。
多くの人は、銀行のポータルサイトにログインし、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
サポートされているプロバイダー
プロバイダー | 地域 | 金融機関数 | 認証方法 | 設定難易度 |
欧州 | 2,000以上 | RSAキー + セッション | 中 | |
米国 | 7,000以上 | mTLS証明書 | 中 | |
米国 / カナダ / 欧州 | 12,000以上 | クライアントID + シークレット | 簡単 | |
欧州 | 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 — コマンド1つ:
claude mcp add bank -- npx @bank-mcp/serverCursor —
.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/serverClaude Desktop
claude_desktop_config.json に追加します:
{
"mcpServers": {
"bank": {
"command": "npx",
"args": ["@bank-mcp/server"]
}
}
}設定ファイルの場所:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%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/serverGemini 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を使用して接続できます。
利用可能なツール
ツール | 説明 | 主要パラメータ |
| すべての接続先の銀行口座を一覧表示 |
|
| フィルタリングして取引を取得 |
|
| 説明や加盟店に対する全文検索 |
|
| 現在および利用可能な残高 |
|
| 加盟店またはカテゴリ別にグループ化された支出 |
|
スクリーンショット
以下のすべての例は、モックプロバイダー (npx @bank-mcp/server --mock) を使用したClaude Codeのものです。
口座の一覧表示 — "List my bank accounts"

残高の確認 — "What's my current balance?"

取引履歴 — "Show my transactions from the last 15 days"

取引の検索 — "Find all Starbucks purchases in last 2 weeks"

カテゴリ別の支出 — "Show my spending by category this month"

主要な加盟店 — "Which merchants am I spending the most at?"

サブスクリプションの追跡 — "Show my recurring subscriptions"

食料品の比較 — "Compare Trader Joe's vs Whole Foods spending"

財務状況の全体像 — "Give me my full February financial picture"

アーキテクチャ
ファイル構造
~/.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 開発者アカウント
[ ] アプリケーション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 (米国/カナダ/欧州)
必要なもの:
[ ] Plaid 開発者アカウント(無料登録)
[ ] クライアントIDとシークレット(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 (欧州オープンバンキング)
必要なもの:
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,jsonwebtoken,zod)。依存関係が少ないほど、サプライチェーンのリスクも低減されます。オープンソース — すべての行が監査可能です。難読化されたコード、コンパイル済みのバイナリ、テレメトリは一切ありません。
認証情報の保存
~/.bank-mcp/config.jsonの設定ファイルは600パーミッション(所有者のみ読み書き可能)で作成されますRSAキーと証明書は、同様の制限付きパーミッションで
~/.bank-mcp/keys/に
Available Tools
5 toolsget_balanceA
Get current account balance(s). Returns closing booked balance and expected balance when available.
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | No | ||
| accountId | No | Account UID. If omitted, returns balances for all accounts. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | No | Connection ID to query. If omitted, queries all connections. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | No | Connection ID. If omitted, queries all connections. | |
| accountId | No | Account UID. If omitted, queries all accounts. | |
| dateFrom | No | Start date (YYYY-MM-DD). Defaults to 90 days ago. | |
| dateTo | No | End date (YYYY-MM-DD). Defaults to today. | |
| amountMin | No | Minimum absolute amount. | |
| amountMax | No | Maximum absolute amount. | |
| type | No | Filter by transaction type. | |
| limit | No | Maximum number of transactions to return. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search text — matched against description, merchant name, and reference. | |
| connectionId | No | ||
| dateFrom | No | ||
| dateTo | No | ||
| limit | No | Max results. Default 50. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | No | ||
| dateFrom | No | ||
| dateTo | No | ||
| groupBy | No | Group expenses by "merchant" (default) or "category". | |
| limit | No | Max groups to return (default 20, sorted by total spent). |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v0.1.0- First observed
get_balance - First observed
list_accounts - First observed
list_transactions - First observed
search_transactions - First observed
spending_summary
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
Connects AI agents to live, verified financial data from 18,000+ institutions — ready to reason from
- BankSyncOAuthio.banksync
Connect AI agents to bank accounts, transactions, balances, and investments.
Chat with your bank data: balances, transactions, budgets, bills. Reads only, never moves money.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables 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.9MIT
- AlicenseNot gradedqualityDmaintenanceEnables 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.4MIT
- FlicenseNot gradedqualityFmaintenanceAn 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-
- AlicenseNot gradedqualityDmaintenanceConnects AI assistants to 500+ financial data tools from 40+ providers via the Model Context Protocol, enabling natural language queries for financial data.1MIT