Skip to main content
Glama
juansebashr

Money Lover MCP Server

by juansebashr

Money Lover MCP Server

Реализация сервера Model Context Protocol (MCP) на Node.js, который является оберткой для неофициального REST API Money Lover. Сервер предоставляет 27 инструментов MCP, охватывающих аутентификацию, кошельки, категории, транзакции, события, долги и статическую конфигурацию, позволяя ИИ-ассистентам или MCP-совместимым клиентам запрашивать данные о личных финансах и управлять ими.

Возможности

  • Автоматическая аутентификация через переменные окружения EMAIL/PASSWORD — для большинства инструментов передача токена не требуется.

  • 23 инструмента для чтения, охватывающих информацию о пользователе, кошельки, категории, транзакции, события, долги, иконки, провайдеров и статическую конфигурацию.

  • 4 инструмента для записи: создание, обновление и удаление транзакций, кошельков и категорий.

  • Большие ответы автоматически обрезаются для поддержания управляемого контекста LLM (настраивается через параметр limit).

  • Сервер на базе Stdio, совместимый с Claude Code, Claude Desktop, Cursor и любым хостом MCP.

  • Кэширование токенов для каждого email в ~/.moneylover-mcp/ с автоматическим обновлением при ошибках аутентификации.

Related MCP server: YNAB Assistant

Предварительные требования

  • Node.js 22 или новее.

  • Учетные данные аккаунта Money Lover.

Установка

npm install

Использование

Запустите MCP-сервер через stdio:

npm start

Конфигурация на уровне проекта (Claude Code)

Добавьте .mcp.json в корневой каталог проекта:

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

И включите его в .claude/settings.json:

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

Глобальная конфигурация (Claude Desktop / Cursor)

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

Доступные инструменты

Аутентификация

Инструмент

Описание

Аргументы

login

Получение JWT-токена.

email, password

Пользователь

Инструмент

Описание

Аргументы

get_user_info

Профиль, связанный с сессией.

get_user_account

Устройства и активные сессии.

get_user_profile

Расширенные данные профиля.

Кошельки

Инструмент

Описание

Аргументы

get_wallets

Список всех кошельков.

get_wallet_balance

Сводка баланса кошелька.

walletId

get_shared_wallets

Кошельки, которыми поделились с другими пользователями.

get_awaiting_shared_wallets

Ожидающие приглашения на совместный доступ.

add_wallet

Создание нового кошелька.

name, currencyId; опционально icon

edit_wallet

Обновление названия, иконки или валюты кошелька.

walletId, currencyId (требуется API); опционально name, icon

delete_wallet

Безвозвратное удаление кошелька.

walletId

Категории

Инструмент

Описание

Аргументы

get_categories

Категории для конкретного кошелька.

walletId

get_all_categories

Все категории во всех кошельках.

опционально limit (по умолчанию 50)

add_category

Создание категории в кошельке.

walletId, name, icon (используйте get_icons для получения допустимых имен, например icon_3), type (1=доход, 2=расход)

edit_category

Переименование категории или изменение ее иконки.

categoryId, icon (требуется API, даже если меняется только название); опционально name

delete_category

Удаление категории.

categoryId

Транзакции

Инструмент

Описание

Аргументы

get_transactions

Транзакции в диапазоне дат.

walletId, startDate, endDate (ГГГГ-ММ-ДД)

add_transaction

Создание транзакции. ID категорий из get_categories автоматически преобразуются в глобальные ID.

walletId, categoryId, amount, date; опционально note, with

edit_transaction

Обновление транзакции. API требует полную полезную нагрузку при каждом редактировании — сначала получите транзакцию, если вам нужны текущие значения. categoryId автоматически преобразуется в глобальный.

transactionId, walletId, categoryId, amount, date; опционально note, with

delete_transaction

Удаление транзакции.

transactionId

search_transactions

Поиск в свободной форме с опциональными фильтрами.

опционально filters, limit (по умолчанию 20)

get_debt_transactions

Транзакции, помеченные как долги/займы.

get_related_transactions

Связанные транзакции по списку ID.

ids (массив)

get_related_transactions_by_category

Связанные транзакции для категории.

categoryId

get_related_transactions_by_wallet

Связанные транзакции для кошелька.

walletId

get_transaction_search_config

Доступные параметры фильтра поиска.

опционально limit (по умолчанию 20)

Статика и конфигурация

Инструмент

Описание

Аргументы

get_events

Цели накопления/события для кошелька.

walletId; опционально limit (по умолчанию 50)

get_debts

Открытые долги в кошельке.

walletId

get_icons

Метаданные набора иконок.

опционально pack (по умолчанию "default")

get_linked_providers

Поддерживаемые банковские провайдеры.

get_currencies

Каталог валют.

опционально limit (по умолчанию 100)

get_exchange_rates

Снимок обменных курсов на базе USD.

get_other_config

Прочая конфигурация среды выполнения.

Примеры использования инструментов

Примеры промптов, обязательные и опциональные поля, нюансы и распространенные многошаговые шаблоны для каждого инструмента: docs/examples.md.

Использование библиотеки

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');

Тестирование

Модульные тесты

Модульные тесты с использованием заглушек — вызовы реального API не требуются:

npm test

Интеграционные тесты (mcp-tester)

mcp-tester — это среда тестирования MCP на основе ReAct-агентов. Она запускает сервер, заставляет LLM вызывать инструменты в ответ на промпты на естественном языке и проверяет, что правильные инструменты были вызваны с правильными аргументами.

Установка

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

Конфигурация

tests/mcp-tester/mcps.json — укажите локальный сервер с вашими учетными данными:

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

Запуск

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

Результаты

tests/mcp-tester/read-tools.yaml содержит 25 интеграционных тестов, охватывающих каждый инструмент чтения:

total 25, success 25, failures 0

Ключевые решения, обеспечивающие стабильность тестов:

  • Отсутствие параметра токена в инструментах чтения — предоставление опционального поля token приводило к тому, что LLM вставляли в него ID кошельков. Сервер аутентифицируется автоматически через переменные окружения.

  • Обрезание ответов — некоторые эндпоинты возвращают сотни тысяч записей из общей базы данных MoneyLover. Инструменты принимают параметр limit (по умолчанию: 20–100), чтобы держать контекст LLM под контролем.

  • Обертка в словарь — все ответы инструментов возвращают JSON-объект (никогда не «голый» массив), чтобы проходить валидацию фреймворка MCP.

Тесты инструментов записи (mcp-tester)

Три дополнительных YAML-файла тестируют полный жизненный цикл CRUD для кошельков, категорий и транзакций в три последовательных этапа. Каждый этап запускает все три типа ресурсов одновременно.

Файл

Этап

Тесты

write-create.yaml

Создание

add_wallet, add_category, add_transaction

write-edit.yaml

Редактирование

edit_wallet, edit_category, edit_transaction

write-delete.yaml

Удаление

delete_wallet, delete_category, delete_transaction

Запускайте этапы по порядку — каждый зависит от предыдущего:

# 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

Результаты по всем трем этапам:

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

Ключевые проектные решения для тестов инструментов записи:

  • Обнаружение перед мутацией — тесты редактирования и удаления инструктируют агента сначала вызвать инструмент чтения (get_wallets, get_categories, get_transactions), чтобы найти цель по имени, а затем вызвать инструмент мутации. Это отражает поведение агента в реальных условиях, когда ID заранее неизвестны.

  • args: !any для утверждений инструментов записи — фреймворк требует точного соответствия аргументов. Инструменты записи принимают опциональные поля (icon, with и т.д.), которые агент может включать по своему усмотрению; !any проверяет, что инструмент был вызван и успешно выполнен, не выдавая ошибку из-за безвредных дополнительных полей. Утверждения инструментов чтения могут использовать точное соответствие аргументов, так как их схемы не имеют опциональных полей, которые LLM могла бы добавить спонтанно.

  • Предсказуемые идентификаторы — тестовые ресурсы используют фиксированные имена (MCP-Test-Wallet, MCP-Test-Category) и фиксированную заметку (MCP test transaction), чтобы агент мог найти их по имени во время этапов редактирования и удаления без необходимости обмениваться состоянием между запусками тестов.

  • Утверждения полной полезной нагрузки при редактированииedit_transaction — это операция полной замены; тестовый промпт инструктирует агента сначала получить существующую транзакцию (get_transactions) и перенести все текущие значения полей, изменив только заметку. Это подтверждает многошаговое рассуждение, требуемое описанием инструмента.

Заметки по безопасности

  • Никогда не коммитьте реальные учетные данные или токены.

  • Кэшированные токены хранятся в ~/.moneylover-mcp/ с доступом только для текущего пользователя.

  • Удалите эту директорию, чтобы отозвать все кэшированные сессии.

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