Cadê Meu Dinheiro
Cadê Meu Dinheiro
Servidor MCP que sincroniza os dados bancários da sua conexão Meu Pluggy para um Postgres próprio e responde, dentro do Claude Desktop/Code, à pergunta que importa: "para onde foi meu dinheiro esse mês?". Além do resumo de gastos por categoria com comparação mês a mês, dá para definir orçamentos por categoria, buscar transações e criar regras permanentes de categorização que são reaplicadas ao histórico.
São três camadas em um processo Node: o sync (Pluggy → Postgres, via cron de 6 em 6 horas, com janela de sobreposição de 7 dias), o motor de insights (funções puras sobre os dados já persistidos) e a interface MCP (Streamable HTTP protegido por bearer token).
O fluxo de branches, o padrão de commit e o que nunca entra no repositório estão em CONTRIBUTING.md.
Pré-requisitos
Conta no Meu Pluggy com os bancos e cartões já conectados.
Credenciais de API (
clientIdeclientSecret) em dashboard.pluggy.ai.Os item IDs de cada conexão bancária, copiados do dashboard — é o que o sync percorre.
Node 22+ e Docker.
Setup local
cp .env.example .env # preencha as credenciais e o token
docker compose up -d postgres
npm install
npm run devO MCP_BEARER_TOKEN deve ser gerado com openssl rand -hex 32.
Nenhuma contraparte vem cadastrada. O padrão que identifica você mesma é o seu
nome, e nome de ninguém entra em repositório — cadastre o seu na primeira conversa
com o Claude: "marca PIX pra FULANO DE TAL como conta minha" dispara
set_internal_counterparty e reclassifica o histórico inteiro.
Se alguma porta do host já estiver ocupada por outro projeto, todas são
configuráveis no .env: POSTGRES_HOST_PORT, MCP_HOST_PORT, N8N_HOST_PORT,
WAHA_HOST_PORT.
Testes
Os testes de repositório rodam contra o banco cade_test do compose, então o Postgres precisa estar de pé:
docker compose up -d postgres
npm testDeploy na VPS
docker compose up -d --buildSobe o Postgres, o servidor MCP (porta 3333), o n8n e o WAHA. Confira com curl http://localhost:3333/health e docker compose logs mcp-server.
Conectando ao Claude
Claude Code:
claude mcp add --transport http cade-meu-dinheiro http://SEU_IP:3333/mcp --header "Authorization: Bearer SEU_TOKEN"Claude Desktop: Settings → Connectors → Add custom connector, com a mesma URL e o mesmo header Authorization.
Depois disso, pergunte "para onde foi meu dinheiro esse mês?" — o Claude chama get_spending_summary e responde com os seus números.
Tools disponíveis
Tool | O que faz |
| Gastos do mês por categoria, delta vs. mês anterior e top estabelecimentos |
| Orçamento vs. realizado, com projeção linear de fim de mês |
| Busca por texto, conta, categoria e período; devolve |
| Soma, contagem e média de gastos, com agrupamento por mês, categoria ou conta |
| Um |
| Define o limite mensal de uma categoria |
| Cria regra de categorização e reaplica ao histórico |
| Marca um padrão como conta sua: deixa de contar como gasto ou renda |
| Desfaz a marcação acima e reclassifica o histórico |
| Marca um padrão de entrada como renda de verdade |
| Desfaz a marcação acima e reclassifica o histórico |
Toda resposta vem com um bloco de frescor dizendo até quando cada conta tem dado — número nenhum aparece sem data.
Gasto não é sinal negativo, é kind: cada transação é classificada em consumo, transferencia_terceiro, movimentacao_interna, credito_tomado, fatura_sem_detalhe, renda, entrada_nao_renda ou nao_classificado. Contam como gasto apenas consumo, transferencia_terceiro, credito_tomado e fatura_sem_detalhe — então PIX entre contas suas e pagamento de fatura de cartão que já reporta as compras param de ser contados como dinheiro gasto.
Há também o prompt financial-coach, que carrega a persona de coach financeiro já com o seu contexto de orçamento do mês.
Segurança
Token forte e único (
openssl rand -hex 32); trate-o como senha do seu extrato bancário.Nunca commite o
.env— ele está no.gitignoree deve continuar lá.Screenshots e gravações públicas só com dados de sandbox da Pluggy, nunca com os seus.
n8n e WAHA (Fase 2)
Os dois já sobem no compose para você explorar desde já: n8n em http://localhost:5678 e WAHA em http://localhost:3000. As portas ficam presas a 127.0.0.1, então na VPS o acesso é por túnel SSH:
ssh -L 5678:localhost:5678 usuario@vpsApple Silicon: a tag padrão do WAHA só tem build amd64. No .env, use
WAHA_IMAGE=devlikeapro/waha:noweb-arm (engine NOWEB, sem Chromium). Fixe também
WAHA_API_KEY e WAHA_SWAGGER_PASSWORD, senão o WAHA sorteia credenciais novas a
cada boot e o n8n perde o acesso.
Os workflows de alerta por WhatsApp chegam na Fase 2.