Skip to main content
Glama
whitebirchio

Monarch Money MCP Server

by whitebirchio
README.md
# Monarch Money MCP Server

A Model Context Protocol (MCP) server that provides seamless integration between [Monarch Money](https://monarchmoney.com) and Claude Desktop. This server enables you to query your financial data, analyze spending patterns, and get personalized financial insights directly through conversational AI.

## šŸš€ Features

- **šŸ¦ Account Management**: View all accounts with real-time balances and details
- **šŸ’³ Transaction Analysis**: Search and filter transactions with advanced criteria
- **šŸ“Š Spending Insights**: Analyze spending patterns by category, merchant, and time period
- **šŸ’° Budget Tracking**: Monitor budget performance with planned vs. actual spending
- **šŸ“ˆ Net Worth Calculation**: Track your total net worth and asset allocation
- **šŸ“… Monthly Reports**: Generate comprehensive monthly financial summaries
- **šŸ·ļø Category Management**: Explore and analyze transaction categories
- **šŸ“‰ Balance History**: View account balance trends over time
- **šŸ” Secure Authentication**: Token-based authentication with MFA support

## šŸ›”ļø Security & Privacy

- **Token-based authentication** - No need to store credentials long-term
- **Environment variable protection** - Credentials never hardcoded
- **Multi-factor authentication support** - Enhanced security for your financial data
- **GraphQL API integration** - Secure communication with Monarch Money
- **Local processing** - All analysis happens on your machine

## šŸ“‹ Prerequisites

Before you begin, ensure you have:

- **Node.js 18+** installed on your system
- **Claude Desktop** application installed
- **Monarch Money account** with valid credentials
- **npm** or **yarn** package manager

## šŸ”§ Installation

### 1. Clone the Repository

```bash
git clone https://github.com/whitebirchio/monarch-mcp.git
cd monarch-mcp
```

### 2. Install Dependencies

```bash
npm install
```

### 3. Authentication Setup

**šŸ”‘ Option A: Token Authentication (Recommended)**

1. Get your authentication token:

   ```bash
   npm run login
   ```

2. Follow the prompts to enter your Monarch Money credentials and MFA code (if required)

3. Copy the generated token for use in Claude Desktop configuration

**šŸ“§ Option B: Direct Credentials**

Create a `.env` file with your credentials:

```bash
MONARCH_TOKEN=your-auth-token-here
```

### 4. Build the Project

```bash
npm run build
```

## āš™ļø Claude Desktop Configuration

### macOS Configuration

Edit your Claude Desktop config file:

```bash
~/Library/Application Support/Claude/claude_desktop_config.json
```

Add this configuration:

```json
{
  "mcpServers": {
    "monarch-money": {
      "command": "node",
      "args": ["/absolute/path/to/monarch-mcp/dist/index.js"],
      "env": {
        "MONARCH_TOKEN": "your-auth-token-here"
      }
    }
  }
}
```

### Windows Configuration

Edit your Claude Desktop config file:

```
%APPDATA%/Claude/claude_desktop_config.json
```

Use the same JSON structure with Windows-style paths:

```json
{
  "mcpServers": {
    "monarch-money": {
      "command": "node",
      "args": ["C:\\path\\to\\monarch-mcp\\dist\\index.js"],
      "env": {
        "MONARCH_TOKEN": "your-auth-token-here"
      }
    }
  }
}
```

**šŸ’” Important**: Use the absolute path to your installation directory.

## šŸŽÆ Usage Examples

After configuring Claude Desktop and restarting the application, you can ask questions like:

### šŸ’° Financial Overview

- _"What's my current net worth?"_
- _"Show me all my account balances"_
- _"What's my checking account balance?"_

### šŸ“Š Spending Analysis

- _"How much did I spend on groceries last month?"_
- _"Show me my largest expenses from the past week"_
- _"Break down my spending by category for Q3"_
- _"Find all transactions over $500 this year"_

### šŸ“ˆ Budget Insights

- _"How am I doing against my budget this month?"_
- _"Which budget categories am I overspending in?"_
- _"Show me my budget vs actual for each category"_

### šŸ” Transaction Search

- _"Find all Amazon purchases from last month"_
- _"Show me restaurant transactions over $50"_
- _"What did I spend at Costco this year?"_

### šŸ“… Historical Analysis

- _"Compare my spending this month vs last month"_
- _"Show my account balance trends for the past 6 months"_
- _"What was my net income last month?"_

## šŸ› ļø Available Tools

| Tool                       | Description                        | Parameters                                   |
| -------------------------- | ---------------------------------- | -------------------------------------------- |
| `get_accounts`             | List all financial accounts        | None                                         |
| `get_account_balance`      | Get specific account balance       | `accountId`                                  |
| `get_transactions`         | Retrieve transactions with filters | `limit`, `accountId`, `startDate`, `endDate` |
| `get_spending_by_category` | Spending breakdown by category     | `startDate`, `endDate`                       |
| `get_budget_summary`       | Current budget status              | None                                         |
| `search_transactions`      | Search transactions by criteria    | `query`, `minAmount`, `maxAmount`, `limit`   |
| `get_net_worth`            | Calculate total net worth          | None                                         |
| `get_monthly_summary`      | Monthly financial summary          | `year`, `month`                              |
| `get_categories`           | List all transaction categories    | None                                         |
| `get_account_snapshots`    | Account balance history            | `accountId`, `startDate`, `endDate`          |

## šŸ”§ Development

### Development Commands

```bash
# Run in development mode
npm run dev

# Build for production
npm run build

# Start production server
npm start

# Get authentication token
npm run login
```

### Project Structure

```
monarch-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts           # MCP server entry point
│   ā”œā”€ā”€ login.ts          # Authentication helper
│   ā”œā”€ā”€ monarch-api.ts    # Monarch Money API client
│   └── tools.ts          # MCP tool implementations
ā”œā”€ā”€ dist/                 # Compiled JavaScript output
ā”œā”€ā”€ package.json          # Project dependencies
ā”œā”€ā”€ tsconfig.json         # TypeScript configuration
└── README.md            # This file
```

### API Architecture

The server implements a three-layer architecture:

1. **MCP Layer** (`index.ts`) - Handles Model Context Protocol communication
2. **Tools Layer** (`tools.ts`) - Implements financial analysis tools
3. **API Layer** (`monarch-api.ts`) - Manages Monarch Money GraphQL API integration

## šŸ› Troubleshooting

### Authentication Issues

| Problem             | Solution                                          |
| ------------------- | ------------------------------------------------- |
| Invalid credentials | Verify your email/password in the login command   |
| MFA required        | Use the `npm run login` command which handles MFA |
| Token expired       | Re-run `npm run login` to get a fresh token       |

### Integration Issues

| Problem             | Solution                                  |
| ------------------- | ----------------------------------------- |
| Tools not appearing | Restart Claude Desktop completely         |
| Server not starting | Verify the absolute path in config file   |
| Permission errors   | Check file permissions on `dist/index.js` |

### Common Error Messages

- **"MONARCH_TOKEN environment variable is required"** - Add your token to the Claude Desktop config
- **"Authentication failed"** - Check your token validity and regenerate if needed
- **"GraphQL Error (Code: 400)"** - API request format issue (usually handled automatically)

## šŸ¤ Contributing

We welcome contributions! Here's how to get started:

1. **Fork** the repository
2. **Create** a feature branch (`git checkout -b feature/amazing-feature`)
3. **Make** your changes
4. **Test** thoroughly with your own Monarch Money account
5. **Commit** your changes (`git commit -m 'Add amazing feature'`)
6. **Push** to your branch (`git push origin feature/amazing-feature`)
7. **Open** a Pull Request

### Development Guidelines

- Follow TypeScript best practices
- Add proper error handling
- Update documentation for new features
- Test with real Monarch Money data
- Maintain backwards compatibility

## šŸ“„ License

This project is licensed under the ISC License - see the [LICENSE](LICENSE) file for details.

## āš ļø Disclaimer

This project is an independent integration and is not affiliated with, endorsed by, or sponsored by Monarch Money.

**Important Notes:**

- Use this software at your own risk
- Always verify financial data independently
- Never make financial decisions based solely on automated tools
- Keep your authentication credentials secure
- Review all transactions and calculations manually

## šŸ™‹ā€ā™‚ļø Support

- **Issues**: [GitHub Issues](https://github.com/whitebirchio/monarch-mcp/issues)
- **Discussions**: [GitHub Discussions](https://github.com/whitebirchio/monarch-mcp/discussions)
- **Documentation**: This README and inline code comments

---

Made with ā¤ļø for the Claude Desktop community

TDQS

A3.5/5.0

Scored across 11 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific financial data endpoints, with no overlap or ambiguity. For example, get_account_balance focuses on current balance, while get_account_snapshots provides historical data, and get_spending_by_category analyzes spending patterns separately from get_transactions.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern with 'get_' prefix, making them predictable and readable. The structure is uniform across all 11 tools, such as get_accounts, get_budget_summary, and get_net_worth, with no deviations in style or convention.

Tool Count5/5

The 11 tools are well-scoped for a personal finance server, covering key areas like accounts, transactions, budgets, and investments. Each tool earns its place by addressing a distinct aspect of financial management without being excessive or insufficient for the domain.

Completeness4/5

The tool set provides comprehensive read-only coverage for financial data retrieval, including accounts, transactions, budgets, and net worth. A minor gap exists in write operations (e.g., updating transactions or budgets), but agents can still perform most analysis and reporting tasks effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues