pluggy-mcp-br
Provides read-only access to Nubank account and credit card data connected through Pluggy/Meu Pluggy and Open Finance, including accounts, balances, transactions, card bills, and spending by category.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pluggy-mcp-brquais são meus saldos e a fatura atual dos cartões?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pluggy-mcp-br
Ponte somente leitura entre o Grok Bot e os seus dados bancários brasileiros. Os dados vêm da Pluggy, no plano pessoal gratuito Meu Pluggy, que por sua vez lê instituições do Open Finance.
Isto não é “o Open Finance brasileiro”. É um conector MCP que o seu bot consulta. Quem publica este repositório não recebe chave, senha nem extrato: cada pessoa sobe o próprio servidor e usa as próprias credenciais.
O que dá para perguntar
Ferramenta | O que faz |
| Contas e cartões, com número e CPF mascarados |
| Saldo das contas e fatura em aberto dos cartões, sem somar os dois |
| Transações entre |
| Faturas de uma conta |
| Soma das saídas ( |
| Status do item e |
Não há Pix, pagamento, transferência nem qualquer escrita. A API da Pluggy, daqui, só recebe POST /auth e GET.
Related MCP server: C6 Bank MCP
Privacidade
Credenciais da Pluggy ficam só em variáveis de ambiente do seu servidor.
Transações não são gravadas em disco nem em banco. O cache é memória do processo, com TTL padrão de 60 segundos (teto de 300). Na Vercel isso dura só enquanto a instância está quente, de propósito: extrato não vai para um cache compartilhado.
CPF válido vira
***.***.***-XX. Número de conta e cartão ficam só com os quatro últimos dígitos.A descrição da transação é dado não confiável. Ela volta no campo
texto_nao_confiavel, com um aviso de que não é instrução. Um texto de extrato pedindo Pix ou “ignore as instruções” não deve ser obedecido.O OAuth deste servidor tem um único usuário: o dono, que prova a senha
OWNER_PASSWORD. Não há cadastro de outras pessoas.O resultado da ferramenta segue para o Grok Bot e, portanto, para o provedor do modelo. Este repositório não fica no meio, mas o bot que você conectar vê o que a ferramenta devolver.
Limites que não são deste código
O Meu Pluggy atualiza os bancos cerca de uma vez a cada 24 horas. Este conector não força atualização.
A autorização do conector MeuPluggy dura 1 ano. A data está em
consentExpiresAt. Quando vence, as leituras voltam vazias até você autorizar de novo no dashboard. O consentimento de cada banco, dentro do Meu Pluggy, é outro prazo.Só entram instituições que o Open Finance e o Meu Pluggy oferecem. Uso pessoal, até 5 conexões, sem uso comercial. O guia oficial é Personal use: Meu Pluggy.
GET /v2/itemsnão existe nesse plano. Copie cadaitemIdna tela Demo.A categoria da Pluggy pode vir vazia no plano gratuito (o categorizador é recurso Pro). Aí o gasto cai em
Sem categoria.A chave de API da Pluggy dura 2 horas. O servidor renova com
POST /authe não pede para você colar essa chave.
Limites conhecidos
O reuso do código OAuth (cada código vale uma vez) e o limite de tentativas de senha ficam na memória da instância. Na Vercel, com várias instâncias, isso é parcial: outra instância pode não ter visto o código nem as falhas. Para cortar o acesso, troque
OAUTH_SIGNING_SECRET.npm auditavisa dopostcsstrazido pelo Next.js. A correção exigenext@16. Este projeto permanece no Next 15. Não usenpm audit fix --force.
Modo demo
O padrão é DATA_MODE=demo. Não chama a Pluggy e não precisa de chave. Os números são fictícios, inclusive um Nubank inventado, para você ver as seis ferramentas sem expor banco de verdade.
npm install
npm test
npm run demo:mcpdemo:mcp sobe o servidor em loopback, faz o OAuth do dono e imprime uma chamada MCP real de cada ferramenta. Se OWNER_PASSWORD já estiver no ambiente, o script usa essa senha. Só quando ela não existe é que o processo recebe senha-demo-local-123, sem gravar arquivo.
Para ler dados de verdade, ou o conector Sandbox da Pluggy, use DATA_MODE=live com as variáveis abaixo. A interface das ferramentas é a mesma. O Sandbox também exige Client ID, Client Secret e um itemId: só o modo demo funciona sem conta Pluggy.
Passo a passo
1. Meu Pluggy e o banco
Crie a conta em meu.pluggy.ai.
Conecte cada banco lá. É nessa etapa que o banco pede CPF e aprovação no aplicativo. Cada banco é uma autorização separada.
Para o Nubank, escolha Nubank na lista do Meu Pluggy e conclua o consentimento do Open Finance no app do Nubank. O nome exato do botão muda com o app; o que importa é terminar a autorização do Open Finance, não digitar a senha do banco neste repositório.
2. Conector MeuPluggy no dashboard
Entre no dashboard da Pluggy com a mesma conta.
Se a aplicação usa seleção manual de conectores, ligue MeuPluggy em Customization → Connectors (grupo Personal, aba Direct Connectors).
Abra Applications → a sua aplicação → Demo → Connect Account.
No widget, escolha MeuPluggy. Não escolha o banco de novo e não escolha Sandbox, a menos que você queira dados de teste da Pluggy.
Entre com a conta do Meu Pluggy.
Se o widget pedir CPF e aprovação do banco outra vez, você escolheu o conector do banco em vez de MeuPluggy. Volte e escolha MeuPluggy.
Cada banco ligado no Meu Pluggy vira um item dessa aplicação. Copie o itemId em Connected Items. O Client ID aparece na linha da aplicação. O Client Secret só é mostrado uma vez: se você não guardou, gere outro na página da aplicação.
3. Variáveis
Copie .env.example. No modo live:
Variável | Função |
|
|
| Client ID da aplicação |
| Client Secret da aplicação |
| Um ou mais |
| Origem pública exata, sem caminho. Ex.: |
| Senha do único dono, no mínimo 8 caracteres |
| Segredo para assinar os tokens, no mínimo 32 caracteres |
| Só se o cliente passar a exigir outro redirect |
| Opcional. Padrão 60, máximo 300 |
Não commite .env. Trocar OAUTH_SIGNING_SECRET invalida as sessões. Os redirects abaixo já são aceitos e não entram na variável extra:
cursor://anysphere.cursor-mcp/oauth/callbackhttps://www.cursor.com/agents/mcp/oauth/callbackhttp://localhost:8787/callback
http://localhost:8787/callback é o callback do Grok Bot / Cursor, não a porta deste servidor. Localmente o servidor usa PORT (padrão 3333), só em 127.0.0.1.
4. Deploy na Vercel
O projeto já tem vercel.json e rotas Next.js. O deploy fica com você. Este repositório não dispara produção sozinho.
Importe o repositório em vercel.com/new. O plano Hobby serve.
Framework: Next.js. Não precisa mudar o comando de build.
Em Settings → Environment Variables, coloque as variáveis do modo que você quer. Para um primeiro deploy sem banco,
DATA_MODE=demomaisOWNER_PASSWORD,OAUTH_SIGNING_SECRETePUBLIC_URLjá bastam.PUBLIC_URLtem de ser a origem que você vai entregar ao bot, comhttps, sem/mcp. Se usar domínio próprio, não deixe o valor em*.vercel.app.Faça o deploy quando quiser. Anote a URL
https://SEU-DOMINIO/mcp.
Confira, sem token, no navegador:
https://SEU-DOMINIO/.well-known/oauth-protected-resource/mcphttps://SEU-DOMINIO/.well-known/oauth-authorization-server
Os dois precisam abrir em JSON. POST /mcp sem token deve responder 401 com WWW-Authenticate apontando para o primeiro.
5. Grok Bot
No chat do bot, peça para adicionar o conector, por exemplo:
Adicione este servidor MCP: https://SEU-DOMINIO/mcp
O bot só autentica conector custom por OAuth. Não há token fixo para colar. Ele registra o cliente, abre o login e você digita OWNER_PASSWORD. Na tela seguinte as ferramentas passam a existir.
O servidor é stateless: código, access token e refresh token são JWT assinados com OAUTH_SIGNING_SECRET. Não há banco de sessões. O refresh não dá para revogar um a um; para cortar o acesso, troque o segredo ou a senha e peça para conectar de novo.
6. Se o OAuth do bot falhar
Há relatos no fórum do Cursor (conectores custom do Grok Bot e redirect_uri não permitido). O que este servidor faz a respeito:
Aceita, num único registro dinâmico, os três redirects que o cliente envia, inclusive
cursor://. Provedores que recusam esse esquema quebram o registro inteiro. Aqui o esquema é permitido de propósito.Cliente público, PKCE
S256, sem client secret. Se o cliente mandarAuthorizationbásico ouclient_secretno token, o valor é ignorado.O teste automático deste repositório registra os três URIs, erra a senha, acerta a senha e chama as ferramentas. Isso não é o Grok Bot de verdade: falta uma URL pública e a sua conta do bot.
Fallback, se o bot falhar:
fetch failedantes da tela de login: a URL não está pública em HTTPS. Preview com proteção, localhost e VPN não servem para o bot, que roda na nuvem. O mesmo URL pode funcionar no Cursor IDE, porque lá o OAuth sai da sua máquina.Erro de
redirect_uri: copie o URI exato da mensagem paraOAUTH_EXTRA_REDIRECT_URISe faça um novo deploy. Não apague os três já embutidos.Não existe, no Grok Bot, um lugar seguro para token fixo ou header secreto. Não contorne com segredo no chat.
Enquanto o bot não conectar, dá para usar a mesma URL no
mcp.jsondo Cursor IDE. Isso não liga o bot.
Desenvolvimento
npm install
npm run dev # http://127.0.0.1:3333/mcp
npm test
npm run typecheck
npm run build # confere o bundle da Vercel, não publicanpm run dev sem OWNER_PASSWORD sobe o modo demo, mas o login responde que a senha não foi configurada. npm run demo:mcp usa a OWNER_PASSWORD que já estiver no ambiente; se não houver, define senha-demo-local-123 só naquele processo e não grava arquivo.
As ferramentas no modo demo e o mascaramento estão em test/. test/mcp-http.test.ts sobe o HTTP de verdade e fala o protocolo MCP.
Licença
MIT. Pluggy, Nubank, Open Finance e Cursor são marcas de seus donos. Este projeto não é afiliado a eles.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only access to your bank, investment, and crypto accounts: balances, transactions, holdings.
Connect your Player's Bank account to AI via Brazil's Open Finance: balances, statements, cards, inv
Read-only access to your Finch finances: accounts, transactions, spending, net worth, goals.
Connect your Bradesco account to AI via Brazil's Open Finance: balances, statements, cards, investme
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceConnects Brazilian banks (Itaú, Bradesco, Nubank, etc.) to AI agents, enabling natural language queries about expenses, statements, investments, and credit cards via regulated Open Finance.27MIT
- AlicenseNot gradedqualityDmaintenanceEnables reading C6 Bank account balances, statements, credit card bills, and investments via Open Finance Brasil. It is read-only and regulated by the Central Bank of Brazil.MIT
- AlicenseNot gradedqualityDmaintenanceConnects PagBank accounts to AI assistants via Open Finance Brasil, enabling natural language queries about balances, statements, credit card bills, and investments. Read-only and regulated by the Central Bank.MIT
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server exposing Brazilian Open Finance personal financial data from Pluggy to MCP clients, enabling listing of connections, accounts, transactions, credit card bills, investments, and loans without moving money.2MIT