Skip to main content
Glama
przbadu

Firefly III MCP Server

by przbadu
README.md
# Firefly III MCP Server

[![npm version](https://img.shields.io/npm/v/firefly-iii-mcp-server.svg)](https://www.npmjs.com/package/firefly-iii-mcp-server)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

An MCP (Model Context Protocol) server that gives Claude full access to your [Firefly III](https://www.firefly-iii.org/) personal finance instance. Talk to Claude in natural language to record expenses, check balances, manage budgets, and more.

## Features

- **Transactions**: Create, list, search, update, and delete transactions (withdrawals, deposits, transfers)
- **Accounts**: Manage asset, expense, revenue, liability, and cash accounts
- **Categories**: Organize transactions with categories
- **Budgets**: Create and manage budgets with auto-budget support
- **Tags**: Label transactions with flexible tags

## Prerequisites

- Node.js >= 18
- A running Firefly III instance
- A Personal Access Token (PAT) from your Firefly III instance

### Getting Your PAT

1. Log into your Firefly III instance
2. Go to **Options → Profile → OAuth**
3. Under **Personal Access Tokens**, create a new token
4. Copy the token — you'll need it for configuration

## Installation

### Via npm (recommended)

```bash
npm install -g firefly-iii-mcp-server
```

### From source

```bash
git clone https://github.com/przbadu/firefly-iii-mcp-server.git
cd firefly-iii-mcp-server
npm install
npm run build
```

## Configuration

### Claude Desktop

Edit your Claude Desktop config file:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

Using the npm-installed binary:

```json
{
  "mcpServers": {
    "firefly-iii": {
      "command": "firefly-iii-mcp-server",
      "env": {
        "FIREFLY_III_URL": "https://your-firefly-instance.example.com",
        "FIREFLY_III_PAT": "your-personal-access-token-here"
      }
    }
  }
}
```

Or using npx (no global install needed):

```json
{
  "mcpServers": {
    "firefly-iii": {
      "command": "npx",
      "args": ["-y", "firefly-iii-mcp-server"],
      "env": {
        "FIREFLY_III_URL": "https://your-firefly-instance.example.com",
        "FIREFLY_III_PAT": "your-personal-access-token-here"
      }
    }
  }
}
```

### Claude Code CLI

```bash
claude mcp add firefly-iii \
  -e FIREFLY_III_URL=https://your-firefly-instance.example.com \
  -e FIREFLY_III_PAT=your-personal-access-token-here \
  -- npx -y firefly-iii-mcp-server
```

Or add it to your `.claude/settings.json`:

```json
{
  "mcpServers": {
    "firefly-iii": {
      "command": "npx",
      "args": ["-y", "firefly-iii-mcp-server"],
      "env": {
        "FIREFLY_III_URL": "https://your-firefly-instance.example.com",
        "FIREFLY_III_PAT": "your-personal-access-token-here"
      }
    }
  }
}
```

## Usage Examples

Once configured, just talk to Claude naturally:

### Recording Transactions

> "I spent $45.50 at Trader Joe's on groceries today"

> "Record a $2,500 salary deposit from my employer into my checking account"

> "Transfer $500 from Checking to Savings"

### Querying

> "Show me all my transactions from last week"

> "How much did I spend on restaurants this month?"

> "What's the balance of my checking account?"

### Managing Finances

> "Create a monthly grocery budget of $600"

> "List all my expense categories"

> "Tag my last 3 restaurant transactions as 'business meals'"

## Available Tools

| Tool | Description |
|------|-------------|
| `firefly_create_transaction` | Create withdrawal, deposit, or transfer |
| `firefly_list_transactions` | List transactions with filters |
| `firefly_get_transaction` | Get transaction details by ID |
| `firefly_update_transaction` | Update an existing transaction |
| `firefly_delete_transaction` | Delete a transaction |
| `firefly_search_transactions` | Search with Firefly III query syntax |
| `firefly_create_account` | Create a new account |
| `firefly_list_accounts` | List accounts by type |
| `firefly_get_account` | Get account details |
| `firefly_update_account` | Update account properties |
| `firefly_delete_account` | Delete an account |
| `firefly_list_categories` | List all categories |
| `firefly_create_category` | Create a category |
| `firefly_update_category` | Update a category |
| `firefly_delete_category` | Delete a category |
| `firefly_list_budgets` | List all budgets |
| `firefly_create_budget` | Create a budget |
| `firefly_update_budget` | Update a budget |
| `firefly_delete_budget` | Delete a budget |
| `firefly_list_tags` | List all tags |
| `firefly_create_tag` | Create a tag |
| `firefly_update_tag` | Update a tag |
| `firefly_delete_tag` | Delete a tag |

## Development

```bash
# Watch mode with auto-reload
npm run dev

# Build for production
npm run build

# Run the built server
npm start
```

## License

MIT

TDQS

A3.7/5.0

Scored across 23 tools

Disambiguation5/5

Each tool targets a distinct resource-action combination (create/list/get/update/delete/search for transactions and accounts; list/create/update/delete for categories, budgets, and tags). There is no meaningful overlap, and list vs. search transactions are clearly differentiated by search's advanced query syntax.

Naming Consistency5/5

All tools follow the same `firefly_<verb>_<noun>` snake_case pattern, using a consistent set of verbs: create, list, get, update, delete, search. This makes the API highly predictable and easy to navigate.

Tool Count4/5

At 23 tools, this exceeds the typical 3-15 sweet spot, but each tool maps to a specific operation on one of five core resources (transactions, accounts, categories, budgets, tags). The count is slightly heavy but justified given the breadth of Firefly III's domain.

Completeness4/5

The surface covers full CRUD for accounts and transactions, plus search for transactions, and reasonable create/list/update/delete coverage for categories, budgets, and tags. Minor gaps include the absence of dedicated get-by-ID operations for categories, budgets, and tags, and no support for advanced Firefly III features like rules or recurring transactions, but core workflows are solid.

Maintenance

ActivityInactive
ResponsivenessNo issues