Skip to main content
Glama
juansebashr

Money Lover MCP Server

by juansebashr

Servidor MCP de Money Lover

Implementación en Node.js de un servidor del Protocolo de Contexto de Modelo (MCP) que envuelve la API REST no oficial de Money Lover. El servidor expone 27 herramientas MCP que cubren autenticación, carteras, categorías, transacciones, eventos, deudas y configuración estática, permitiendo a los asistentes de IA o clientes compatibles con MCP consultar y gestionar datos de finanzas personales.

Características

  • Autenticación automática mediante variables de entorno EMAIL/PASSWORD: no se requiere pasar tokens para la mayoría de las herramientas.

  • 23 herramientas de lectura que cubren información de usuario, carteras, categorías, transacciones, eventos, deudas, iconos, proveedores y configuración estática.

  • 4 herramientas de escritura: crear, actualizar y eliminar transacciones, carteras y categorías.

  • Las respuestas grandes se truncan automáticamente para mantener el contexto del LLM manejable (configurable mediante el parámetro limit).

  • Servidor basado en Stdio compatible con Claude Code, Claude Desktop, Cursor y cualquier host MCP.

  • Caché de tokens por correo electrónico en ~/.moneylover-mcp/ con actualización automática en caso de errores de autenticación.

Related MCP server: YNAB Assistant

Requisitos previos

  • Node.js 22 o superior.

  • Credenciales de cuenta de Money Lover.

Instalación

npm install

Uso

Inicie el servidor MCP a través de stdio:

npm start

Configuración con alcance de proyecto (Claude Code)

Añada .mcp.json en la raíz del proyecto:

{
  "mcpServers": {
    "mcp-moneylover": {
      "command": "node",
      "args": ["/absolute/path/to/moneylover-mcp/src/server.js"],
      "env": {
        "EMAIL": "your@email.com",
        "PASSWORD": "your-password"
      }
    }
  }
}

Y actívelo en .claude/settings.json:

{ "enabledMcpjsonServers": ["mcp-moneylover"] }

Configuración global (Claude Desktop / Cursor)

{
  "mcpServers": {
    "mcp-moneylover": {
      "command": "npx",
      "args": ["@ferdhika31/moneylover-mcp@latest"],
      "env": {
        "EMAIL": "your@email.com",
        "PASSWORD": "your-password"
      }
    }
  }
}

Herramientas disponibles

Autenticación

Herramienta

Descripción

Argumentos

login

Recuperar un token JWT.

email, password

Usuario

Herramienta

Descripción

Argumentos

get_user_info

Perfil asociado a la sesión.

get_user_account

Dispositivos y sesiones activas.

get_user_profile

Datos de perfil extendidos.

Carteras

Herramienta

Descripción

Argumentos

get_wallets

Listar todas las carteras.

get_wallet_balance

Resumen de saldo de una cartera.

walletId

get_shared_wallets

Carteras compartidas con otros usuarios.

get_awaiting_shared_wallets

Invitaciones para compartir pendientes.

add_wallet

Crear una nueva cartera.

name, currencyId; opcional icon

edit_wallet

Actualizar nombre, icono o moneda de la cartera.

walletId, currencyId (requerido por la API); opcional name, icon

delete_wallet

Eliminar una cartera permanentemente.

walletId

Categorías

Herramienta

Descripción

Argumentos

get_categories

Categorías para una cartera específica.

walletId

get_all_categories

Todas las categorías en todas las carteras.

opcional limit (predeterminado 50)

add_category

Crear una categoría en una cartera.

walletId, name, icon (use get_icons para obtener nombres válidos, p. ej. icon_3), type (1=ingreso, 2=gasto)

edit_category

Renombrar una categoría o cambiar su icono.

categoryId, icon (requerido por la API incluso al renombrar); opcional name

delete_category

Eliminar una categoría.

categoryId

Transacciones

Herramienta

Descripción

Argumentos

get_transactions

Transacciones en un rango de fechas.

walletId, startDate, endDate (YYYY-MM-DD)

add_transaction

Crear una transacción. Los IDs de categoría de get_categories se resuelven a IDs globales automáticamente.

walletId, categoryId, amount, date; opcional note, with

edit_transaction

Actualizar una transacción. La API requiere la carga útil completa en cada edición: obtenga la transacción primero si necesita los valores actuales. categoryId se resuelve a global automáticamente.

transactionId, walletId, categoryId, amount, date; opcional note, with

delete_transaction

Eliminar una transacción.

transactionId

search_transactions

Búsqueda de forma libre con filtros opcionales.

opcional filters, limit (predeterminado 20)

get_debt_transactions

Transacciones marcadas como deudas/préstamos.

get_related_transactions

Transacciones relacionadas por lista de ID.

ids (array)

get_related_transactions_by_category

Transacciones relacionadas para una categoría.

categoryId

get_related_transactions_by_wallet

Transacciones relacionadas para una cartera.

walletId

get_transaction_search_config

Opciones de filtro de búsqueda disponibles.

opcional limit (predeterminado 20)

Estática y Configuración

Herramienta

Descripción

Argumentos

get_events

Objetivos de ahorro/eventos para una cartera.

walletId; opcional limit (predeterminado 50)

get_debts

Deudas abiertas en una cartera.

walletId

get_icons

Metadatos del paquete de iconos.

opcional pack (predeterminado "default")

get_linked_providers

Proveedores bancarios compatibles.

get_currencies

Catálogo de divisas.

opcional limit (predeterminado 100)

get_exchange_rates

Instantánea de tipos de cambio basada en USD.

get_other_config

Configuración de tiempo de ejecución miscelánea.

Ejemplos de uso de herramientas

Ejemplos de prompts, campos requeridos vs opcionales, advertencias y patrones comunes de varios pasos para cada herramienta: docs/examples.md.

Uso de la biblioteca

import { MoneyloverClient } from './src/moneyloverClient.js';

const token = await MoneyloverClient.getToken(email, password);
const client = new MoneyloverClient(token);

const wallets = await client.getWallets();
const txns = await client.getTransactions(walletId, '2026-01-01', '2026-04-30');
await client.addTransaction({ walletId, categoryId, amount: '50000', date: '2026-04-18' });
await client.editTransaction('txn-id', { amount: '60000', note: 'updated' });
await client.deleteTransaction('txn-id');

Pruebas

Pruebas unitarias

Pruebas unitarias simuladas: no se requieren llamadas a la API en vivo:

npm test

Pruebas de integración (mcp-tester)

mcp-tester es un marco de pruebas MCP basado en agentes ReAct. Inicia el servidor, dirige a un LLM para llamar a herramientas en respuesta a prompts en lenguaje natural y verifica que se llamaron las herramientas correctas con los argumentos correctos.

Instalar

pipx install --index-url https://pypi.artifacts.furycloud.io/simple/ mcp-tester

Configurar

tests/mcp-tester/mcps.json: apunte al servidor local con sus credenciales:

{
  "mcp-moneylover": {
    "command": "node",
    "args": ["/absolute/path/to/src/server.js"],
    "transport": "stdio",
    "env": {
      "EMAIL": "your@email.com",
      "PASSWORD": "your-password"
    }
  }
}

Ejecutar

mcp-tester run-tests \
  --mcps tests/mcp-tester/mcps.json \
  --model gpt-4o-mini \
  --concurrent-runs 3 \
  tests/mcp-tester/read-tools.yaml

Resultados

tests/mcp-tester/read-tools.yaml contiene 25 pruebas de integración que cubren cada herramienta de lectura:

total 25, success 25, failures 0

Decisiones clave que hacen que las pruebas sean estables:

  • Sin parámetro de token en herramientas de lectura: exponer un campo token opcional causaba que los LLMs inyectaran IDs de cartera en él. El servidor se autentica automáticamente mediante variables de entorno.

  • Truncamiento de respuesta: varios endpoints devuelven cientos de miles de registros de la base de datos compartida de MoneyLover. Las herramientas aceptan un parámetro limit (predeterminado: 20–100) para mantener el contexto del LLM bajo control.

  • Envoltura de diccionario: todas las respuestas de las herramientas devuelven un objeto JSON (nunca un array desnudo) para que pase la validación del marco MCP.

Pruebas de herramientas de escritura (mcp-tester)

Tres archivos YAML adicionales prueban el ciclo de vida CRUD completo para carteras, categorías y transacciones en tres fases secuenciales. Cada fase ejecuta los tres tipos de recursos simultáneamente.

Archivo

Fase

Pruebas

write-create.yaml

Crear

add_wallet, add_category, add_transaction

write-edit.yaml

Editar

edit_wallet, edit_category, edit_transaction

write-delete.yaml

Eliminar

delete_wallet, delete_category, delete_transaction

Ejecute las fases en orden: cada una depende de la anterior:

# Phase 1: Create
mcp-tester run-tests --mcps tests/mcp-tester/mcps.json --model gpt-4o-mini --concurrent-runs 3 tests/mcp-tester/write-create.yaml

# Phase 2: Edit (after Phase 1 passes)
mcp-tester run-tests --mcps tests/mcp-tester/mcps.json --model gpt-4o-mini --concurrent-runs 3 tests/mcp-tester/write-edit.yaml

# Phase 3: Delete (after Phase 2 passes)
mcp-tester run-tests --mcps tests/mcp-tester/mcps.json --model gpt-4o-mini --concurrent-runs 3 tests/mcp-tester/write-delete.yaml

Resultados en las tres fases:

Phase 1 (Create): total 3, success 3, failures 0
Phase 2 (Edit):   total 3, success 3, failures 0
Phase 3 (Delete): total 3, success 3, failures 0

Decisiones de diseño clave para las pruebas de herramientas de escritura:

  • Descubrimiento antes de la mutación: las pruebas de edición y eliminación instruyen al agente para que primero llame a una herramienta de lectura (get_wallets, get_categories, get_transactions) para localizar el objetivo por nombre, y luego llame a la herramienta de mutación. Esto refleja el comportamiento del agente en el mundo real donde los IDs no se conocen de antemano.

  • args: !any para aserciones de herramientas de escritura: el marco requiere una coincidencia exacta de argumentos. Las herramientas de escritura aceptan campos opcionales (icon, with, etc.) que el agente puede incluir a su discreción; !any verifica que la herramienta fue llamada y tuvo éxito sin fallar por extras inofensivos. Las aserciones de herramientas de lectura pueden usar coincidencias exactas de argumentos porque sus esquemas no tienen campos opcionales que el LLM añadiría espontáneamente.

  • Identificadores predecibles: los recursos de prueba usan nombres fijos (MCP-Test-Wallet, MCP-Test-Category) y una nota fija (MCP test transaction) para que el agente pueda localizarlos por nombre durante las fases de edición y eliminación sin necesidad de compartir estado entre ejecuciones de prueba.

  • Aserciones de edición de carga útil completa: edit_transaction es una operación de reemplazo completo; el prompt de prueba instruye al agente para que primero obtenga la transacción existente (get_transactions) y traslade todos los valores de campo actuales, cambiando solo la nota. Esto valida el razonamiento de varios pasos que requiere la descripción de la herramienta.

Notas de seguridad

  • Nunca confirme credenciales o tokens reales.

  • Los tokens en caché viven en ~/.moneylover-mcp/ restringidos al usuario actual.

  • Elimine ese directorio para revocar todas las sesiones en caché.

Install Server
A
license - permissive license
A
quality
D
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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 AI agents to interact with the WYGIWYH expense tracking API through 75 dynamically generated MCP tools. Supports comprehensive financial operations including transaction management, account handling, recurring expenses, and investment tracking.
    7
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with YNAB budgets through natural language. Supports managing accounts, categories, transactions, and budget months with 21 tools for comprehensive budget operations.
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Money Lover personal finance app through unofficial REST API. Supports authentication, wallet management, transaction querying, and creating new transactions for expense tracking.
    6
    20
    4
    ISC
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage personal finances through the Realbyte Money Manager mobile app, providing transaction management, asset tracking, credit card monitoring, and financial analytics with 18 comprehensive tools.
    18
    17
    11
    MIT

View all related MCP servers

Related MCP Connectors

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

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

  • Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.

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/juansebashr/moneylover-mcp'

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