{"id":45465420,"url":"https://github.com/elcukro/bank-mcp","last_synced_at":"2026-02-27T14:01:28.126Z","repository":{"id":339795133,"uuid":"1163355487","full_name":"elcukro/bank-mcp","owner":"elcukro","description":"Give your AI assistant secure, read-only access to your bank accounts. MCP server supporting Plaid, Teller, Enable Banking, and Tink.","archived":false,"fork":false,"pushed_at":"2026-02-23T07:57:52.000Z","size":14932,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-24T14:57:31.956Z","etag":null,"topics":["ai","banking","claude","fintech","llm","mcp","model-context-protocol","open-banking","plaid","psd2","teller","tink","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elcukro.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-21T14:02:11.000Z","updated_at":"2026-02-23T07:57:54.000Z","dependencies_parsed_at":"2026-02-24T11:05:06.292Z","dependency_job_id":null,"html_url":"https://github.com/elcukro/bank-mcp","commit_stats":null,"previous_names":["elcukro/bank-mcp"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/elcukro/bank-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elcukro%2Fbank-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elcukro%2Fbank-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elcukro%2Fbank-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elcukro%2Fbank-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elcukro","download_url":"https://codeload.github.com/elcukro/bank-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elcukro%2Fbank-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29819933,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T11:54:16.236Z","status":"ssl_error","status_checked_at":"2026-02-25T11:54:15.198Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","banking","claude","fintech","llm","mcp","model-context-protocol","open-banking","plaid","psd2","teller","tink","typescript"],"created_at":"2026-02-22T09:29:35.693Z","updated_at":"2026-02-25T12:01:20.675Z","avatar_url":"https://github.com/elcukro.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🏦 bank-mcp\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"bank-mcp.png\" alt=\"bank-mcp — Banking data for AI assistants\" width=\"700\"\u003e\n\u003c/p\u003e\n\n**Give your AI assistant secure, read-only access to your bank accounts.**\n\n[![npm version](https://img.shields.io/npm/v/@bank-mcp/server.svg)](https://www.npmjs.com/package/@bank-mcp/server)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![CI](https://github.com/elcukro/bank-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/elcukro/bank-mcp/actions/workflows/ci.yml)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)\n\n---\n\nMost people manage their finances by logging into bank portals, downloading CSVs, and building spreadsheets. bank-mcp eliminates that friction by letting your AI assistant query your bank accounts directly — balances, transactions, spending breakdowns — through natural conversation. It connects to real bank APIs via the [Model Context Protocol](https://modelcontextprotocol.io) so any MCP-compatible client (Claude Code, Claude Desktop, and others) can understand your finances.\n\n- **5 providers, 15,000+ institutions** — US and European banks covered\n- **Read-only by design** — no write access, no transfers, no modifications\n- **Works with any MCP client** — Claude Code, Claude Desktop, Cursor, and more\n- **Pluggable architecture** — add your own provider in under 100 lines\n\n## Table of Contents\n\n- [Supported Providers](#supported-providers)\n- [Quick Start](#quick-start)\n- [Client Setup](#client-setup)\n- [Available Tools](#available-tools)\n- [Architecture](#architecture)\n- [Provider Setup Guides](#provider-setup-guides)\n- [Caching](#caching)\n- [Multiple Connections](#multiple-connections)\n- [Security](#security)\n- [Adding a New Provider](#adding-a-new-provider)\n- [Troubleshooting](#troubleshooting)\n- [Development](#development)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Supported Providers\n\n| Provider | Region | Institutions | Auth Method | Setup Difficulty |\n|----------|--------|-------------|-------------|-----------------|\n| **[Enable Banking](https://enablebanking.com)** | Europe | 2,000+ | RSA key + session | Medium |\n| **[Teller](https://teller.io)** | US | 7,000+ | mTLS certificate | Medium |\n| **[Plaid](https://plaid.com)** | US / CA / EU | 12,000+ | Client ID + secret | Easy |\n| **[Tink](https://tink.com)** | Europe | 3,400+ | OAuth2 token | Easy |\n| **Mock** | Demo | — | None | Instant |\n\n### US Banks\n\nSupported through Plaid and Teller — covering the top 20 US institutions and thousands more:\n\nJPMorgan Chase · Bank of America · Wells Fargo · Citibank · Capital One · U.S. Bank · PNC · Truist · Goldman Sachs · TD Bank · Citizens · Fifth Third · M\u0026T Bank · Huntington · KeyBank · Ally · Regions · BMO · American Express · USAA\n\n### European Banks\n\nSupported through Enable Banking and Tink — covering major banks across the EU and UK:\n\nHSBC · 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\n\n## Quick Start\n\n### 1. Configure a bank connection\n\n```bash\nnpx @bank-mcp/server init\n```\n\nThe interactive wizard walks you through selecting a provider and entering credentials. It validates your connection by fetching accounts before saving.\n\n### 2. Add to your MCP client\n\nAdd bank-mcp to your AI tool's MCP configuration. Here's the most common setup:\n\n**Claude Code** (`.mcp.json` in your project root or `~/.claude/.mcp.json` globally):\n\n```json\n{\n  \"mcpServers\": {\n    \"bank\": {\n      \"command\": \"npx\",\n      \"args\": [\"@bank-mcp/server\"]\n    }\n  }\n}\n```\n\n\u003e **Using a different tool?** See [Client Setup](#client-setup) for Claude Desktop, Cursor, VS Code, Windsurf, Codex CLI, Gemini CLI, and Zed.\n\n### 3. Try it\n\nAsk your AI assistant about your finances in natural language:\n\n```\n\"What's my checking account balance?\"\n\"Show my spending by category this month\"\n\"Find all Amazon purchases over $50\"\n\"Compare my spending this month vs last month\"\n```\n\n### Demo Mode\n\nDon't have bank credentials yet? Start with realistic fake data:\n\n```bash\nnpx @bank-mcp/server --mock\n```\n\nThis launches with a mock provider that generates deterministic sample accounts and transactions — perfect for testing your setup or building on top of bank-mcp before connecting real accounts.\n\n## Client Setup\n\nbank-mcp works with any MCP-compatible client. Pick your tool below.\n\n### Claude Code\n\nAdd to `.mcp.json` in your project root (or `~/.claude/.mcp.json` for all projects):\n\n```json\n{\n  \"mcpServers\": {\n    \"bank\": {\n      \"command\": \"npx\",\n      \"args\": [\"@bank-mcp/server\"]\n    }\n  }\n}\n```\n\nOr add via the CLI:\n\n```bash\nclaude mcp add bank -- npx @bank-mcp/server\n```\n\n### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"bank\": {\n      \"command\": \"npx\",\n      \"args\": [\"@bank-mcp/server\"]\n    }\n  }\n}\n```\n\nConfig file location:\n- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n### Cursor\n\nAdd to `.cursor/mcp.json` in your project root (or `~/.cursor/mcp.json` globally):\n\n```json\n{\n  \"mcpServers\": {\n    \"bank\": {\n      \"command\": \"npx\",\n      \"args\": [\"@bank-mcp/server\"]\n    }\n  }\n}\n```\n\n### VS Code (Copilot)\n\nAdd to `.vscode/mcp.json` in your workspace:\n\n```json\n{\n  \"servers\": {\n    \"bank\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"@bank-mcp/server\"]\n    }\n  }\n}\n```\n\n### Windsurf\n\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"bank\": {\n      \"command\": \"npx\",\n      \"args\": [\"@bank-mcp/server\"]\n    }\n  }\n}\n```\n\n### OpenAI Codex CLI\n\nAdd to `~/.codex/config.toml` (or `.codex/config.toml` in your project):\n\n```toml\n[mcp_servers.bank]\ncommand = \"npx\"\nargs = [\"@bank-mcp/server\"]\n```\n\nOr add via the CLI:\n\n```bash\ncodex mcp add bank -- npx @bank-mcp/server\n```\n\n### Gemini CLI\n\nAdd to `~/.gemini/settings.json` (or `.gemini/settings.json` in your project):\n\n```json\n{\n  \"mcpServers\": {\n    \"bank\": {\n      \"command\": \"npx\",\n      \"args\": [\"@bank-mcp/server\"]\n    }\n  }\n}\n```\n\n### Zed\n\nAdd to your Zed `settings.json`:\n\n```json\n{\n  \"context_servers\": {\n    \"bank\": {\n      \"command\": {\n        \"path\": \"npx\",\n        \"args\": [\"@bank-mcp/server\"]\n      }\n    }\n  }\n}\n```\n\n\u003e **Don't see your tool?** bank-mcp uses standard MCP stdio transport. Any client that supports MCP stdio servers can connect using `npx @bank-mcp/server` as the command.\n\n## Available Tools\n\n| Tool | Description | Key Parameters |\n|------|-------------|----------------|\n| `list_accounts` | List all bank accounts across connections | `connectionId?` |\n| `list_transactions` | Fetch transactions with filtering | `accountId`, `from?`, `to?`, `minAmount?`, `maxAmount?` |\n| `search_transactions` | Full-text search on descriptions and merchants | `query`, `accountId?`, `from?`, `to?` |\n| `get_balance` | Current and available balances | `accountId`, `connectionId?` |\n| `spending_summary` | Expenses grouped by merchant or category | `accountId`, `from?`, `to?`, `groupBy?` |\n\n### Example Conversations\n\nHere's what real interactions look like:\n\n**Checking balances:**\n\u003e **You:** What's in my bank accounts?\n\u003e\n\u003e **Claude:** You have 3 accounts across 2 connections:\n\u003e | Account | Balance | Available |\n\u003e |---------|---------|-----------|\n\u003e | ING Checking | €3,241.50 | €3,141.50 |\n\u003e | ING Savings | €12,800.00 | €12,800.00 |\n\u003e | Revolut Main | €891.23 | €891.23 |\n\n**Spending analysis:**\n\u003e **You:** Show my spending by category this month\n\u003e\n\u003e **Claude:** Here's your spending breakdown for February 2026:\n\u003e | Category | Amount | Transactions |\n\u003e |----------|--------|-------------|\n\u003e | Groceries | €487.30 | 12 |\n\u003e | Restaurants | €213.50 | 8 |\n\u003e | Transport | €156.00 | 5 |\n\u003e | Subscriptions | €89.97 | 4 |\n\n**Searching transactions:**\n\u003e **You:** Find all Amazon purchases over $50 in the last 3 months\n\u003e\n\u003e **Claude:** Found 7 Amazon transactions over $50 since November:\n\u003e - Dec 15: Amazon.com — $129.99 (Electronics)\n\u003e - Dec 3: Amazon.com — $67.50 (Books)\n\u003e - ...\n\n## Architecture\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"architecture.png\" alt=\"bank-mcp architecture diagram\" width=\"700\"\u003e\n\u003c/p\u003e\n\n### File Structure\n\n```\n~/.bank-mcp/\n  config.json          # Connections \u0026 credentials (permissions: 600)\n  keys/                # RSA keys and certificates\n\nsrc/\n  providers/\n    base.ts            # Abstract BankProvider class\n    registry.ts        # Provider registration\n    enable-banking/    # PSD2 via Enable Banking API\n    teller/            # US banks via mTLS\n    plaid/             # US/CA/EU via Plaid API\n    tink/              # EU Open Banking via Tink API\n    mock/              # Deterministic fake data\n  tools/               # MCP tool implementations\n  utils/\n    cache.ts           # In-memory TTL cache\n    http.ts            # Fetch with timeout + retry\n```\n\n### Provider Interface\n\nEvery provider extends the same abstract class, making it straightforward to add new integrations:\n\n```typescript\nabstract class BankProvider {\n  abstract listAccounts(config): Promise\u003cBankAccount[]\u003e;\n  abstract listTransactions(config, accountId, filter?): Promise\u003cTransaction[]\u003e;\n  abstract getBalance(config, accountId): Promise\u003cBalance[]\u003e;\n  abstract getConfigSchema(): ConfigField[];\n}\n```\n\n## Provider Setup Guides\n\n### Enable Banking (PSD2)\n\n**What you need:**\n- [ ] An [Enable Banking](https://enablebanking.com) account with a registered app\n- [ ] Your RSA private key (`.pem` file)\n- [ ] An active session ID from the OAuth consent flow\n\n```bash\nnpx @bank-mcp/server init\n# Select: Enable Banking (PSD2)\n# Enter: App ID, key path, session ID\n```\n\n\u003e **Tip:** Sessions expire after 90 days (PSD2 regulation). You'll need to re-authenticate through the consent flow periodically. The server logs a clear message when a session expires.\n\n### Teller (US Banks)\n\n**What you need:**\n- [ ] A [Teller](https://teller.io) developer account\n- [ ] Your client certificate and private key (`.zip` download from the Teller dashboard)\n- [ ] An access token from a Teller Connect enrollment\n\n```bash\n# Extract your certificate\nmkdir -p ~/.bank-mcp/keys/teller\nunzip ~/Downloads/teller.zip -d ~/.bank-mcp/keys/teller/\nchmod 600 ~/.bank-mcp/keys/teller/*.pem\n\n# Run setup\nnpx @bank-mcp/server init\n# Select: Teller (US Banks)\n# Enter: certificate path, key path, access token\n```\n\n\u003e **Tip:** Teller uses mutual TLS (mTLS) — your app authenticates at the TLS layer via client certificate, then individual enrollments authenticate via access token. Free tier supports up to 100 live connections.\n\n### Plaid (US/CA/EU)\n\n**What you need:**\n- [ ] A [Plaid](https://plaid.com) developer account (free signup)\n- [ ] Your Client ID and Secret (from the Plaid dashboard)\n- [ ] An access token from a Plaid Link enrollment\n\n```bash\nnpx @bank-mcp/server init\n# Select: Plaid (US/CA/EU)\n# Enter: client ID, secret, access token, environment\n```\n\n\u003e **Tip:** Start with the `sandbox` environment (fake data, instant setup). Plaid provides the richest transaction categorization — 104 sub-categories with confidence scores — which makes it ideal for LLM-driven spending analysis.\n\n### Tink (EU Open Banking)\n\n**What you need:**\n- [ ] A [Tink](https://tink.com) developer account (free for testing)\n- [ ] An OAuth2 access token (from the Tink Console or your OAuth2 flow)\n\n```bash\nnpx @bank-mcp/server init\n# Select: Tink (EU Open Banking)\n# Enter: access token\n```\n\n\u003e **Tip:** Tink covers 3,400+ banks across Europe. Transactions include PFM (Personal Finance Management) categories with merchant enrichment, and amounts use fixed-point decimals — no floating-point rounding surprises.\n\n## Caching\n\nAll data is cached in-memory (no disk persistence — cache dies with the process):\n\n| Data | TTL | Why |\n|------|-----|-----|\n| Account list | 1 hour | Accounts rarely change; minimizes API calls |\n| Transactions | 15 minutes | Balances new transactions vs freshness |\n| Balances | 5 minutes | Most time-sensitive; users expect current data |\n\nCache is per-connection and per-account. Restarting the server clears all caches.\n\n## Multiple Connections\n\nConfigure as many bank connections as you need — even across different providers:\n\n```json\n{\n  \"connections\": [\n    { \"id\": \"ing-main\", \"provider\": \"enable-banking\", \"...\" : \"...\" },\n    { \"id\": \"chase-checking\", \"provider\": \"plaid\", \"...\" : \"...\" },\n    { \"id\": \"revolut\", \"provider\": \"tink\", \"...\" : \"...\" }\n  ]\n}\n```\n\nAll tools accept an optional `connectionId` parameter to target a specific connection. When omitted, every connection is queried and results are merged — so \"show all my balances\" works across banks automatically.\n\n## Security\n\n### Design Principles\n\nbank-mcp handles sensitive financial credentials. Its security posture is built on minimizing attack surface:\n\n- **Read-only by design** — the `BankProvider` interface exposes only read methods (`listAccounts`, `listTransactions`, `getBalance`). There are no write methods — no transfers, no account modifications, no payment initiation. This is enforced at the type level, not by convention.\n- **No network listener** — bank-mcp runs as a stdio process (stdin/stdout), not an HTTP server. There is no open port, no attack surface from the network.\n- **Minimal dependencies** — only 3 runtime dependencies (`@modelcontextprotocol/sdk`, `jsonwebtoken`, `zod`). Fewer dependencies means fewer supply chain risks.\n- **Open source** — every line is auditable. No obfuscated code, no compiled blobs, no telemetry.\n\n### Credential Storage\n\n- Config file at `~/.bank-mcp/config.json` is created with **`600` permissions** (owner read/write only)\n- RSA keys and certificates are stored in `~/.bank-mcp/keys/` with the same restrictive permissions\n- Credentials are **never logged** — the server sanitizes config objects before any debug output\n- No credential caching beyond the process lifetime — when the server stops, credentials exist only on disk\n\n### Data Flow\n\n```\nYour Bank's API ← HTTPS → bank-mcp (local process) ← stdio → MCP Client (local)\n```\n\n- Transaction data flows directly from your bank's API to your local MCP client\n- **Nothing is stored remotely** — no cloud relay, no proxy server, no intermediate storage\n- **No telemetry** — zero analytics, no crash reports, no usage tracking, no phone-home\n- In-memory cache is per-process and dies when the server stops\n\n### What Your MCP Client Sees\n\nThe MCP client (Claude, Cursor, etc.) receives structured tool results containing:\n- Account names, types, and balances\n- Transaction descriptions, amounts, dates, and categories\n- Spending summaries\n\nThe LLM processes this in its context window. Be aware that cloud-hosted LLMs send your conversation (including tool results) to their servers. If this is a concern, use a local model or review your provider's data retention policy.\n\n### Recommendations\n\n- **Rotate tokens** — if your banking provider supports token rotation, enable it\n- **Use sandbox first** — test your setup with mock data or Plaid sandbox before connecting live accounts\n- **Review permissions** — ensure `~/.bank-mcp/` is not world-readable (`ls -la ~/.bank-mcp/`)\n- **Scope access** — if your provider supports it, request the minimum scopes needed (read-only account and transaction access)\n\n### Reporting Vulnerabilities\n\nIf you discover a security issue, please email the maintainer directly rather than opening a public issue. See [CONTRIBUTING.md](CONTRIBUTING.md) for contact details.\n\n## Adding a New Provider\n\nThe pluggable architecture makes it straightforward to add support for additional banking APIs:\n\n1. **Create your provider** at `src/providers/your-provider/index.ts`\n2. **Extend `BankProvider`** — implement `listAccounts`, `listTransactions`, `getBalance`, and `getConfigSchema`\n3. **Register it** in `src/providers/registry.ts`\n4. **Add config fields** for the init wizard (the schema drives the interactive prompts automatically)\n\nSee [`src/providers/enable-banking/`](src/providers/enable-banking/) as a reference implementation. The mock provider at [`src/providers/mock/`](src/providers/mock/) is also useful for understanding the expected data shapes.\n\n## Troubleshooting\n\n**`npx` is running an old version**\n\nnpx caches packages. Force the latest:\n\n```bash\nnpx @bank-mcp/server@latest\n```\n\n**\"Permission denied\" reading config**\n\nThe config file should be readable by your user:\n\n```bash\nls -la ~/.bank-mcp/config.json\n# Should show: -rw------- (600)\n# Fix: chmod 600 ~/.bank-mcp/config.json\n```\n\n**\"Session expired\" (Enable Banking)**\n\nPSD2 sessions expire after 90 days. Re-run the init wizard:\n\n```bash\nnpx @bank-mcp/server init\n# Select your existing Enable Banking connection to update the session\n```\n\n**Tools not showing up in your MCP client**\n\n1. Verify the server starts: `npx @bank-mcp/server --mock` (should output MCP protocol on stdout)\n2. Check your config file path matches your client's expected location\n3. Restart your MCP client after adding the config\n4. Check your client's MCP logs for connection errors\n\n**\"ETLS\" or certificate errors (Teller)**\n\nTeller requires mTLS. Verify your certificate files:\n\n```bash\nls -la ~/.bank-mcp/keys/teller/\n# Should contain: certificate.pem, private_key.pem\n# Both should be chmod 600\n```\n\n## Development\n\n```bash\ngit clone https://github.com/elcukro/bank-mcp.git\ncd bank-mcp\nnpm install\nnpm test          # Run tests (vitest)\nnpm run build     # Compile TypeScript\nnpm run dev       # Watch mode (recompile on change)\nnpm run lint      # ESLint\n```\n\n## Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\nIf you're adding a new provider, open an issue first to discuss the approach — we want to make sure the integration fits the project's architecture.\n\n## License\n\n[MIT](LICENSE) — use it however you want.\n\n---\n\n\u003cp align=\"center\"\u003e\n  Built for the \u003ca href=\"https://modelcontextprotocol.io\"\u003eModel Context Protocol\u003c/a\u003e ecosystem\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felcukro%2Fbank-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felcukro%2Fbank-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felcukro%2Fbank-mcp/lists"}