@daften/fireflyiii-mcp 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +15 -0
- package/CHANGELOG.md +29 -2
- package/README.md +22 -495
- package/dist/args.d.ts.map +1 -1
- package/dist/args.js +47 -15
- package/dist/args.js.map +1 -1
- package/dist/client.d.ts +19 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +47 -0
- package/dist/client.js.map +1 -1
- package/dist/http.js +2 -2
- package/dist/http.js.map +1 -1
- package/dist/tools/_helpers.d.ts +54 -0
- package/dist/tools/_helpers.d.ts.map +1 -1
- package/dist/tools/_helpers.js +69 -0
- package/dist/tools/_helpers.js.map +1 -1
- package/dist/tools/accounts.d.ts +2 -0
- package/dist/tools/accounts.d.ts.map +1 -1
- package/dist/tools/accounts.js +57 -9
- package/dist/tools/accounts.js.map +1 -1
- package/dist/tools/attachments.d.ts +13 -1
- package/dist/tools/attachments.d.ts.map +1 -1
- package/dist/tools/attachments.js +29 -5
- package/dist/tools/attachments.js.map +1 -1
- package/dist/tools/budgets.d.ts +1 -0
- package/dist/tools/budgets.d.ts.map +1 -1
- package/dist/tools/budgets.js +55 -11
- package/dist/tools/budgets.js.map +1 -1
- package/dist/tools/categories.d.ts +1 -0
- package/dist/tools/categories.d.ts.map +1 -1
- package/dist/tools/categories.js +51 -7
- package/dist/tools/categories.js.map +1 -1
- package/dist/tools/exports.js +1 -1
- package/dist/tools/exports.js.map +1 -1
- package/dist/tools/rules.js +2 -2
- package/dist/tools/rules.js.map +1 -1
- package/package.json +15 -3
package/.env.example
CHANGED
|
@@ -13,3 +13,18 @@ FIREFLY_TOKEN=your-personal-access-token-here
|
|
|
13
13
|
# Required for HTTP transport when not on loopback (e.g. Docker, reverse proxy)
|
|
14
14
|
# Public base URL of THIS MCP server — used to construct OAuth redirect URIs.
|
|
15
15
|
MCP_BASE_URL=https://mcp.example.com
|
|
16
|
+
|
|
17
|
+
# Optional (both transports): emit verbose autocomplete tracing to stderr.
|
|
18
|
+
# FIREFLY_DEBUG=true
|
|
19
|
+
|
|
20
|
+
# Optional tool filtering (fallbacks for --preset / --groups / --read-only).
|
|
21
|
+
# A CLI flag always takes precedence over these. MCP_PRESET and MCP_GROUPS are
|
|
22
|
+
# mutually exclusive.
|
|
23
|
+
# Presets: minimal, default, budgeting, insights, automation, full
|
|
24
|
+
# MCP_PRESET=default
|
|
25
|
+
# Groups: accounts, transactions, budgets, categories, bills, piggy-banks,
|
|
26
|
+
# reports, rules, recurring, attachments, currencies, exports,
|
|
27
|
+
# object-groups, transaction-links
|
|
28
|
+
# MCP_GROUPS=accounts,transactions
|
|
29
|
+
# Accepts "true" or "1" (case-insensitive); any other value is ignored.
|
|
30
|
+
# MCP_READ_ONLY=true
|
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.1] - 2026-06-11
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Test coverage reporting via `@vitest/coverage-v8`: new `npm run test:coverage` script, and CI posts a sticky coverage comment on every PR (via `vitest-coverage-report-action`, Node 22 job) in addition to the log summary.
|
|
14
|
+
|
|
15
|
+
### Docs
|
|
16
|
+
- New VitePress documentation site published to GitHub Pages, with guides (stdio, HTTP/OAuth, Docker, git checkout), reference pages (tools, filtering, autocomplete, env vars), and contributing pages. The README is slimmed to a quickstart that links to the site.
|
|
17
|
+
- New "Architecture at a glance" diagram in AGENTS.md showing the path from MCP client through transports, tool registration, the HTTP client, and the transform layer to the Firefly III API.
|
|
18
|
+
- README now states the Node.js 20+ requirement next to the setup options table.
|
|
19
|
+
- Export tool descriptions mention the `text/csv` output format.
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
- `trigger_rule` and `trigger_rule_group` no longer fail with HTTP 415. They sent a bodyless POST, so the client omitted the `Content-Type: application/json` header and Firefly III rejected the request. They now send an empty `{}` JSON body (trigger parameters are read from the query string), matching the other parameterless POST tools.
|
|
23
|
+
|
|
24
|
+
## [0.2.0] - 2026-05-30
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- Nightly integration tests run automatically against a live Firefly III instance (latest release) via GitHub Actions, covering the transform layer, six tool groups (accounts, transactions, budgets, categories, currencies, tags, summary), and full account and transaction CRUD cycles.
|
|
28
|
+
- [Experimental] Add autocompletion support for account, budget, and category parameters using the MCP Completion API. Note: Standard tool argument completions are not supported by the MCP specification directly, so this is implemented via native Prompts (`category-transactions`, `account-transactions`, `budget-transactions`). This is supported primarily by clients that support Prompt argument autocomplete (such as Claude Code) and may not function in other MCP clients. Suggestions are cached in memory (60s TTL) and scoped per authenticated user, so the cache is safe under multi-user HTTP/OAuth deployments. Set `FIREFLY_DEBUG=true` for verbose autocomplete tracing on stderr.
|
|
29
|
+
- Support tool presets, group filters, and read-only mode via environment variables (`MCP_PRESET`, `MCP_GROUPS`, `MCP_READ_ONLY`).
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- `create_account` now accepts `account_role`, which Firefly III requires when creating asset accounts.
|
|
33
|
+
- `download_attachment` no longer corrupts binary files (PDFs, images): content is read as raw bytes and Base64-encoded instead of decoded as UTF-8 text. Images are now returned as a native MCP image block (rendered by the client); other files as their filename, MIME type, and Base64 content.
|
|
34
|
+
|
|
10
35
|
## [0.1.1] - 2026-05-23
|
|
11
36
|
|
|
12
37
|
### Fixed
|
|
@@ -24,7 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
24
49
|
## [0.1.0] - 2026-05-23
|
|
25
50
|
|
|
26
51
|
### Added
|
|
27
|
-
- Initial release of the Firefly III
|
|
52
|
+
- Initial release of the MCP server for Firefly III.
|
|
28
53
|
- 140 tools across 14 groups: accounts, transactions, budgets, categories, bills, piggy banks, reports (tags + insights), automation rules, recurring transactions, attachments, currencies, data exports, object groups, transaction links.
|
|
29
54
|
- Two transports: stdio (Personal Access Token auth) and HTTP (OAuth 2.0 + PKCE with a built-in proxy for redirect-URI substitution).
|
|
30
55
|
- Tool filtering via `--preset`, `--groups`, and `--read-only` CLI flags. Presets: `minimal`, `default`, `budgeting`, `insights`, `automation`, `full`.
|
|
@@ -32,6 +57,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
32
57
|
- npm publish provenance via GitHub OIDC.
|
|
33
58
|
- GitHub Release auto-created from the tag annotation on each `v*` tag push.
|
|
34
59
|
|
|
35
|
-
[Unreleased]: https://github.com/daften/fireflyiii-mcp/compare/v0.
|
|
60
|
+
[Unreleased]: https://github.com/daften/fireflyiii-mcp/compare/v0.2.1...HEAD
|
|
61
|
+
[0.2.1]: https://github.com/daften/fireflyiii-mcp/compare/v0.2.0...v0.2.1
|
|
62
|
+
[0.2.0]: https://github.com/daften/fireflyiii-mcp/compare/v0.1.1...v0.2.0
|
|
36
63
|
[0.1.1]: https://github.com/daften/fireflyiii-mcp/compare/v0.1.0...v0.1.1
|
|
37
64
|
[0.1.0]: https://github.com/daften/fireflyiii-mcp/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
|
-
# Firefly III
|
|
1
|
+
# MCP server for Firefly III
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@daften/fireflyiii-mcp)
|
|
4
4
|
[](https://www.npmjs.com/package/@daften/fireflyiii-mcp)
|
|
5
5
|
[](https://github.com/daften/fireflyiii-mcp/actions/workflows/ci.yml)
|
|
6
6
|
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://daften.github.io/fireflyiii-mcp/)
|
|
7
8
|
|
|
8
|
-
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects
|
|
9
|
+
An [MCP (Model Context Protocol)](https://modelcontextprotocol.io) server that connects any MCP-compatible AI assistant to your [Firefly III](https://www.firefly-iii.org) personal finance instance. Ask your AI assistant questions about your finances in natural language.
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
📖 **[Full documentation → daften.github.io/fireflyiii-mcp](https://daften.github.io/fireflyiii-mcp/)**
|
|
12
|
+
|
|
13
|
+
## What you can ask
|
|
11
14
|
|
|
12
15
|
Once configured, you can ask things like:
|
|
13
16
|
|
|
@@ -17,7 +20,7 @@ Once configured, you can ask things like:
|
|
|
17
20
|
- *"Set up a piggy bank for my vacation fund with a €2000 target."*
|
|
18
21
|
- *"What were my biggest expense categories this year?"*
|
|
19
22
|
|
|
20
|
-
|
|
23
|
+
Your AI assistant handles the Firefly III API calls — you get answers in plain language.
|
|
21
24
|
|
|
22
25
|
---
|
|
23
26
|
|
|
@@ -25,11 +28,13 @@ Choose your setup method:
|
|
|
25
28
|
|
|
26
29
|
| Method | Transport | Best for |
|
|
27
30
|
|--------|-----------|----------|
|
|
28
|
-
| [npm — stdio](#option-1-npm-package--stdio-simplest) | stdio | Simplest setup,
|
|
29
|
-
| [npm — HTTP](#option-2-npm-package--http-oauth) | HTTP + OAuth |
|
|
31
|
+
| [npm — stdio](#option-1-npm-package--stdio-simplest) | stdio | Simplest setup, AI on the same machine |
|
|
32
|
+
| [npm — HTTP](#option-2-npm-package--http-oauth) | HTTP + OAuth | Remote AI access or when you prefer OAuth over a PAT |
|
|
30
33
|
| [Docker — HTTP](#option-3-docker--http-self-hosted) | HTTP + OAuth | Self-hosted on a server or home lab |
|
|
31
34
|
| [Git checkout](#option-4-git-checkout-development) | stdio or HTTP | Contributing or local development |
|
|
32
35
|
|
|
36
|
+
All options except Docker require **Node.js 20+**.
|
|
37
|
+
|
|
33
38
|
---
|
|
34
39
|
|
|
35
40
|
## Option 1: npm package — stdio (simplest)
|
|
@@ -53,521 +58,43 @@ Add to your Claude MCP config (`.claude/mcp.json` or Claude Desktop `claude_desk
|
|
|
53
58
|
}
|
|
54
59
|
```
|
|
55
60
|
|
|
56
|
-
|
|
61
|
+
Your MCP client downloads and starts the server automatically on first use. No separate install step needed.
|
|
57
62
|
|
|
58
63
|
---
|
|
59
64
|
|
|
60
65
|
## Option 2: npm package — HTTP (OAuth)
|
|
61
66
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
**Requires:** Node.js 20+.
|
|
65
|
-
|
|
66
|
-
### Step 1: Register an OAuth client in Firefly III
|
|
67
|
-
|
|
68
|
-
Go to **Options → Remote access and tokens → Create New Client**:
|
|
69
|
-
|
|
70
|
-
| Field | Value |
|
|
71
|
-
|-------|-------|
|
|
72
|
-
| **Name** | Anything, e.g. `Claude MCP` |
|
|
73
|
-
| **Redirect URL** | `http://127.0.0.1:3000/oauth/callback` |
|
|
74
|
-
| **Keep a secret?** | **Uncheck this box** |
|
|
75
|
-
|
|
76
|
-
Save and copy the **Client ID** (you do not need the secret).
|
|
77
|
-
|
|
78
|
-
> **Why uncheck "Keep a secret?"?**
|
|
79
|
-
> Confidential clients require a secret stored securely on a server. PKCE-based flows use a code verifier instead, which is safe for clients (like Claude) that cannot securely store a secret. Unchecking this creates a *public client* — the correct choice here.
|
|
80
|
-
|
|
81
|
-
> **Why this specific redirect URL?**
|
|
82
|
-
> Claude uses a random port for its OAuth callback (e.g. `http://localhost:61234/callback`), but Firefly III requires an exact URI match. This server acts as an OAuth proxy: it intercepts the request, substitutes its own stable callback URL (`http://127.0.0.1:3000/oauth/callback`), and forwards the authorization code back to Claude's real callback. Register this URL once and never touch it again.
|
|
83
|
-
|
|
84
|
-
### Step 2: Start the server
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
FIREFLY_URL=https://your-firefly-instance.example.com \
|
|
88
|
-
FIREFLY_OAUTH_CLIENT_ID=your-client-id \
|
|
89
|
-
npx @daften/fireflyiii-mcp --transport http
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
To use a different port: add `--port 4000`. Or install globally and omit `npx`:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
npm install -g @daften/fireflyiii-mcp
|
|
96
|
-
FIREFLY_URL=... FIREFLY_OAUTH_CLIENT_ID=... fireflyiii-mcp --transport http
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### Step 3: Connect Claude
|
|
100
|
-
|
|
101
|
-
```json
|
|
102
|
-
{
|
|
103
|
-
"mcpServers": {
|
|
104
|
-
"fireflyiii": {
|
|
105
|
-
"type": "http",
|
|
106
|
-
"url": "http://127.0.0.1:3000"
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Or via the CLI:
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
claude mcp add --transport http fireflyiii http://127.0.0.1:3000
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
The `type: "http"` field is required — without it Claude Code assumes stdio and fails. On first connection Claude opens a browser to authorize with Firefly III; tokens are managed automatically after that.
|
|
67
|
+
→ See [HTTP/OAuth setup guide](https://daften.github.io/fireflyiii-mcp/guide/http-oauth) in the docs.
|
|
119
68
|
|
|
120
69
|
---
|
|
121
70
|
|
|
122
71
|
## Option 3: Docker — HTTP (self-hosted)
|
|
123
72
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
### Step 1: Register an OAuth client in Firefly III
|
|
127
|
-
|
|
128
|
-
Same as Option 2, Step 1, but use your container's public URL as the redirect URI:
|
|
129
|
-
|
|
130
|
-
| Field | Value |
|
|
131
|
-
|-------|-------|
|
|
132
|
-
| **Redirect URL** | `https://mcp.example.com/oauth/callback` |
|
|
133
|
-
| **Keep a secret?** | **Uncheck** |
|
|
134
|
-
|
|
135
|
-
Replace `https://mcp.example.com` with your actual `MCP_BASE_URL`.
|
|
136
|
-
|
|
137
|
-
### Step 2: Run the container
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
docker run \
|
|
141
|
-
-e FIREFLY_URL=https://your-firefly-instance.example.com \
|
|
142
|
-
-e FIREFLY_OAUTH_CLIENT_ID=your-client-id \
|
|
143
|
-
-e MCP_BASE_URL=https://mcp.example.com \
|
|
144
|
-
-p 3000:3000 \
|
|
145
|
-
ghcr.io/daften/fireflyiii-mcp:latest
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
`MCP_BASE_URL` is the externally reachable URL of your container — used to build OAuth redirect URIs. If omitted the server falls back to the `Host` request header, which is unreliable behind a reverse proxy.
|
|
149
|
-
|
|
150
|
-
Or with docker-compose (copy `docker-compose.yml` from the repo):
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
# Option A: use a .env file (copy .env.example and fill in values)
|
|
154
|
-
cp .env.example .env # then edit .env
|
|
155
|
-
docker compose up -d
|
|
156
|
-
|
|
157
|
-
# Option B: export variables in your shell
|
|
158
|
-
FIREFLY_URL=https://your-firefly-instance.example.com \
|
|
159
|
-
FIREFLY_OAUTH_CLIENT_ID=your-client-id \
|
|
160
|
-
MCP_BASE_URL=https://mcp.example.com \
|
|
161
|
-
docker compose up -d
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
To build the image locally instead of pulling from the registry, uncomment `build: .` in `docker-compose.yml`.
|
|
165
|
-
|
|
166
|
-
> **Note:** OAuth state is held in-process. Run only a single replica — multiple replicas will break the OAuth flow because the callback may land on a different instance than the one that initiated authorization.
|
|
167
|
-
|
|
168
|
-
### Step 3: Connect Claude
|
|
169
|
-
|
|
170
|
-
```json
|
|
171
|
-
{
|
|
172
|
-
"mcpServers": {
|
|
173
|
-
"fireflyiii": {
|
|
174
|
-
"type": "http",
|
|
175
|
-
"url": "https://mcp.example.com"
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
```
|
|
73
|
+
→ See [Docker setup guide](https://daften.github.io/fireflyiii-mcp/guide/docker) in the docs.
|
|
180
74
|
|
|
181
75
|
---
|
|
182
76
|
|
|
183
77
|
## Option 4: Git checkout (development)
|
|
184
78
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
```bash
|
|
188
|
-
git clone https://github.com/daften/fireflyiii-mcp.git
|
|
189
|
-
cd fireflyiii-mcp
|
|
190
|
-
npm install
|
|
191
|
-
npm run build
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
### stdio mode
|
|
195
|
-
|
|
196
|
-
Create `.env` from `.env.example`:
|
|
197
|
-
|
|
198
|
-
```bash
|
|
199
|
-
FIREFLY_URL=https://your-firefly-instance.example.com
|
|
200
|
-
FIREFLY_TOKEN=your-personal-access-token-here
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
Add to your Claude MCP config:
|
|
204
|
-
|
|
205
|
-
```json
|
|
206
|
-
{
|
|
207
|
-
"mcpServers": {
|
|
208
|
-
"fireflyiii": {
|
|
209
|
-
"command": "node",
|
|
210
|
-
"args": ["/absolute/path/to/fireflyiii-mcp/dist/index.js"],
|
|
211
|
-
"env": {
|
|
212
|
-
"FIREFLY_URL": "https://your-firefly-instance.example.com",
|
|
213
|
-
"FIREFLY_TOKEN": "your-personal-access-token-here"
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
Use `npm run dev` instead of `node dist/index.js` during development to skip the build step.
|
|
79
|
+
→ See [Git checkout guide](https://daften.github.io/fireflyiii-mcp/guide/git-checkout) in the docs.
|
|
221
80
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
Register an OAuth client in Firefly III as described in Option 2, Step 1, then add to `.env`:
|
|
225
|
-
|
|
226
|
-
```bash
|
|
227
|
-
FIREFLY_URL=https://your-firefly-instance.example.com
|
|
228
|
-
FIREFLY_OAUTH_CLIENT_ID=your-client-id-here
|
|
229
|
-
```
|
|
81
|
+
---
|
|
230
82
|
|
|
231
|
-
|
|
83
|
+
## Experimental Autocomplete Prompts
|
|
232
84
|
|
|
233
|
-
|
|
234
|
-
npm run dev -- --transport http
|
|
235
|
-
# or after building:
|
|
236
|
-
node dist/index.js --transport http
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
Connect Claude as in Option 2, Step 3.
|
|
85
|
+
→ See [Autocomplete prompts](https://daften.github.io/fireflyiii-mcp/reference/autocomplete) in the docs.
|
|
240
86
|
|
|
241
87
|
---
|
|
242
88
|
|
|
243
|
-
## OAuth discovery
|
|
244
|
-
|
|
245
|
-
The server exposes `GET /.well-known/oauth-authorization-server` (no auth required) which returns RFC 8414 metadata. MCP clients use this to discover OAuth endpoints automatically — no manual OAuth configuration needed in the client.
|
|
246
|
-
|
|
247
89
|
## Available Tools
|
|
248
90
|
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
<details>
|
|
252
|
-
<summary><b>7 tools</b> — click to expand</summary>
|
|
253
|
-
|
|
254
|
-
| Tool | Description |
|
|
255
|
-
|------|-------------|
|
|
256
|
-
| `get_accounts` | List all accounts, filterable by type |
|
|
257
|
-
| `get_account` | Get a single account by ID with current balance |
|
|
258
|
-
| `create_account` | Create a new account |
|
|
259
|
-
| `update_account` | Update an existing account |
|
|
260
|
-
| `delete_account` | Delete an account. This action cannot be undone. |
|
|
261
|
-
| `get_account_transactions` | Get all transactions for a specific account, filterable by type and date range |
|
|
262
|
-
| `search_accounts` | Search accounts by name, IBAN, or account number |
|
|
263
|
-
|
|
264
|
-
</details>
|
|
265
|
-
|
|
266
|
-
### Transactions
|
|
267
|
-
|
|
268
|
-
<details>
|
|
269
|
-
<summary><b>8 tools</b> — click to expand</summary>
|
|
270
|
-
|
|
271
|
-
| Tool | Description |
|
|
272
|
-
|------|-------------|
|
|
273
|
-
| `get_transactions` | List transactions with filters (account, date, type) |
|
|
274
|
-
| `get_transaction` | Get a single transaction by ID with all splits |
|
|
275
|
-
| `search_transactions` | Keyword search across transactions |
|
|
276
|
-
| `create_transaction` | Create a new transaction |
|
|
277
|
-
| `create_split_transaction` | Create a split transaction (one receipt across multiple categories/budgets) |
|
|
278
|
-
| `update_transaction` | Update an existing transaction |
|
|
279
|
-
| `bulk_update_transactions` | Update multiple transactions at once using a search query |
|
|
280
|
-
| `delete_transaction` | Delete a transaction. This action cannot be undone. |
|
|
281
|
-
|
|
282
|
-
</details>
|
|
283
|
-
|
|
284
|
-
### Budgets
|
|
285
|
-
|
|
286
|
-
<details>
|
|
287
|
-
<summary><b>12 tools</b> — click to expand</summary>
|
|
288
|
-
|
|
289
|
-
| Tool | Description |
|
|
290
|
-
|------|-------------|
|
|
291
|
-
| `get_budgets` | List all budgets with spent/available amounts |
|
|
292
|
-
| `get_budget_limits` | Get budget limits for a specific budget and period |
|
|
293
|
-
| `create_budget` | Create a new budget |
|
|
294
|
-
| `update_budget` | Update an existing budget |
|
|
295
|
-
| `delete_budget` | Delete a budget. This action cannot be undone. |
|
|
296
|
-
| `create_budget_limit` | Create a budget limit for a specific period |
|
|
297
|
-
| `update_budget_limit` | Update an existing budget limit |
|
|
298
|
-
| `delete_budget_limit` | Delete a budget limit. This action cannot be undone. |
|
|
299
|
-
| `get_available_budgets` | List all available budget periods with amounts available |
|
|
300
|
-
| `get_available_budget` | Get a single available budget period by ID |
|
|
301
|
-
| `get_budget_transactions` | Get all transactions assigned to a specific budget |
|
|
302
|
-
| `get_transactions_without_budget` | Get transactions that have no budget assigned |
|
|
303
|
-
|
|
304
|
-
</details>
|
|
305
|
-
|
|
306
|
-
### Categories
|
|
307
|
-
|
|
308
|
-
<details>
|
|
309
|
-
<summary><b>5 tools</b> — click to expand</summary>
|
|
310
|
-
|
|
311
|
-
| Tool | Description |
|
|
312
|
-
|------|-------------|
|
|
313
|
-
| `get_categories` | List all categories |
|
|
314
|
-
| `get_category_transactions` | Get transactions for a specific category |
|
|
315
|
-
| `create_category` | Create a new category |
|
|
316
|
-
| `update_category` | Update an existing category |
|
|
317
|
-
| `delete_category` | Delete a category. This action cannot be undone. |
|
|
318
|
-
|
|
319
|
-
</details>
|
|
320
|
-
|
|
321
|
-
### Bills
|
|
322
|
-
|
|
323
|
-
<details>
|
|
324
|
-
<summary><b>5 tools</b> — click to expand</summary>
|
|
325
|
-
|
|
326
|
-
| Tool | Description |
|
|
327
|
-
|------|-------------|
|
|
328
|
-
| `get_bills` | List all bills with next expected match date |
|
|
329
|
-
| `create_bill` | Create a new bill |
|
|
330
|
-
| `update_bill` | Update an existing bill |
|
|
331
|
-
| `delete_bill` | Delete a bill. This action cannot be undone. |
|
|
332
|
-
| `get_bill_transactions` | Get all transactions linked to a specific bill |
|
|
333
|
-
|
|
334
|
-
</details>
|
|
335
|
-
|
|
336
|
-
### Piggy Banks
|
|
337
|
-
|
|
338
|
-
<details>
|
|
339
|
-
<summary><b>7 tools</b> — click to expand</summary>
|
|
340
|
-
|
|
341
|
-
| Tool | Description |
|
|
342
|
-
|------|-------------|
|
|
343
|
-
| `get_piggy_banks` | List all piggy banks with current/target amounts |
|
|
344
|
-
| `create_piggy_bank` | Create a new piggy bank |
|
|
345
|
-
| `update_piggy_bank` | Update an existing piggy bank |
|
|
346
|
-
| `delete_piggy_bank` | Delete a piggy bank. This action cannot be undone. |
|
|
347
|
-
| `get_piggy_bank_events` | Get all deposit/withdrawal events for a piggy bank |
|
|
348
|
-
| `create_piggy_bank_event` | Add a deposit or withdrawal event to a piggy bank |
|
|
349
|
-
| `delete_piggy_bank_event` | Delete a piggy bank event. This action cannot be undone. |
|
|
350
|
-
|
|
351
|
-
</details>
|
|
352
|
-
|
|
353
|
-
### Recurring Transactions
|
|
354
|
-
|
|
355
|
-
<details>
|
|
356
|
-
<summary><b>7 tools</b> — click to expand</summary>
|
|
357
|
-
|
|
358
|
-
| Tool | Description |
|
|
359
|
-
|------|-------------|
|
|
360
|
-
| `get_recurring` | List all recurring transaction rules |
|
|
361
|
-
| `get_recurrence` | Get a single recurring transaction rule by ID |
|
|
362
|
-
| `create_recurring` | Create a new recurring transaction rule |
|
|
363
|
-
| `update_recurring` | Update an existing recurring transaction rule |
|
|
364
|
-
| `delete_recurring` | Delete a recurring transaction rule. This action cannot be undone. |
|
|
365
|
-
| `get_recurrence_transactions` | Get transactions created by a recurring transaction rule |
|
|
366
|
-
| `trigger_recurrence` | Manually fire a recurring rule to create its transaction immediately |
|
|
367
|
-
|
|
368
|
-
</details>
|
|
369
|
-
|
|
370
|
-
### Automation Rules
|
|
371
|
-
|
|
372
|
-
<details>
|
|
373
|
-
<summary><b>15 tools</b> — click to expand</summary>
|
|
374
|
-
|
|
375
|
-
| Tool | Description |
|
|
376
|
-
|------|-------------|
|
|
377
|
-
| `get_rule_groups` | List all rule groups |
|
|
378
|
-
| `get_rule_group` | Get a single rule group by ID |
|
|
379
|
-
| `create_rule_group` | Create a new rule group |
|
|
380
|
-
| `update_rule_group` | Update an existing rule group |
|
|
381
|
-
| `delete_rule_group` | Delete a rule group and all its rules. This action cannot be undone. |
|
|
382
|
-
| `get_rules` | List all automation rules |
|
|
383
|
-
| `get_rule` | Get a single rule by ID |
|
|
384
|
-
| `create_rule` | Create a new automation rule with trigger conditions and actions |
|
|
385
|
-
| `update_rule` | Update an existing automation rule |
|
|
386
|
-
| `delete_rule` | Delete an automation rule. This action cannot be undone. |
|
|
387
|
-
| `trigger_rule_group` | Manually run all rules in a group against existing transactions |
|
|
388
|
-
| `trigger_rule` | Manually run a single rule against existing transactions |
|
|
389
|
-
| `test_rule_group` | Dry-run a rule group and return matching transactions (no changes applied) |
|
|
390
|
-
| `test_rule` | Dry-run a single rule and return matching transactions (no changes applied) |
|
|
391
|
-
| `get_rule_group_rules` | Get all rules belonging to a specific rule group |
|
|
392
|
-
|
|
393
|
-
</details>
|
|
394
|
-
|
|
395
|
-
### Attachments
|
|
396
|
-
|
|
397
|
-
<details>
|
|
398
|
-
<summary><b>7 tools</b> — click to expand</summary>
|
|
399
|
-
|
|
400
|
-
| Tool | Description |
|
|
401
|
-
|------|-------------|
|
|
402
|
-
| `get_attachments` | List all file attachments |
|
|
403
|
-
| `get_attachment` | Get a single attachment by ID |
|
|
404
|
-
| `create_attachment` | Create attachment metadata (step 1 of 2 — use `upload_attachment` to send file content) |
|
|
405
|
-
| `update_attachment` | Update attachment metadata |
|
|
406
|
-
| `delete_attachment` | Delete an attachment and its file data. This action cannot be undone. |
|
|
407
|
-
| `upload_attachment` | Upload base64-encoded file content for an existing attachment record (step 2 of 2) |
|
|
408
|
-
| `download_attachment` | Download the raw content of an attachment as text |
|
|
409
|
-
|
|
410
|
-
</details>
|
|
411
|
-
|
|
412
|
-
### Tags & Reports
|
|
413
|
-
|
|
414
|
-
<details>
|
|
415
|
-
<summary><b>37 tools</b> — click to expand</summary>
|
|
416
|
-
|
|
417
|
-
| Tool | Description |
|
|
418
|
-
|------|-------------|
|
|
419
|
-
| `get_tags` | List all tags |
|
|
420
|
-
| `get_tag_transactions` | Get transactions for a specific tag |
|
|
421
|
-
| `create_tag` | Create a new tag |
|
|
422
|
-
| `update_tag` | Update an existing tag |
|
|
423
|
-
| `delete_tag` | Delete a tag. This action cannot be undone. |
|
|
424
|
-
| `get_summary` | Basic balance summary (total assets, net worth) |
|
|
425
|
-
| `get_insight_expenses` | Expense insights grouped by category for a date range |
|
|
426
|
-
| `get_insight_income` | Income insights grouped by category for a date range |
|
|
427
|
-
| `get_insight_expenses_no_bill` | Expense totals for transactions with no bill attached |
|
|
428
|
-
| `get_insight_expenses_no_budget` | Expense totals for transactions with no budget attached |
|
|
429
|
-
| `get_insight_expenses_no_category` | Expense totals for transactions with no category attached |
|
|
430
|
-
| `get_insight_expenses_no_tag` | Expense totals for transactions with no tag attached |
|
|
431
|
-
| `get_insight_income_no_category` | Income totals for transactions with no category attached |
|
|
432
|
-
| `get_insight_income_no_tag` | Income totals for transactions with no tag attached |
|
|
433
|
-
| `get_insight_transfer_no_category` | Transfer totals for transactions with no category attached |
|
|
434
|
-
| `get_insight_transfer_no_tag` | Transfer totals for transactions with no tag attached |
|
|
435
|
-
| `get_about` | Get Firefly III server info (version, PHP version, OS) |
|
|
436
|
-
| `get_net_worth_summary` | Get net worth summary for a date range |
|
|
437
|
-
| `get_account_overview_chart` | Get account overview chart data for a date range |
|
|
438
|
-
| `get_balance_chart` | Get account balance chart data for a date range |
|
|
439
|
-
| `get_budget_chart` | Get budget overview chart data for a date range |
|
|
440
|
-
| `get_category_chart` | Get category overview chart data for a date range |
|
|
441
|
-
| `get_exchange_rate` | Get exchange rate between two currencies |
|
|
442
|
-
| `get_insight_expenses_by_bill` | Expense insights grouped by bill for a date range |
|
|
443
|
-
| `get_insight_expenses_by_budget` | Expense insights grouped by budget for a date range |
|
|
444
|
-
| `get_insight_expenses_by_tag` | Expense insights grouped by tag for a date range |
|
|
445
|
-
| `get_insight_expenses_by_asset` | Expense insights grouped by asset account |
|
|
446
|
-
| `get_insight_expenses_by_expense_account` | Expense insights grouped by expense account |
|
|
447
|
-
| `get_insight_expenses_total` | Total expense amount for a date range |
|
|
448
|
-
| `get_insight_income_by_revenue` | Income insights grouped by revenue account |
|
|
449
|
-
| `get_insight_income_by_tag` | Income insights grouped by tag |
|
|
450
|
-
| `get_insight_income_by_asset` | Income insights grouped by asset account |
|
|
451
|
-
| `get_insight_income_total` | Total income amount for a date range |
|
|
452
|
-
| `get_insight_transfers_by_category` | Transfer insights grouped by category |
|
|
453
|
-
| `get_insight_transfers_by_tag` | Transfer insights grouped by tag |
|
|
454
|
-
| `get_insight_transfers_by_asset` | Transfer insights grouped by asset account |
|
|
455
|
-
| `get_insight_transfers_total` | Total transfer amount for a date range |
|
|
456
|
-
|
|
457
|
-
</details>
|
|
458
|
-
|
|
459
|
-
### Currencies
|
|
460
|
-
|
|
461
|
-
<details>
|
|
462
|
-
<summary><b>8 tools</b> — click to expand</summary>
|
|
463
|
-
|
|
464
|
-
| Tool | Description |
|
|
465
|
-
|------|-------------|
|
|
466
|
-
| `get_currencies` | List all currencies configured in Firefly III |
|
|
467
|
-
| `get_currency` | Get a single currency by code (e.g. EUR, USD) |
|
|
468
|
-
| `create_currency` | Create a new currency |
|
|
469
|
-
| `update_currency` | Update an existing currency |
|
|
470
|
-
| `enable_currency` | Enable a currency for use in transactions |
|
|
471
|
-
| `disable_currency` | Disable a currency |
|
|
472
|
-
| `set_primary_currency` | Set a currency as the primary/default currency |
|
|
473
|
-
| `delete_currency` | Delete a currency. This action cannot be undone. |
|
|
474
|
-
|
|
475
|
-
</details>
|
|
476
|
-
|
|
477
|
-
### Data Export
|
|
478
|
-
|
|
479
|
-
<details>
|
|
480
|
-
<summary><b>9 tools</b> — click to expand</summary>
|
|
481
|
-
|
|
482
|
-
| Tool | Description |
|
|
483
|
-
|------|-------------|
|
|
484
|
-
| `export_transactions` | Export all transactions as CSV (supports date filters) |
|
|
485
|
-
| `export_accounts` | Export all accounts as CSV |
|
|
486
|
-
| `export_bills` | Export all bills as CSV |
|
|
487
|
-
| `export_budgets` | Export all budgets as CSV |
|
|
488
|
-
| `export_categories` | Export all categories as CSV |
|
|
489
|
-
| `export_tags` | Export all tags as CSV |
|
|
490
|
-
| `export_recurring` | Export all recurring transactions as CSV |
|
|
491
|
-
| `export_rules` | Export all rules as CSV |
|
|
492
|
-
| `export_piggy_banks` | Export all piggy banks as CSV |
|
|
493
|
-
|
|
494
|
-
</details>
|
|
495
|
-
|
|
496
|
-
### Object Groups
|
|
497
|
-
|
|
498
|
-
<details>
|
|
499
|
-
<summary><b>7 tools</b> — click to expand</summary>
|
|
500
|
-
|
|
501
|
-
| Tool | Description |
|
|
502
|
-
|------|-------------|
|
|
503
|
-
| `get_object_groups` | List all object groups (used to organise accounts and piggy banks) |
|
|
504
|
-
| `get_object_group` | Get a single object group by ID |
|
|
505
|
-
| `create_object_group` | Create a new object group |
|
|
506
|
-
| `update_object_group` | Update an existing object group |
|
|
507
|
-
| `delete_object_group` | Delete an object group. This action cannot be undone. |
|
|
508
|
-
| `get_object_group_bills` | Get all bills in a specific object group |
|
|
509
|
-
| `get_object_group_piggy_banks` | Get all piggy banks in a specific object group |
|
|
510
|
-
|
|
511
|
-
</details>
|
|
512
|
-
|
|
513
|
-
### Transaction Links
|
|
514
|
-
|
|
515
|
-
<details>
|
|
516
|
-
<summary><b>6 tools</b> — click to expand</summary>
|
|
517
|
-
|
|
518
|
-
| Tool | Description |
|
|
519
|
-
|------|-------------|
|
|
520
|
-
| `get_link_types` | List available transaction link types (Related, Refund, Paid, etc.) |
|
|
521
|
-
| `get_transaction_links` | Get all links attached to a transaction journal entry |
|
|
522
|
-
| `get_transaction_link` | Get a single transaction link by ID |
|
|
523
|
-
| `create_transaction_link` | Create a link between two transactions |
|
|
524
|
-
| `update_transaction_link` | Update an existing transaction link |
|
|
525
|
-
| `delete_transaction_link` | Delete a transaction link. This action cannot be undone. |
|
|
526
|
-
|
|
527
|
-
</details>
|
|
91
|
+
→ See the full [tool reference](https://daften.github.io/fireflyiii-mcp/reference/tools) in the docs (140 tools across 14 groups).
|
|
528
92
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
With 140 tools across 14 groups, loading everything can consume significant context window space. Three flags let you control exactly which tools are registered:
|
|
532
|
-
|
|
533
|
-
### `--preset <name>`
|
|
534
|
-
|
|
535
|
-
Load a named subset of tool groups:
|
|
536
|
-
|
|
537
|
-
| Preset | Groups included | Tools |
|
|
538
|
-
|--------|----------------|-------|
|
|
539
|
-
| `minimal` | accounts, transactions | 15 |
|
|
540
|
-
| `default` | accounts, transactions, budgets, categories, bills | 37 |
|
|
541
|
-
| `budgeting` | accounts, transactions, budgets, categories, bills, piggy-banks | 44 |
|
|
542
|
-
| `insights` | accounts, transactions, categories, reports | 57 |
|
|
543
|
-
| `automation` | accounts, transactions, rules, recurring | 37 |
|
|
544
|
-
| `full` | all 14 groups | 140 |
|
|
545
|
-
|
|
546
|
-
```bash
|
|
547
|
-
node dist/index.js --preset default
|
|
548
|
-
npx @daften/fireflyiii-mcp --preset budgeting
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
### `--groups <list>`
|
|
552
|
-
|
|
553
|
-
Comma-separated list of specific groups to load. Cannot be combined with `--preset`.
|
|
554
|
-
|
|
555
|
-
Valid group names: `accounts`, `transactions`, `budgets`, `categories`, `bills`, `piggy-banks`, `reports`, `rules`, `recurring`, `attachments`, `currencies`, `exports`, `object-groups`, `transaction-links`
|
|
556
|
-
|
|
557
|
-
```bash
|
|
558
|
-
node dist/index.js --groups accounts,transactions,reports
|
|
559
|
-
```
|
|
560
|
-
|
|
561
|
-
### `--read-only`
|
|
562
|
-
|
|
563
|
-
Filter any selection down to read-only tools (`get_*`, `search_*`, `test_*`). All create, update, delete, trigger, and upload tools are excluded. Can be combined with `--preset` or `--groups`.
|
|
93
|
+
---
|
|
564
94
|
|
|
565
|
-
|
|
566
|
-
node dist/index.js --preset default --read-only
|
|
567
|
-
node dist/index.js --groups rules --read-only
|
|
568
|
-
```
|
|
95
|
+
## Filtering Tools
|
|
569
96
|
|
|
570
|
-
|
|
97
|
+
→ See [Tool filtering](https://daften.github.io/fireflyiii-mcp/reference/filtering) in the docs.
|
|
571
98
|
|
|
572
99
|
---
|
|
573
100
|
|
package/dist/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,KAAK,iBAAiB,EAAkB,MAAM,kBAAkB,CAAC;AAEjH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,iBAAiB,CAAC;CAClC;
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyC,KAAK,iBAAiB,EAAkB,MAAM,kBAAkB,CAAC;AAEjH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAgCD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAgEpD"}
|