Skip to main content
Glama
gabrielriguiti

finance-mcp

finance-mcp

Status: as 5 tools da Fase 1 estão implementadas, validadas e documentadas — ver "Definição de done" no plano de portfólio.

Demonstração: pergunta "o que tenho pra pagar essa semana?" no Claude Desktop, respondida via a tool contas_a_pagar do finance-mcp

O que é

Um servidor MCP (Model Context Protocol) de finanças pessoais, sobre SQLite, com dados fictícios (seed). Expõe 5 tools para consulta financeira via qualquer cliente MCP (ex.: Claude Desktop).

Related MCP server: Finanpy

Que problema resolve

Servir de referência pública, bem documentada em português, de como desenhar um servidor MCP — em particular, como desenhar assinaturas de tools que um modelo consegue usar sem ambiguidade. Servidores MCP bem documentados em português ainda são raros.

Como rodar

npm install
npm run seed   # cria finance.db com schema + dados fictícios
npm run dev    # inicia o servidor via stdio

Configuração no Claude Desktop: adicionar este servidor ao claude_desktop_config.json apontando para npm run dev ou para o build em dist/index.js (npm run build && npm start).

Decisões técnicas

  • TypeScript + SDK oficial do MCP: transporte stdio, é o caminho mais direto e mais documentado pelo protocolo.

  • SQLite (better-sqlite3): zero infraestrutura, API síncrona simples, suficiente para um dataset fictício de finanças pessoais.

  • Dados fictícios via seed script: repositório público não pode conter dados financeiros reais de ninguém.

Tools (Fase 1)

Tool

Entrada

Retorno

Status

get_saldo

conta (opcional)

saldo atual por conta

✅ implementada

gastos_por_categoria

período, conta (opcional)

totais agregados

✅ implementada

contas_a_pagar

janela de dias

pendências com vencimento

✅ implementada

buscar_transacoes

texto, período, faixa de valor

lista paginada

✅ implementada

resumo_fatura

cartão, mês de referência

fechamento, vencimento, total

✅ implementada

get_saldo aceita um parâmetro opcional conta (nome exato). Sem ele, retorna o saldo de todas as contas cadastradas. O saldo é saldo_inicial mais a soma das transações não pendentes da conta — transações pendentes (contas a pagar em aberto) não entram no cálculo.

gastos_por_categoria recebe data_inicio e data_fim (formato YYYY-MM-DD, ambos inclusive) e um conta opcional. Retorna o total gasto em cada categoria no período — só gastos efetivados (valor negativo, não pendentes) entram na soma; receitas e pendências ficam de fora. Gastos sem categoria aparecem agrupados como "Sem categoria".

contas_a_pagar recebe janela_dias (inteiro positivo, obrigatório) e retorna as transações pendentes (pendente = 1) com vencimento entre hoje e hoje + janela_dias dias, ambos inclusive, ordenadas por vencimento crescente. "Hoje" é a data real do sistema no momento da chamada — não um valor fixo. Pendências já vencidas (vencimento anterior a hoje) e transações já efetivadas não entram no resultado.

buscar_transacoes aceita texto (substring na descrição, case-insensitive), data_inicio/data_fim e valor_min/valor_max — todos opcionais e combináveis (E lógico). Sem nenhum filtro, retorna todas as transações, mais recentes primeiro. Resultado paginado via pagina (1-indexada, default 1) e tamanho_pagina (default 20, máximo 100); a resposta inclui o total de resultados antes da paginação, para o cliente saber se há mais páginas.

resumo_fatura recebe cartao (nome exato de uma conta do tipo cartão de crédito) e mes_referencia (formato YYYY-MM, o mês em que a fatura fecha — não necessariamente o mês das transações). Retorna fechamento, vencimento (pode cair no mês seguinte ao fechamento) e total — a soma dos gastos da conta entre o fechamento anterior (exclusive) e o fechamento do mês pedido (inclusive). Cada conta do tipo cartão tem dia_fechamento/dia_vencimento próprios, configurados no cadastro da conta.

O que ficou de fora (e por quê)

  • Autenticação multi-tenant — fora de escopo: este é um servidor de demonstração de uso único, não um produto multiusuário.

  • Deploy — fora de escopo: o objetivo é rodar localmente via stdio.

  • Integração com API financeira real — fora de escopo: dados são fictícios de propósito, para poder ser público.

  • Escrita de dados (criar/editar transações) — fora de escopo: as 5 tools são somente leitura.

Itens que surgirem além destes vão para o backlog.md do portfólio, não para este projeto.


Licença

MIT — ver LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to track personal expenses through natural language interactions with comprehensive category support and financial summaries. Provides both local and remote MCP server options with SQLite storage for fast expense management operations.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for personal finance management that connects a SQLite database to any MCP client, allowing users to register, query, and analyze financial transactions through natural language.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Exposes personal-finance tools like accounts, transactions, spending analysis, budgets, bills, reminders, portfolio, and goals via MCP, enabling any MCP client to query financial data.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    MCP server for personal finance via Open Finance, consolidating accounts and cards and answering spending questions with aggregated numbers. Provides tools for category spending, recurring subscriptions, budgets, card bills, and installment forecasts, with data stored locally in an encrypted SQLite database.
    1
    -