Skip to main content
Glama
anikam13

finledger

by anikam13

FinLedger

Un libro de contabilidad financiera local con tres superficies de lectura, además de un servidor MCP para que un agente pueda consultarlas:

  • expenses: cuentas de gastos, conciliadas con reembolsos entre pares

  • investments: saldos de corretaje, tenencias y actividad

  • income: nómina (bruto, retenciones, neto)

Los gastos y las inversiones comparten un almacén y nada más. Una cuenta lleva un domain explícito, y cada consulta de gastos se une a través de él, de modo que una compra de acciones no puede llegar al emparejador de reembolsos.

El emparejador se basa en reglas. Se abstiene cuando no está seguro. Un humano o agente confirma antes de que un emparejamiento reduzca el gasto neto.

Las transacciones reales, los recibos de nómina y las claves de API permanecen en tu máquina (~/.finledger/ledger.db, .env). Este repositorio incluye solo código y un conjunto de evaluación sintético.

Instalación

Python 3.10+. El libro, el emparejador, el bucle MCP y el arnés de evaluación son de la biblioteca estándar. pypdf es opcional y solo se necesita para importar recibos de nómina en PDF.

pip install -e .

Related MCP server: MCP Agent - AI Expense Tracker

Servidor MCP

python3 -m finledger.mcp_server --db ~/.finledger/ledger.db

18 herramientas, con espacios de nombres expenses_*, investments_* e income_*, además de savings_rate, accounts, sync y reconcile.

Ejemplo de Cursor (~/.cursor/mcp.json):

{
  "mcpServers": {
    "finledger": {
      "command": "python3",
      "args": ["-m", "finledger.mcp_server"]
    }
  }
}

La ruta predeterminada del libro es ~/.finledger/ledger.db.

CLI

finledger sync
finledger reconcile
finledger review
finledger serve

finledger serve abre un escritorio local en :8770. En macOS también puedes hacer doble clic en scripts/Expense Desk.command.

Fuentes en vivo opcionales (pon las credenciales en .env, nunca lo confirmes):

Fuente

Cómo

shim.finance (tarjeta + Venmo)

SHIM_API_KEY

SnapTrade (cuenta corriente + corretajes)

SNAPTRADE_CLIENT_ID, SNAPTRADE_CONSUMER_KEY, SNAPTRADE_USER_ID, SNAPTRADE_RECOVER

Retroceso de CSV de tarjeta

finledger sync --card-csv PATH --card-account-id ID

Recibo de nómina en PDF

python3 scripts/paystub_import.py statement.pdf (necesita pypdf)

Copia .env.example a .env.

Evaluación pública

El conjunto dorado publicado es sintético. Se genera con scripts/make_sample_data.py y vive en data-sample/. Cada fila de transacción está marcada como synthetic: true. Es un conjunto de cobertura para los comportamientos del emparejador (emparejamiento limpio, fan-in, agrupación, padre de salida entre pares, créditos de comerciante, notas débiles, gemelos de fuentes cruzadas). No son datos reales anonimizados.

python3 scripts/eval_public.py
# equivalent:
python3 -m reconcile.eval --matcher rules_v0

Números que puedes reproducir desde este repositorio

Medido en data-sample/ con rules_v0 (ventana ±90 días, umbral de autoemparejamiento 0.75):

Métrica

Valor

ejemplos evaluables

22 (2 etiquetas unsure omitidas)

precisión de conjunto exacto

72.7% (16/22)

P / R / F1 de borde

81.2% / 61.9% / 70.3%

precisión de autoemparejamiento

85.7% (n=14; 12 tp, 2 fp)

recall de autoemparejamiento de emparejamientos dorados

66.7%

Vuelve a ejecutar python3 scripts/eval_public.py para actualizar estos números. Dos falsos positivos restantes en la muestra son debilidades reales del emparejador, incluida la regla de aumento de recall por emojis que se excede.

Lo que no está en este repositorio

Un conjunto dorado privado de aproximadamente 92 ejemplos etiquetados se usó durante el desarrollo. Nombra personas reales y compras reales y no se publica. No trates los números de la muestra como una reproducción de ese conjunto. Corpus diferente, tamaño diferente, puntuaciones diferentes.

Este repositorio no afirma una precisión de autoemparejamiento del 100%.

Emparejador

Consulta reconcile/README.md. Versión corta:

Nombre

Comportamiento

baseline

Cargo más cercano dentro de ±$1 y una ventana de fechas. Vacío si no hay ninguno.

rules_v0

Ajuste de importe + fecha + solapamiento de nota/comerciante, con vetos. Autoemparejamiento si confianza >= 0.75; si no, se abstiene.

rules_v0_llm

Igual que rules_v0, luego llamada opcional a Groq sobre el residuo de revisión (GROQ_API_KEY).

Etiqueta el corpus de muestra con python3 labeling/app.py (por defecto usa data-sample/).

Licencia

MIT

A
license - permissive license
B
quality
C
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
Release cycle
0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with local Beancount accounting ledgers through structured tools for viewing accounts, balances, and transactions, as well as inserting/removing transactions and answering natural-language questions via BeanQuery. Provides deterministic, validated, and auditable financial data operations with offline-first functionality.
    1
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to query and analyze local personal finance data from Tusk Ledger through tools for transactions, accounts, investments, and more, without sending data to the internet.
    13
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides tools for querying and writing finance records in a Notion-backed household finance workspace, enabling management of budgets, expenses, savings, and debt through natural language.
    MIT

View all related MCP servers

Related MCP Connectors

  • Connect AI agents to bank accounts, transactions, balances, and investments.

  • Log, query, and edit expenses, budgets, and accounts in Ledgy from any MCP-compatible AI assistant.

  • Personal, family and business books over fiat and crypto. Reads and records; it cannot pay.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/anikam13/finledger'

If you have feedback or need assistance with the MCP directory API, please join our Discord server