Firefly III MCP Server
Firefly III MCP Server
Gewähren Sie einem KI-Assistenten Lesezugriff — und, wenn Sie es erlauben, Schreibzugriff — auf Ihre eigene Firefly III-Instanz über das Model Context Protocol.
146 Operationen über 26 Entitäten: Transaktionen, Konten, Budgets, Kategorien, Tags, Rechnungen, Sparschweine, Regeln sowie Suche und Zeitraumanalyse.
Türkçe: README.tr.md
Jeder führt dies gegen seine eigene Firefly-Instanz mit seinem eigenen Token aus. Es wird nichts geteilt, und keine Daten laufen über einen Dritten.
Installation
Erfordert Node.js 20.6+. Am schnellsten geht es, wenn Sie das Setup die Arbeit machen lassen:
npx -y @yakupemreyerli/firefly-mcp setupEs fragt nach Ihrer Firefly-III-Adresse und Ihrem API-Token, prüft gegen Ihre Instanz, ob diese tatsächlich funktionieren, und konfiguriert dann Claude Code und Claude Desktop, falls es sie findet — wobei es alles sichert, was es anfasst, und Ihre anderen MCP-Server unangetastet lässt. Für jeden anderen Client gibt es die Konfiguration zum Einfügen aus.
Wenn Sie es lieber von Hand erledigen möchten:
Claude Code
claude mcp add firefly \
--env FIREFLY_API_URL=your-firefly.example \
--env FIREFLY_API_TOKEN=your-token \
-- npx -y @yakupemreyerli/firefly-mcpClaude Desktop, Cursor und andere Clients
Fügen Sie dies zur MCP-Konfigurationsdatei des Clients hinzu:
{
"mcpServers": {
"firefly": {
"command": "npx",
"args": ["-y", "@yakupemreyerli/firefly-mcp"],
"env": {
"FIREFLY_API_URL": "your-firefly.example",
"FIREFLY_API_TOKEN": "your-token"
}
}
}
}Holen Sie das Token von Firefly III → Optionen → Profil → OAuth → Neues persönliches Zugriffstoken erstellen. Für die URL reicht Ihre Domain — https:// und /api/v1 werden automatisch ergänzt. Geben Sie die vollständige URL an, wenn Ihre Instanz hinter einem Unterpfad, auf einem benutzerdefinierten Port oder über einfaches http erreichbar ist.
Related MCP server: Firefly III MCP Server
Wie weit es gehen kann
Über stdio, so weit es das Firefly-Token erlaubt: Sie können den Assistenten bitten, einen Kauf zu erfassen oder eine Transaktion zu kategorisieren, und er wird es tun. Es gibt keine serverweite Berechtigungseinstellung — für eine Sitzung, die nur Fragen beantworten kann, stellen Sie in Firefly III ein schreibgeschütztes persönliches Zugriffstoken aus, sodass die Grenze von Firefly durchgesetzt wird und nicht durch eine Variable, die dieselbe Person bearbeiten kann.
Über HTTP mit OAuth wird der Zugriff pro Verbindung entschieden: firefly:read, firefly:write und firefly:destructive werden am Passwortbildschirm gewährt, und eine Oberfläche, die nicht gewährt wurde, wird sowohl verborgen als auch verweigert.
Was der Assistent sieht
Fünf Tools, nicht 146 — und die Ausführung ist nach Risiko aufgeteilt, sodass ein Host das Lesen eines Kontostands vom Löschen einer Transaktion unterscheiden kann:
Tool | Antworten | Risiko |
| Liest alles. Seine Beschreibung enthält den Katalog, sodass die Auswahl einer Operation keinen zusätzlichen Aufruf kostet. | schreibgeschützt |
| Erstellt oder ändert einen Datensatz. | schreibt |
| Löscht einen Datensatz oder überschreibt ein Feld in vielen Datensätzen auf einmal. | nicht rückgängig zu machen |
| Was kann ich mit dieser Entität tun? | schreibgeschützt |
| Welche Parameter nimmt diese Operation entgegen? | schreibgeschützt |
Jedes trägt MCP-Tool-Annotationen (readOnlyHint, destructiveHint, idempotentHint), und die Aufteilung wird durchgesetzt, nicht nur angekündigt: Ein Löschen, das über firefly_query erreicht wird, wird verweigert. Eine Verbindung, der nur firefly:read gewährt wurde, sieht die beiden Schreib-Tools überhaupt nicht.
Die meisten MCP-Clients verschlechtern sich ab etwa 40 Tools, weshalb die Oberfläche aus drei besteht.
Antworten werden gekürzt, bevor sie das Modell erreichen: leere und null Attribute werden immer verworfen, und jedes Ausführungs-Tool akzeptiert eine fields-Liste, die nur die von Ihnen benannten Attribute behält — bei einer großen Transaktionsliste entspricht das einer Kürzung um etwa 90 %.
Konfiguration
Variable | Standard | Zweck |
| — | Erforderlich. Eine reine Domain oder eine vollständige Basis-URL einschließlich |
| — | Erforderlich. Persönliches Zugriffstoken. |
|
| Nur für eine lokale Instanz mit einem selbstsignierten Zertifikat. |
Remote-HTTP-Modus
Für Clients, die sich über HTTP verbinden, anstatt einen Prozess zu starten — n8n zum Beispiel — spricht derselbe Server streambares HTTP:
export MCP_HTTP_TOKEN=$(openssl rand -hex 32)
npx -y -p @yakupemreyerli/firefly-mcp firefly-mcp-httpfirefly-mcp-http ist eine zweite Binärdatei im selben Paket, weshalb npx -p benötigt, um das Paket und den Befehl getrennt zu benennen.
Es weigert sich, ohne MCP_HTTP_TOKEN zu starten, und jede Anfrage an /mcp muss Authorization: Bearer <token> enthalten. /health ist offen, für Container-Probes. Ein Dockerfile und eine compose.example.yml befinden sich im Repository.
Setzen Sie es hinter TLS. Das Token ist das Einzige, was zwischen dem Internet und dem Schreibzugriff auf Ihre Finanzhistorie steht — setzen Sie den Port nicht direkt frei.
Dokumentation
Seite | Was sie abdeckt |
Token erhalten, Client einrichten, erste Dinge zum Ausprobieren, Fehlerbehebung | |
Jede Umgebungsvariable, die Berechtigungsrichtlinie, HTTP-Modus | |
Claude Code, Claude Desktop, Cursor, VS Code, n8n und Remote-HTTP | |
Alle 146 Operationen, Antwortkürzung, die Firefly-Eigenheiten, die beißen | |
| |
Interaktives Herumstöbern am Server während der Entwicklung |
Docker
Für den HTTP-Modus gibt es ein vorgefertigtes Image, für linux/amd64 und linux/arm64:
docker run -d \
-e FIREFLY_API_URL=your-firefly.example \
-e FIREFLY_API_TOKEN=your-token \
-e MCP_HTTP_HOST=0.0.0.0 \
-e MCP_HTTP_TOKEN="$(openssl rand -hex 32)" \
-p 3000:3000 \
ghcr.io/yakupemreyerli/mcp-firefly-iii:latest/health antwortet ohne Token, für Container-Probes. Alles auf /mcp benötigt Authorization: Bearer <MCP_HTTP_TOKEN>.
Pinnen Sie eine Version (:0.3.1) anstelle von :latest für alles, von dem Sie abhängen.
Entwicklung
git clone https://github.com/YakupEmreYerli/mcp-firefly-iii.git
cd mcp-firefly-iii
npm install
cp .env.example .env # fill in your instance
npm test # mocked; never touches a live instance
npm run build
npm run check # read-only connection check against .envTests sind gemockt und erreichen nie das Netzwerk. npm run smoke:live ist ein Wartungs-Tool, das jede Leseoperation gegen die Instanz in .env durchläuft; es ist schreibgeschützt und nicht Teil des veröffentlichten Pakets.
Mitwirken
Fehlerberichte und Pull-Requests sind willkommen. Siehe CONTRIBUTING.md für die Struktur des Codes, wie Sie die Tests ausführen, und die Firefly-III-Eigenheiten, die Sie kennen sollten, bevor Sie etwas anfassen.
Ein Sicherheitsproblem gefunden? Bitte melden Sie es privat — siehe SECURITY.md.
Lizenz
MIT — siehe LICENSE.
Maintenance
Related MCP Servers
- AlicenseBqualityAmaintenanceAn MCP server implementation that provides programmatic access to personal finance data through LunchMoney's API, enabling AI assistants to manage transactions, budgets, categories, and assets.592,36198MIT
- -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 gradedqualityCmaintenanceA comprehensive MCP server that enables AI assistants to manage Lunch Money finances through 37 tools for transactions, budgets, and accounts. It supports both local stdio and remote HTTP transport modes with secure, encrypted credential storage.173MIT
- AlicenseBqualityFmaintenanceA Model Context Protocol server that provides programmatic access to Firefly III personal finance management. It enables AI assistants to manage accounts, transactions, budgets, and more through natural language.58AGPL 3.0
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server exposing the Backtest360 engine API as tools for AI agents.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
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/YakupEmreYerli/mcp-firefly-iii'
If you have feedback or need assistance with the MCP directory API, please join our Discord server