Skip to main content
Glama
Maybe Finance MCP Server

Maybe Finance MCP Server

by matvei77

Maybe Finance MCP Server

A Model Context Protocol (MCP) server that connects Claude Desktop to your self-hosted Maybe Finance instance, enabling natural language financial queries, transaction management, and advanced analytics.

πŸš€ Features

Complete Financial Management

  • Account Management: Query account balances and information

  • Transaction CRUD: Create, read, update, and delete transactions

  • CSV Import: Bulk import transactions from bank statements

  • Smart Search: Find transactions with advanced filtering

Intelligent Categorization

  • Auto-Categorization: AI-powered transaction categorization with 17 built-in rules

  • Custom Categories: Create and manage your own categories

  • Special Categories:

    • Required Purchases (groceries, utilities, etc.)

    • Discretionary Spending

    • Subscriptions

    • Spending but Assets (investments, high-value items)

Advanced Analytics

  • Cash Flow Analysis: Track inflows/outflows with insights

  • Rolling Metrics: Analyze trends over custom time periods

  • Forecasting: Predict future cash flow with confidence intervals

  • Spending Breakdowns: Detailed category-based analytics

Related MCP server: YNAB MCP Server

Prerequisites

  • Node.js 20 or later

  • Maybe Finance API key (from your self-hosted instance)

  • Claude Desktop installed on your computer

Installation

  1. Clone this repository:

git clone https://github.com/yourusername/maybe-finance-mcp.git
cd maybe-finance-mcp
  1. Install dependencies:

npm install
  1. Set up environment variables:

# Create a .env file
cp .env.example .env

# Edit .env with your API credentials
API_BASE_URL=https://your-maybe-instance.com/api/v1
API_KEY=your-api-key-here
  1. Build the project:

npm run build

Configuration

Claude Desktop Setup

  1. Open Claude Desktop settings

  2. Navigate to Developer β†’ Model Context Protocol

  3. Add the MCP server configuration:

{
  "mcpServers": {
    "maybe-finance": {
      "command": "node",
      "args": ["C:\\path\\to\\maybe-finance-mcp\\dist\\index.js"],
      "env": {
        "API_BASE_URL": "https://your-maybe-instance.com/api/v1",
        "API_KEY": "your-api-key-here"
      }
    }
  }
}

API Configuration

The MCP server connects to your Maybe Finance instance via its REST API:

# Your Maybe Finance API endpoint
API_BASE_URL=https://your-maybe-instance.com/api/v1

# Your API key (get this from your Maybe Finance settings)
API_KEY=your-api-key-here

The API key should be kept secure and never committed to version control.

πŸ“‹ Complete Tool Reference

Account Management Tools

get_accounts

List all accounts with balances and net worth calculation.

  • Parameters:

    • includeBalance (boolean): Include current balance (default: true)

    • groupByType (boolean): Group accounts by type (default: false)

get_account_balance

Get detailed balance information for a specific account.

  • Parameters:

    • accountId (string, required): Account ID

Transaction Management Tools

get_transactions

Retrieve transactions with powerful filtering options.

  • Parameters:

    • accountId (string): Filter by account

    • startDate (string): Start date (ISO format)

    • endDate (string): End date (ISO format)

    • category (string): Filter by category

    • limit (number): Maximum results (default: 100)

    • offset (number): Pagination offset

search_transactions

Search transactions by text query.

  • Parameters:

    • query (string, required): Search query

    • accountId (string): Limit to specific account

    • limit (number): Maximum results

create_transaction

Create a new transaction.

  • Parameters:

    • accountId (string, required): Account ID

    • amount (string, required): Amount (negative for expenses)

    • date (string, required): Transaction date

    • name (string, required): Transaction name/description

    • category (string): Category name

    • merchant (string): Merchant name

    • tags (array): Transaction tags

    • notes (string): Additional notes

update_transaction

Update an existing transaction.

  • Parameters:

    • transactionId (string, required): Transaction ID

    • category (string): New category

    • excluded (boolean): Exclude from reports

    • name (string): New name

    • amount (string): New amount

    • date (string): New date

    • merchant (string): New merchant

    • notes (string): New notes

    • tags (array): New tags

categorize_transaction

Categorize a single transaction.

  • Parameters:

    • transactionId (string, required): Transaction ID

    • category (string, required): Category name

bulk_categorize

Categorize multiple transactions at once.

  • Parameters:

    • transactionIds (array, required): Array of transaction IDs

    • category (string, required): Category name

Cash Flow Analysis Tools

get_cash_flow

Analyze cash flow for a specific period.

  • Parameters:

    • days (number): Number of days to analyze (default: 30)

    • accountIds (array): Specific accounts to include

    • includeForecasted (boolean): Include forecasted data

get_rolling_cash_flow

Get rolling cash flow metrics over time.

  • Parameters:

    • period (string): Period type (week/month/quarter)

    • periods (number): Number of periods (default: 6)

    • accountIds (array): Specific accounts to include

forecast_cash_flow

Predict future cash flow with confidence intervals.

  • Parameters:

    • days (number, required): Days to forecast

    • includeSeasonality (boolean): Consider seasonal patterns

    • confidenceLevel (number): Confidence level (0.8-0.99)

Category Management Tools

get_categories

List all available categories including special categories.

  • Parameters: None

create_category

Create a custom category.

  • Parameters:

    • name (string, required): Category name

    • parentCategory (string): Parent category for hierarchy

    • color (string): Hex color code

    • icon (string): Icon identifier

get_spending_breakdown

Analyze spending by category.

  • Parameters:

    • days (number): Analysis period (default: 30)

    • includeAssets (boolean): Include asset purchases

Import/Export Tools

import_csv

Import transactions from CSV file.

  • Parameters:

    • accountId (string, required): Target account ID

    • csvContent (string, required): CSV content

    • encoding (string): base64 or utf8 (default: utf8)

    • fieldMapping (object): Custom field mapping

    • dateFormat (string): Date format in CSV

    • skipDuplicates (boolean): Skip duplicate detection

    • autoCategarize (boolean): Auto-categorize imports

    • dryRun (boolean): Preview without importing

analyze_csv

Analyze CSV structure before import.

  • Parameters:

    • csvContent (string, required): CSV content

    • encoding (string): base64 or utf8

    • sampleRows (number): Rows to analyze (default: 5)

Automation Tools

auto_categorize_all

Automatically categorize all uncategorized transactions.

  • Parameters:

    • dryRun (boolean): Preview changes (default: true)

    • startDate (string): Process from date

    • overwriteExisting (boolean): Re-categorize existing

get_categorization_rules

View all active categorization rules.

  • Parameters: None

πŸ’‘ Example Usage in Claude

Basic Queries

"What's my current account balance?"
"Show me all transactions from last month"
"How much did I spend on groceries this week?"

Transaction Management

"Create a transaction for $50 coffee shop expense today"
"Update the Netflix transaction to the Subscriptions category"
"Import my bank statement CSV file"

Analytics & Insights

"Show me my cash flow for the last 30 days"
"What are my biggest expense categories?"
"Forecast my cash flow for the next 2 weeks"
"Give me a spending breakdown by category"

Automation

"Auto-categorize all my transactions"
"Show me the categorization rules"
"Bulk categorize all coffee transactions as Dining"

πŸ”§ Development

Run in Development Mode

npm run dev

Run Tests

npm test

Lint Code

npm run lint

πŸ”’ Security Notes

  • The MCP server runs locally on your machine

  • API credentials are stored in your local environment

  • All communication with Maybe Finance is over HTTPS

  • The API key provides scoped access to your financial data

  • No data is sent to third-party servers

  • Sensitive data is never logged or exposed

πŸ› Troubleshooting

Connection Issues

  • Verify your API endpoint URL is correct

  • Check that your API key is valid

  • Ensure your Maybe Finance instance is accessible

  • Check firewall/proxy settings

Authentication Errors

  • Regenerate your API key in Maybe Finance settings

  • Check the API key is correctly set in environment variables

  • Verify the API key has necessary permissions

Tool Errors

  • Ensure account IDs are valid UUIDs

  • Check date formats (ISO 8601 preferred)

  • Verify category names match exactly

  • Check transaction amounts are properly formatted

πŸ“ License

MIT

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ™ Acknowledgments

Available Tools

18 tools
analyze_csvB

Analyze CSV structure before import

Inputs: csvContent (required).

auto_categorize_allB

Auto-categorize all uncategorized transactions

Inputs: dryRun, endDate, accountId, startDate.

bulk_categorizeA

Categorize multiple transactions at once

Inputs: category (required), transactionIds (required).

categorize_transactionC

Quick categorization of a transaction

Inputs: category (required), transactionId (required).

create_categoryB

Create a new category

Inputs: name (required), icon, color, parentCategory.

create_transactionC

Create a new transaction

Inputs: date (required), name (required), amount (required), accountId (required), +4 more.

forecast_cash_flowC

Forecast future cash flow based on historical data

Inputs: days (required), accountId, includeRecurring.

get_account_balanceA

Get current balance for a specific account

Inputs: accountId (required).

get_accountsB

Get list of all accounts with their balances

Inputs: groupByType, includeBalance.

get_cash_flowC

Get cash flow analysis for a period

Inputs: endDate, accountId, frequency, startDate.

get_categoriesB

Get all available categories

Inputs: includeUsageStats.

get_categorization_rulesB

Get current categorization rules and patterns

Inputs: no named parameters.

get_rolling_cash_flowC

Get rolling cash flow analysis

Inputs: period, accountId.

get_spending_breakdownC

Get spending breakdown by category for a time period

Inputs: endDate, groupBy, accountId, startDate, +2 more.

get_transactionsC

Get transactions with various filters

Inputs: tags, limit, offset, endDate, +8 more.

import_csvB

Import transactions from CSV file

Inputs: accountId (required), csvContent (required), dateColumn, amountColumn, +3 more.

search_transactionsC

Search transactions by text query

Inputs: query (required), tags, limit, offset, +3 more.

update_transactionC

Update an existing transaction

Inputs: transactionId (required), tags, notes, category, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 18 tools

    Disambiguation4/5

    Most tools target distinct resources and actions, but get_transactions and search_transactions overlap in purpose, potentially causing misselection. Other pairs like get_cash_flow and get_rolling_cash_flow are distinct enough in scope.

    Naming Consistency4/5

    Tool names mostly follow a verb_noun snake_case pattern (e.g., get_accounts, create_transaction). Minor deviations like bulk_categorize and auto_categorize_all break the strict pattern but remain readable and predictable.

    Tool Count4/5

    With 18 tools, the server is slightly above the ideal 3-15 range but still within a reasonable scope for a finance manager. Each tool addresses a specific need, though the count feels a bit heavy.

    Completeness3/5

    The server covers transaction management, categorization, cash flow, and CSV import well, but lacks account CRUD (create/update/delete) and category update/delete operations. These gaps are notable for a finance domain but not severe enough to break core workflows.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables querying personal finance data including accounts, transactions, spending, holdings, net worth, and budgets from your self-hosted OpenCoffer instance. Supports natural language queries through any MCP-compatible client.
      19
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI assistants to interact with YNAB budgets, performing read-only queries by default and optional write operations like creating transactions and managing categories through natural language.
      45
      527 npm
      46
      MIT
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables personal finance management through natural language, including tracking income/expenses, categories, loans, subscriptions, budgets, and AI-powered insights, all backed by a local SQLite database.
      1
      -
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI assistants and MCP clients to access and manage LunchMoney personal finance data, including transactions, budgets, accounts, categories, tags, recurring items, and crypto holdings through natural language.
      59
      939 npm
      MIT