firefly-iii-mcp
Provides tools for interacting with Firefly III's API, enabling management of accounts, transactions, categories, tags, budgets, bills, piggy banks, recurrences, currencies, rules, search, reports, and attachments in a Firefly III instance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@firefly-iii-mcpShow my spending by category for this month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
firefly-iii-mcp
An MCP (Model Context Protocol) server for Firefly III, exposing 114 tools across 13 resource categories so AI agents (Claude, Cursor, etc.) can manage your personal finances directly.
Features
114 tools covering every major Firefly III resource
Dual transport: stdio (Claude Desktop) and Streamable HTTP (remote / multi-client)
Docker-first: single-image deployment, no external dependencies beyond Firefly III
Full Firefly III v6 support: piggy-bank v6 API, recurrences v6, exchange rates v6
Optional HTTP auth via bearer token (
MCP_AUTH_TOKEN)TypeScript with strict types, ES2022, Node 22
Related MCP server: Firefly III MCP Server
Requirements
Requirement | Version |
Node.js | 22+ |
Firefly III | v6.x (tested on v6.5.9) |
npm | 10+ |
Installation
# Clone
git clone https://github.com/your-org/firefly-iii-mcp.git
cd firefly-iii-mcp
# Install dependencies
npm ci
# Build
npm run buildConfiguration
All configuration is via environment variables.
Variable | Required | Default | Description |
| Yes | — | Base URL of your Firefly III instance, e.g. |
| Yes | — | Personal access token from Firefly III → Profile → OAuth → Personal Access Tokens |
| No |
| Transport mode: |
| No |
| HTTP server port (HTTP transport only) |
| No |
| HTTP server bind host (HTTP transport only) |
| No | — | Bearer token required on |
| No |
| Firefly III API request timeout in milliseconds |
| No |
| Maximum pages to auto-fetch when listing resources |
| No |
| Log verbosity: |
| No |
| Tool profile controlling which of the 114 tools are exposed. See Tool Profiles |
Create a .env file for local development:
cp .env.example .env
# Edit FIREFLY_BASE_URL and FIREFLY_API_TOKENUsage
Claude Desktop — stdio transport
Add to your claude_desktop_config.json:
{
"mcpServers": {
"firefly-iii": {
"command": "node",
"args": ["/absolute/path/to/firefly-iii-mcp/dist/index.js"],
"env": {
"FIREFLY_BASE_URL": "http://localhost:8080",
"FIREFLY_API_TOKEN": "your-personal-access-token",
"TRANSPORT": "stdio"
}
}
}
}Restart Claude Desktop. The 114 Firefly III tools will be available in every conversation.
Claude Desktop — remote HTTP transport
Claude Desktop only supports stdio-based servers natively. To connect to a remote MCP server over HTTP, use the mcp-remote bridge:
{
"mcpServers": {
"firefly-iii": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://your-mcp-server.example.com/mcp"
]
}
}
}If the server requires authentication (MCP_AUTH_TOKEN), pass the headers flag:
{
"mcpServers": {
"firefly-iii": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://your-mcp-server.example.com/mcp",
"--header",
"Authorization: Bearer your-mcp-auth-token"
]
}
}
}Restart Claude Desktop after saving.
Claude.ai — remote HTTP transport
On claude.ai, remote MCP servers are configured as connectors:
Go to Settings > Connectors
Click Add custom connector
Enter the server URL:
https://your-mcp-server.example.com/mcpConfigure authentication if required
Set tool permissions
Docker — HTTP transport
Build:
docker build -t firefly-iii-mcp .Run (HTTP, stateless):
docker run -d \
-p 3000:3000 \
-e FIREFLY_BASE_URL=http://your-firefly-host:8080 \
-e FIREFLY_API_TOKEN=your-token \
-e MCP_AUTH_TOKEN=your-mcp-secret \
-e FIREFLY_TOOL_PROFILE=default \
-e LOG_LEVEL=info \
firefly-iii-mcpMCP endpoint: POST http://localhost:3000/mcp
Health check: GET http://localhost:3000/health
Run (stdio via Docker):
docker run --rm -i \
-e FIREFLY_BASE_URL=http://your-firefly-host:8080 \
-e FIREFLY_API_TOKEN=your-token \
-e TRANSPORT=stdio \
-e FIREFLY_TOOL_PROFILE=default \
firefly-iii-mcpdocker-compose — Local development stack
docker-compose.dev.yml spins up a complete local stack: MariaDB, Firefly III, and the MCP server in development (hot-reload) mode.
# Start everything (MariaDB → Firefly III → MCP)
FIREFLY_API_TOKEN=your-token FIREFLY_TOOL_PROFILE=default docker compose -f docker-compose.dev.yml up
# Stop
docker compose -f docker-compose.dev.yml downServices:
Service | Port | Description |
| — | MariaDB database for Firefly III |
|
| Firefly III web UI & API |
|
| MCP server (hot-reload via |
After startup, open Firefly III at http://localhost:8080 to create your account and generate a personal access token. Set FIREFLY_API_TOKEN accordingly.
Tool Profiles
The FIREFLY_TOOL_PROFILE environment variable controls which tools are exposed to the AI. This keeps the LLM context focused on what's relevant for your workflow.
The 7 presets
Preset | Tools | Best for |
| 26 | Read-only queries: balances, transactions, reports |
| 62 | Daily expense management (default when unset) |
| 64 | Financial analysis, dashboards, auditing — zero writes |
| 39 | Budget tracking and management |
| 39 | Configuring rules and recurring transactions |
| 32 | System administration: accounts, currencies, attachments |
| 114 | Unrestricted access to all tools |
The 15 categories
Each category supports two access levels: read-only (default) and write (includes read).
Category | Read tools | Write tools (additional) | Total |
| list, get, transactions | create, update, delete | 6 |
| list, get, journals_get | create, update, delete, journals_delete | 7 |
| list, get, transactions | create, update, delete | 6 |
| list, get, transactions | create, update, delete | 6 |
| list, get, transactions, limits_list | create, update, delete, limits_create, limits_update, limits_delete | 10 |
| list, get, transactions, rules | create, update, delete | 7 |
| list, get, events | create, update, delete | 6 |
| list, get | create, update, delete, trigger | 6 |
| list, get, get_primary | enable, disable, set_primary, create, update, delete | 9 |
| list, get | create | 3 |
| list, get, groups_list, groups_get, groups_rules | create, update, delete, test, trigger, groups_create, groups_update, groups_delete, groups_test, groups_trigger | 15 |
| search_transactions, search_accounts | (read-only) | 2 |
| 9 autocomplete tools | (read-only) | 9 |
| 15 report and chart tools | (read-only) | 15 |
| list, get, download | create, update, delete, upload | 7 |
Composition
Tokens are combined with union semantics — the highest access level wins per category:
# Single preset
FIREFLY_TOOL_PROFILE=minimal
# Preset + extra write access
FIREFLY_TOOL_PROFILE=default,bills:write # 65 tools
FIREFLY_TOOL_PROFILE=default,budgets:write # 68 tools
# Combine two presets
FIREFLY_TOOL_PROFILE=budget,automation # 67 tools
# Custom category mix
FIREFLY_TOOL_PROFILE=accounts:write,transactions:write,reports
# Read-only analysis + ability to record transactions
FIREFLY_TOOL_PROFILE=reporting,transactions:write # 68 toolsRules:
categorywithout suffix → read-only accesscategory:write→ read + write accessMultiple tokens are unioned; higher level wins per category
Invalid tokens log a warning and are ignored
If all tokens are invalid → falls back to
defaultUnset variable →
default(62 tools)
Claude Desktop example
{
"mcpServers": {
"firefly-iii": {
"command": "node",
"args": ["/path/to/firefly-iii-mcp/dist/index.js"],
"env": {
"FIREFLY_BASE_URL": "http://localhost:8080",
"FIREFLY_API_TOKEN": "your-token",
"TRANSPORT": "stdio",
"FIREFLY_TOOL_PROFILE": "default"
}
}
}
}Tools Reference
Accounts (6 tools)
Tool | Description |
| List accounts; filter by type (asset, expense, revenue, liability, cash) |
| Get a single account by ID |
| Create a new account |
| Update an existing account |
| Delete an account (irreversible) |
| List transactions for an account; supports date range and type filters |
Transactions (7 tools)
Tool | Description |
| List transactions; filter by date range, type, page |
| Get a transaction group (all splits) by ID |
| Create a transaction (single or split); supports multi-currency |
| Update a transaction group; use |
| Delete an entire transaction group (irreversible) |
| Get a single transaction split by journal ID |
| Delete a single split from a multi-split transaction |
Categories (6 tools)
Tool | Description |
| List all categories |
| Get a category by ID |
| Create a category |
| Update a category |
| Delete a category |
| List transactions for a category; supports date range |
Tags (6 tools)
Tool | Description |
| List all tags |
| Get a tag by tag string |
| Create a tag |
| Update a tag |
| Delete a tag |
| List transactions for a tag |
Rules & Rule Groups (15 tools)
Tool | Description |
| List all rule groups |
| Get a rule group by ID |
| Create a rule group |
| Update a rule group |
| Delete a rule group |
| List rules within a group |
| Test all rules in a group against existing transactions (dry-run) |
| Apply all rules in a group to existing transactions |
| List all rules |
| Get a rule by ID |
| Create a rule with triggers and actions |
| Update a rule |
| Delete a rule |
| Test a rule against existing transactions (dry-run) |
| Apply a rule to existing transactions |
Budgets & Budget Limits (10 tools)
Tool | Description |
| List all budgets; optional date range for spending info |
| Get a budget by ID |
| Create a budget; supports auto-budget (reset/rollover/adjusted) |
| Update a budget |
| Delete a budget |
| List transactions assigned to a budget |
| List spending limits for a budget |
| Create a spending limit for a date period |
| Update a spending limit |
| Delete a spending limit |
Piggy Banks (6 tools)
Tool | Description |
| List all piggy banks |
| Get a piggy bank by ID |
| Create a piggy bank linked to an asset account |
| Update a piggy bank |
| Delete a piggy bank |
| List events (deposits/withdrawals) for a piggy bank |
Bills (7 tools)
Tool | Description |
| List all bills |
| Get a bill by ID |
| Create a bill |
| Update a bill |
| Delete a bill |
| List transactions linked to a bill |
| List rules linked to a bill |
Recurrences (6 tools)
Tool | Description |
| List all recurring transactions |
| Get a recurring transaction by ID |
| Create a recurring transaction |
| Update a recurring transaction |
| Delete a recurring transaction |
| Trigger recurrence processing (runs the cron job) |
Currencies & Exchange Rates (12 tools)
Tool | Description |
| List all currencies |
| Get a currency by code |
| Create a custom currency |
| Update a currency |
| Delete a currency |
| Enable a currency |
| Disable a currency |
| Set a currency as the default |
| Get the current default currency |
| List available exchange rate pairs |
| Get the exchange rate between two currencies |
| Create a manual exchange rate |
Search & Autocomplete (11 tools)
Tool | Description |
| Full-text search across transactions; supports operators like |
| Full-text search across accounts |
| Account name autocomplete |
| Category name autocomplete |
| Tag autocomplete |
| Budget name autocomplete |
| Bill name autocomplete |
| Currency autocomplete |
| Piggy bank name autocomplete |
| Rule title autocomplete |
| Transaction description autocomplete |
Reports & Charts (15 tools)
Tool | Description |
| Overall financial summary for a date range |
| Expenses grouped by category |
| Expenses grouped by budget |
| Expenses grouped by account |
| Expenses grouped by tag |
| Expenses grouped by bill |
| Total expenses for a period |
| Income grouped by category |
| Income grouped by account |
| Income grouped by tag |
| Total income for a period |
| Total transfers for a period |
| Account balance chart data |
| Budget spending chart data |
| Category spending chart data |
Attachments (7 tools)
Tool | Description |
| List all attachments |
| Get an attachment by ID |
| Create an attachment record linked to a transaction or other object |
| Update an attachment record |
| Delete an attachment |
| Upload file content for an attachment (base64) |
| Download attachment content (returns base64) |
Development
# Run in dev mode (hot reload)
npm run dev
# Run unit tests (requires .env.test with a live Firefly III instance)
npm test
# Run E2E tests
npm run test:e2e
# Lint
npm run lint
# Type-check
npx tsc --noEmitLicense
MIT License
Copyright (c) 2025
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
This server cannot be installed
Maintenance
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
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI tools to interact with Firefly III personal finance management instances through a cloud-deployed MCP server. Supports financial operations like account management, transactions, budgeting, and reporting with configurable tool presets.29
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Firefly III personal finance management instances via the Firefly III API, deployed as a Cloudflare Worker. It allows AI tools to manage transactions, accounts, budgets, and reporting through natural language.29ISC
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive AI-agnostic access to all Firefly III personal finance features via 66 tools, enabling natural language management of accounts, transactions, budgets, and more.1323MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to manage personal finances through Firefly III, supporting tasks like recording transactions, managing budgets, and generating financial summaries.14MIT
Related MCP Connectors
Connect AI agents to bank accounts, transactions, balances, and investments.
Agentic Finance: 500+ tools for AI agents over x402 or MPP, free via PoW, or prepaid card credits
Universal AI API Orchestrator — 1,554 tools, 96 services. One install.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/braindaamage/firefly-iii-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server