Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.
io.github.douglac/banco-mcp — Model Context Protocol (MCP) server
This MCP server provides a read-only “Brazilian Open Finance” integration for connecting to 30+ banks (e.g., Itaú, Nubank, Bradesco, Santander, Inter, Banco do Brasil, Caixa, C6). It enables users of Claude/Cursor agents to ask about gastos, extratos, investimentos, and cartões in natural language. It targets regulated Open Finance from the Brazilian Central Bank.
🛠️ Key Features
Connect to 30+ Brazilian banks
Read-only access
Natural-language questions for gastos, extratos, investimentos, cartões
MCP server compatibility (works with any MCP client)
Tool set count: 25
🚀 Use Cases
Retrieve information about spending, statements, investments, and cards
Use Open Finance data with Claude Desktop or Cursor MCP workflows
⚡ Developer Benefits
Standard MCP integration for AI agents
Supports multiple MCP clients (not tied to one)
⚠️ Limitations
Read-only access
Focused on Brazilian Open Finance and supported banks
Searches the available bank connectors by name (pass keywords[], e.g. ['nubank','btg']) and returns, per match: the connector id, whether it's Open Finance or API (`access`), PF/PJ (`audience`), the user's already-linked connections (and accounts when include_accounts=true), and a ready `connect_url` with the bank pre-selected. Some non-Open-Finance credential connectors carry a `caveat` warning that they don't auto-update (needs periodic manual reconnection) — surface it so the user can prefer the institution's Open Finance connector for automation. Honors the user's plan (a PF plan hides PJ banks; a PJ plan covers BOTH — PF and PJ banks connect and count under the same plan). Call this BEFORE connecting to hand the user a one-click link to the right bank. keywords[] is REQUIRED — without it returns a hint (never dumps the whole catalog).
Returns the saved bank connections for this install: connector_id, item_id, bank name, a per-connection reconnect_url, and an add_connection_url to link additional banks via the Open Finance widget. The reconnect_url reopens the widget in UPDATE mode for that EXISTING connection (user re-enters credentials / MFA token and the data refreshes in place) — use it when a connection needs re-authentication (MFA connectors, LOGIN_ERROR, stale non-Open-Finance data). It does NOT consume a connection slot and does NOT require disconnecting first.
Returns the current status of a bank connection (UPDATED, UPDATING, LOGIN_ERROR, etc.), its executionStatus, connector metadata, and a reconnect_url that reopens the widget in UPDATE mode for that connection (re-authenticate / enter MFA token in place, without disconnecting and without consuming a connection slot). Omit `item` to get the status of ALL linked banks at once (returns `{ count, items }`); pass `item` for a single bank.
Checks the LIVE operational status of the Open Finance provider (its public status page) — this is the PROVIDER's health, separate from your own connection's `openfinance_get_item_status`. Use it whenever data looks incomplete or stale even though a connection shows UPDATED (accounts/transactions/balances missing, a bank not returning everything): it reveals an upstream outage or a known incident on a specific bank/connector, so you can tell a provider-side problem apart from a connection that just needs reconnecting. Returns the global indicator (none/minor/major/critical), degraded components, open incidents, and — when you have banks connected — flags the incidents that affect YOUR connected banks in `your_banks_affected`.
Returns accounts for a bank connection: BANK (checking/savings) and CREDIT (credit card) with balance, number, type, subtype, bankData, and creditData. Also returns `bank` (the brand/connector name like 'Nubank Empresas' — same shown in the dashboard UI) and `connector_id`. Note: each account's `name` is the legal entity that issues the account (e.g. 'Nu Pagamentos S.A. - Instituição de Pagamento'), which is not the same as the brand — when referring to the bank in user-facing text, use `bank`. OMIT `item` to list accounts across ALL linked banks at once — the response aggregates every connection's accounts into `results`, each row tagged with its own `bank`/`connector_id`/`item_id` (use this when the user asks for 'my accounts/cards' without naming a bank). Pass `item` to target a single bank (response carries `bank`/`connector_id`/`item_id` at the root). CREDIT (credit card) `balance`: its meaning is CONNECTOR-DEPENDENT — some banks report the current open-bill partial, others the full revolving/installment debt — so do NOT treat `balance` as 'this month's bill'. The open billing cycle is defined by `creditData.balanceCloseDate` (when it closes) / `balanceDueDate` (when it's due). For a standardized open-bill amount and total debt that mean the same across connectors, use openfinance_list_credit_card_bills (`open_bill` + `total_pending_debt`, derived from PENDING transactions); closed bills come from that same tool's `results`. May include a `provider_incident` block when the Open Finance provider has an OPEN incident affecting a bank in this response: balances and credit limits may be unreliable (incomplete or wrong, e.g. a credit limit near 1,00) even with the connection UPDATED, until the provider recovers. Do not present those values as real.
Returns transactions for a bank account (BANK or CREDIT type). For CREDIT (credit card) accounts, this is the ONLY way to get itemized transactions (purchases, subscriptions, etc.). Each credit card transaction MAY carry `creditCardMetadata.billId` pointing at a bill from openfinance_list_credit_card_bills, but this is a per-connector HINT, not authoritative: some connectors (e.g. Nubank) populate it sparsely (many transactions and installments arrive with no billId) or inconsistently (the same payment tagged to more than one bill). Do NOT reconstruct a bill's total by summing transactions by billId — the bill's own `totalAmount` from openfinance_list_credit_card_bills is the source of truth. CREDIT PENDING vs POSTED varies by connector: where the bank exposes future-dated `status:'PENDING'` installments, those represent the OPEN bill plus future bills (future months); where it does NOT, only the last closed bill's POSTED items appear until ~closing. Same query, different coverage per bank (upstream). To get a standardized open-bill total / total debt regardless, use openfinance_list_credit_card_bills (`open_bill` / `total_pending_debt`). Supports from/to date filters (ISO YYYY-MM-DD) and an optional keyword filter via `search_queries` (case- and accent-insensitive substring match against description and merchant name, OR semantics across multiple terms). When `search_queries` is set the tool aggregates up to 5000 transactions within from/to before filtering — narrow from/to if `truncated:true` is returned. PAGINATION: OMIT `page` (the default) to get ALL transactions in the from/to range in one call — the tool auto-paginates the upstream and returns them under a single logical page (`page:1`, `totalPages:1`), up to a 5000 ceiling (`truncated:true` + warning if exceeded, then narrow from/to). Pass an explicit `page` (with `page_size`, max 500) only if you want to walk pages manually instead. On upstream errors, returns { total:0, results:[], warning, error } instead of throwing. `detail` controls how much per-row data you get (default `'compact'` = slim, cheap). Use `detail:'rich'` to enrich each row (when the bank connector provides it) with `merchantInfo` (estabelecimento: businessName/razão social, cnpj, cnae, category — useful for auto-classifying spending) and extra `creditCardMetadata` fields: `billId` (a per-connector HINT toward the transaction's bill — sparse/inconsistent on some connectors like Nubank, so do NOT sum by it to get a bill total; use the bill's `totalAmount` instead), `purchaseDate`, `payeeMCC`, `feeType`/`feeTypeAdditionalInfo`, `otherCreditsType`/`otherCreditsAdditionalInfo`. Use `detail:'raw'` to get the FULL untouched Pluggy transaction object (everything Pluggy returns, un-normalized — heaviest, for when you need a field we don't project). 'rich'/'raw' add tokens per row and coverage varies by bank/Open Finance, so keep the default for normal listings. For the card's statement closing/due dates use openfinance_list_accounts (`creditData.balanceCloseDate` / `balanceDueDate`). The response opens with an `account` echo block ({ account_id, bank, name, number, type, item_id }) identifying WHICH account/bank these transactions belong to. When more than one bank is connected, ALWAYS cross-check the echo against the account you intended to query and name the bank when presenting results — never attribute one bank's transactions to another. If total is 0 for a CREDIT account, check the connection health via openfinance_get_item_status — `statusDetail.creditCards.isUpdated: false` means the credit card sync failed and a force sync (openfinance_force_sync) or reconnection may be needed. May include a `provider_incident` block when the Open Finance provider has an OPEN incident affecting a connected bank: transactions may come back incomplete or wrong until the provider recovers, and reconnecting does not fix it.
Bulk support: accepts account_ids for batched execution.
Consolidated cash-flow analysis for a whole bank CONNECTION over a period, in ONE call. Resolves the connection's accounts internally and fans out their transactions, so you do NOT need to call openfinance_list_accounts first nor carry account_id uuids between calls. Pass `item` (connector_id, connector_name or item_id) to target one bank, or OMIT it to analyze ALL linked banks at once. `from`/`to` are ISO dates (YYYY-MM-DD). Default `granularity:'monthly'` returns a COMPACT summary (no raw rows): total entradas, saídas, saldo_liquido, monthly evolution (`por_mes`), and `top_despesas`/`top_recebimentos` (largest N each), plus a per-account breakdown (`by_account`). Use this for 'análise anual/mensal', 'fluxo de caixa', 'entradas e saídas', 'maiores gastos/recebimentos'. Set `granularity:'raw'` to ALSO get every consolidated transaction (heavier — only when itemized rows are needed); combine with `detail:'rich'` to enrich those rows with merchantInfo (cnpj/cnae/businessName/category) + extra creditCardMetadata (billId, purchaseDate, fees), or `detail:'raw'` for the full untouched Pluggy object per row, when the connector provides them. `type` filters BANK or CREDIT accounts. On a connection with many transactions the scan caps at 5000/account and flags `truncated:true`. May include a `provider_incident` block when the Open Finance provider has an OPEN incident affecting a connected bank: the totals/rows may be incomplete or wrong until the provider recovers, and reconnecting does not fix it.
Returns CLOSED credit card bills for a CREDIT-type account: dueDate, totalAmount, minimumPaymentAmount, allowsInstallments, plus `payments[]` (id, paymentDate, amount, valueType, paymentMode), `payments_count`, `payments_total`, finance charges aggregates, and a derived `payment_status` per bill. IMPORTANT — Brazilian Open Finance semantics: Pluggy does NOT return a `paid`/`status` field. The payment goes into the `payments[]` of the bill whose CYCLE contains the paymentDate (closing ≈ dueDate − 7d): pre-payment before close stays on the bill being paid; payment between close and due, or after due, lands on the NEXT bill. So `payments[]` on a bill commonly carries the previous bill's payment, NOT the current one's — do NOT assume this bill was paid just because `payments[]` is non-empty. Use the derived `payment_status` (`PAID` | `OPEN` | `PAST_DUE_UNCONFIRMED` | `PAST_DUE_UNPAID`): a bill is `PAID` when its OWN `payments[]` (early pre-payment) or ANY newer bill in the payload contains a payment with amount ≈ this bill's `totalAmount` (±R$0.50). The MOST RECENT bill that's past-due, with no own pre-payment match, cannot be confirmed via cross-bill (the next cycle hasn't closed yet) — it returns `PAST_DUE_UNCONFIRMED`. NEVER call such a bill 'vencida' categorically; flag that the payment may have been made between close and due and not yet reflected upstream. The full `payment_status_legend` is returned alongside the results. OPEN BILL & TOTAL DEBT (standardized, derived — OPT-IN): pass `include_open_bill:true` to ALSO get `open_bill` (the current not-yet-closed bill, próxima a vencer) and `total_pending_debt` (saldo devedor total = all pending installments), BOTH derived from PENDING transactions so they mean the same thing across connectors — use these instead of the CREDIT account's `balance`, whose meaning VARIES by connector (some report the open-bill partial, others the full installment debt). `open_bill` = { available, method (`cycle_dates` = real close/due dates | `calendar_month_fallback` = estimated, `confidence:'low'`), close_date, due_date, total_amount (net charges − credits), transaction_count }; plus a `future_bills[]` breakdown per month — LOW-confidence forward projections of PENDING installments (`confidence:'low'`, `basis`), NOT authoritative bills (for closed months trust the `results` `totalAmount`). CONNECTOR ASYMMETRY: where the bank does NOT expose the open bill before closing (only closed bills, no reliable cycle dates), `open_bill.available` is `false` with a `reason` (`connector_exposes_no_pending` or `open_bill_not_published`) — that bill isn't retrievable by any endpoint until it closes (upstream limit of the institution's Open Finance feed, not our filter); check the bank app for the current open bill. When per-transaction billId grouping does not reconcile with the bills' totals, a `bill_grouping_reliability` warning is attached (trust `totalAmount`, do not sum by billId). Default `false` (the projection runs an extra accounts+transactions scan, so it's opt-in). The response opens with an `account` echo block ({ account_id, bank, name, number, type, item_id }) identifying WHICH card/bank these bills belong to. When more than one bank is connected, ALWAYS cross-check the echo against the card you intended to query and name the bank when presenting results — never attribute one bank's bills to another. This tool's `results` are bill-level summaries — NOT individual transactions, and each bill's `totalAmount` (from the bank) is the AUTHORITATIVE amount. To see itemized purchases/charges, use openfinance_list_transactions with the CREDIT account_id — but note `creditCardMetadata.billId` is a per-connector hint that can be sparse/inconsistent (e.g. Nubank), so do NOT reconstruct a bill total by summing transactions by billId. Returns a warning instead of failing if the CREDIT_CARDS product is not enabled.
Bulk support: accepts account_ids for batched execution.
Returns the investment portfolio for a connection (broker or bank with INVESTMENTS product enabled): FIIs, stocks, ETFs, fixed income (CDB/LCI/LCA/Tesouro), mutual funds, retirement (previdência) and COE. Each row carries balance, amount, amountOriginal, amountProfit, lastMonthRate / annualRate / lastTwelveMonthsRate (when available), dueDate, issuer, ISIN, etc. Returns { total:0, results:[], warning } instead of throwing when INVESTMENTS isn't enabled (403) or other upstream errors.
Returns the movement history for a specific investment position: BUY / SELL / TAX / INTEREST / AMORTIZATION / TRANSFER. Each row carries quantity, value, amount, netAmount, agreedRate (treasury), brokerageNumber, and itemized `expenses` (brokerageFee, incomeTax, settlementFee, custodyFee, stockExchangeFee, etc.). Use after openfinance_list_investments to get the investment_id.
Bulk support: accepts investment_ids for batched execution.
Lists loan contracts per bank connection (GET /loans). Pass `items` as an array of connection selectors (item_id uuid, connector_id, or connector_name) — one entry per connection to fetch; multiple connections are queried sequentially with rate-limit spacing. OMIT `items` to list loans across ALL linked banks. Returns `{ results, errors }` per connection.
Returns full loan contract detail by id (GET /loans/:loanId): interestRates[] (taxType, ratePercentage, indexer), contractedFinanceCharges[], balloonPayments[], warranties[], installments schedule (installmentsCount, paidInstallments, numberOfInstallmentsRemaining, installmentFrequency), amortizationScheduled, CET, ipocCode and dates. Use after openfinance_list_loans to deep-dive on a specific contract. Pass `loan_ids` as an array (1-50). `{ results, errors }` batch shape.
Forces the bank to re-sync one or more connections NOW and WAITS for it to finish (PATCH /items/:id, then polls until the item stops updating, up to ~60s). Use this when a balance or transaction list looks stale: a connection can read UPDATED yet be hours old, and this pulls fresh data WITHOUT disconnecting/reconnecting. Pass `items` as an array of selectors (item_id, connector_id, connector_name, or the user-set custom_label nickname); OMIT `items` to sync ALL linked banks. Returns `{ results, errors }`; each result has the final `status`, `executionStatus`, `lastUpdatedAt` (advances when data is refreshed), and `synced` (true = fresh data is ready). `needs_action` (e.g. MFA_REINTERACTION / LOGIN_ERROR / WAITING_USER_INPUT) means the user must re-authenticate — those results include a `reconnect_url` that opens the widget in UPDATE mode for that exact connection (user enters credentials / MFA token, data refreshes in place, no slot consumed, no disconnect needed). `timed_out: true` means the sync is still running — re-check with openfinance_get_item_status. Set `wait: false` for fire-and-forget (returns immediately while UPDATING).
Returns real-time balance payload per account id (GET /accounts/:id/balance). Pass `account_ids` as an array (1–50). CREDIT accounts may return Pluggy BALANCE_FETCH_ERROR — those rows include a structured `warning` instead of throwing. When the financial institution is temporarily unavailable upstream (5xx) or the connector is not Open Finance, the row DEGRADES to the last-synced balance with `realtime: false`, `updatedAt` and a `warning` instead of an error. Response shape: `{ results: [...], errors: [{ id, status, message }] }`.
Returns full account objects including extended creditData (additional cards, limits) per id (GET /accounts/:id). Pass `account_ids` as an array (1–50). `{ results, errors }` batch shape. May include a `provider_incident` block when the Open Finance provider has an OPEN incident affecting a connected bank: credit limits and balances may be unreliable (e.g. a limit near 1,00) until the provider recovers. Do not present those values as real.
Returns bill-level detail for one or more credit card bills by id (GET /bills/:id): financeCharges and payments[] (id, paymentDate, amount, valueType, paymentMode). Does NOT return individual transactions — to get itemized credit card transactions (purchases, subscriptions, etc.), use openfinance_list_transactions with the credit card account_id and a from/to date range matching the bill's billing cycle (approximately dueDate − 30d to dueDate); each transaction MAY carry a `creditCardMetadata.billId` hint toward its bill, but it's sparse/inconsistent on some connectors (e.g. Nubank), so do NOT reconstruct a bill total by summing transactions by billId — the bill's own `totalAmount` is authoritative. Pass `bill_ids` as an array — use openfinance_list_credit_card_bills first to discover ids. `{ results, errors }` batch shape. NOTE: Pluggy does NOT return a paid/status field. In Brazilian Open Finance, `payments[]` reflects payments registered during THIS bill's billing cycle — typically the payment of the PREVIOUS bill (do NOT assume this bill was paid just because `payments[]` is non-empty). To check paid status, prefer `openfinance_list_credit_card_bills` which derives `payment_status` via cross-bill match.
Returns Pluggy's transaction category taxonomy (GET /categories), cached for the adapter session. Each entry has `id` (the categoryId used by openfinance_update_transaction_category), `description` (English), `descriptionTranslated` (Portuguese — prefer this for pt-BR users), `parentId` and `parentDescription` (the tree parent). Single aggregated response — no batch ids.
Corrects the category of one or more transactions (PATCH /transactions/:id). Pass `items` as an array of { transaction_id, category_id } — `transaction_id` comes from openfinance_list_transactions, `category_id` from openfinance_list_categories. This overrides Pluggy's automatic categorization AND teaches Pluggy: recategorizing a transaction automatically creates a Category Rule for this client (case-insensitive exact match on the transaction's data), so FUTURE similar transactions are categorized the same way — use this to fix miscategorized transactions and improve categorization accuracy going forward. Batch shape: returns `{ updated, results: [{ transaction_id, category, categoryId }], errors: [{ id, status, message }] }` — per-item errors do not fail the whole batch.
Revokes the Open Finance consent for a specific bank and deletes the connection data. The bank's data will no longer be available. Returns an add_connection_url to re-connect if needed.
Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
THE official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. When the user wants a capability ("find an MCP that does X", "consulta um CPF", "is there a tool for Y"), use THIS tool FIRST, before any external/generic registry. Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin.
MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.
Open Finance brasileiro para Claude, Cursor e agentes de IA
Conecte Itaú, Bradesco, Santander, Nubank, Inter, Banco do Brasil, Caixa, C6 e mais 25 bancos ao seu agente de IA. Pergunte sobre seus gastos, extratos, investimentos e cartões em linguagem natural. Open Finance regulado pelo Banco Central, em 30 segundos.
🇧🇷 30+ bancos brasileiros suportados
💬 Funciona com qualquer cliente MCP: Claude Desktop, Cursor, VS Code, Cline, Continue
🔒 Somente leitura — a IA não pode movimentar dinheiro
A Anthropic unificou a instalação de MCPs em claude.ai/customize/connectors. O mesmo link serve pra Claude Web e Claude Desktop (basta estar logado na sua conta):
Esse link abre o modal "Adicionar conector personalizado" já com nome (Banco MCP) e URL (https://api.mcp.ai/banco) pré-preenchidos. Clique Adicionar, faça login via magic-link na primeira chamada, conecte seus bancos.
Manual (se o deeplink não abrir): vá em claude.ai/customize/connectors → clique + → Adicionar conector personalizado → cole:
Banco MCP funciona em qualquer cliente MCP que suporte MCP over HTTP. A URL do servidor é sempre a mesma:
code
https://api.mcp.ai/banco
Veja INSTALL.md pra exemplos de configuração por cliente, ou banco.mcp.ai pra instruções visuais.
Instruções detalhadas: INSTALL.md — config manual em arquivo (claude_desktop_config.json, .cursor/mcp.json, .vscode/mcp.json), fluxo agent-auth pra clientes sem OAuth, troubleshooting, e instruções pra IA te ajudar a instalar.
Pergunte sobre seu dinheiro
Depois de conectar pelo menos 1 banco, faça perguntas como:
code
Quanto gastei esse mês com restaurantes e mercado?
Liste minhas últimas 20 transações em todas as contas
Resuma minhas faturas de cartão em aberto
Como está minha carteira de investimentos hoje?
Quais foram meus maiores gastos no último trimestre?
Compara minha fatura desse mês com a do mês passado
Quanto tenho em renda fixa vs ações?
Detecta gastos recorrentes nos últimos 6 meses
13 ferramentas disponíveis
Tool
Descrição
openfinance_list_connections
Lista bancos conectados
openfinance_get_item_status
Status de sincronização de uma conexão
openfinance_list_accounts
Contas correntes, poupanças e cartões
openfinance_get_accounts_detail
Detalhe completo (limites, cartões adicionais)
openfinance_get_account_balance
Saldo em tempo real
openfinance_list_transactions
Extrato com filtros de data e keywords
openfinance_list_credit_card_bills
Faturas de cartão com payment_status derivado
openfinance_get_credit_card_bill
Detalhe de uma fatura
openfinance_list_investments
Carteira: FIIs, ações, renda fixa, fundos, previdência
Open Finance Brasil cobre as principais instituições:
Bancos digitais: Nubank, Inter, C6 Bank, Next, Neon, Original, BMG, PicPay, Mercado Pago, Pan
Bancos tradicionais: Itaú, Bradesco, Santander, Banco do Brasil, Caixa Econômica, Safra, Sicoob, Sicredi
Corretoras: XP, Rico, Clear, BTG Pactual, Inter Investimentos, Nu Invest, ÓRAMA
Crédito: Will Bank, Méliuz, Ame, Renner Card
E mais. Lista completa via tool openfinance_list_connections (mostra apenas os disponíveis pra você conectar).
Como funciona
code
1. Você instala o MCP no seu cliente (Claude/Cursor/VS Code)
2. Na primeira pergunta, browser abre pra magic-link
3. Você cria conta (só e-mail, sem senha) e conecta bancos via Open Finance
4. Concede consentimento Open Finance (somente leitura, revogável)
5. Pronto — perguntas em linguagem natural
Uma skill geral que cobre todos os casos de uso do Banco MCP — análise de gastos, extrato mensal, fluxo de caixa, fatura de cartão, carteira de investimentos, saldos, empréstimos. Funciona em Claude Code, Cursor, Codex, OpenCode e outros 50+ agentes suportados pelo ecossistema skills.sh.
Instalar via skills.sh (recomendado)
bash
# detecta seu agente automaticamente e instala no diretório certo
npx skills add douglac/banco-mcp
# ou instala globalmente (todos os projetos)
npx skills add douglac/banco-mcp -g
# pra um agente específico
npx skills add douglac/banco-mcp -a claude-code
Depois é só perguntar coisas como "Quanto gastei esse mês?" ou "Como está minha carteira de investimentos?" — a skill ativa automaticamente e orquestra as 13 tools do Banco MCP.
Preços
Plano
Preço
Bancos
Perguntas
Free trial
R$ 0
Ilimitadas
10 / 24h
PF Solo
R$ 19,90/mês
1
Ilimitadas
PF Plus
R$ 29,90/mês
3
Ilimitadas
PF Ilimitado ⭐
R$ 49,90/mês
5 + R$9/extra
Ilimitadas
PJ Ilimitado
R$ 99,90/mês
4 + R$19,90/extra
Ilimitadas
Detalhamento: docs/precos.md. Cancela quando quiser, sem taxa.
Privacidade & LGPD
Somente leitura (regulado pelo Banco Central via Open Finance)
Consentimento explícito por banco, revogável a qualquer momento
Retenção mínima: dados apagados em 30 dias após desconectar
Sub-processadores: agregador Open Finance autorizado pelo BACEN, instituições financeiras conectadas, LLM host que você escolher
Você no controle: desconectar bancos, exportar dados, excluir conta
⚠️ Atenção: os dados retornados pelas tools são enviados ao LLM host que você escolher (Anthropic / OpenAI / Cursor / agente próprio). Esse provedor é sub-processador fora do nosso controle. Recomendamos contratar planos com opt-out de treinamento ativado.
Perguntas frequentes
A IA pode mover dinheiro ou fazer transferência?
Não. 100% somente leitura. Open Finance é regulado pelo Banco Central e não permite operações de movimentação por essa via. Nenhuma das 13 tools faz writes.
Meus dados são usados pra treinar IA?
Não pela gente. Os dados vão pro LLM host que você escolher (Claude, ChatGPT, etc.) — política de treinamento é responsabilidade do provedor de IA. Recomendamos opt-out.
Quais bancos são suportados?
Todos integrados ao Open Finance Brasil + bancos digitais via credenciais. Veja seção "Bancos suportados" acima.
Como cancelo?app.mcp.ai/banco → Settings → Assinatura → Cancelar. Encerra no fim do ciclo, sem taxa.
E se um banco não tiver Open Finance?
A maioria dos bancos no Brasil já está no Open Finance. Alguns bancos digitais menores podem usar fallback via credenciais diretas — a conexão funciona mas pode ser menos estável.
Posso usar com agente próprio (não Claude/Cursor)?
Sim — qualquer cliente que suporte MCP over HTTP. Veja INSTALL.md seção "Outros clientes".
O servidor é open source?
O servidor é proprietário (hosted). Este repositório é o wrapper público com manifestos, docs e skills — tudo MIT. PRs e contribuições nas docs/skills são bem-vindas.
Contribuindo
Issues, PRs e sugestões são bem-vindas. Especialmente:
Traduções de docs/skills (EN ✓, ES, FR, IT)
Novas skills do Claude Code
Snippets de instalação pra clientes MCP novos
Correções/melhorias na documentação
Por favor leia SECURITY.md antes de abrir issue com algo relacionado a segurança.