Zum Hauptinhalt springen

MCP-Server

Der Frihet MCP-Server implementiert das Model Context Protocol, damit KI-Assistenten direkt mit Ihrem ERP interagieren können. Rechnungen erstellen, Ausgaben erfassen, Kunden abfragen oder Angebote verwalten – alles von Ihrer IDE oder Ihrem Terminal aus, in natürlicher Sprache.

Aktuelle Version: 1.5.1 | 52 Tools | 11 Ressourcen | 10 Prompts | Strukturierte Ausgabe | Kompatibel mit 30+ KI-Agenten.

Sie:      "Erstellen Sie eine Rechnung für TechStart SL, 40 Stunden Beratung zu 75 EUR/Stunde, Fälligkeit 1. März"
Claude: Erledigt. Rechnung INV-2026-089 erstellt. Gesamt: 3.000,00 EUR + 21% MwSt. = 3.630,00 EUR.

Was Sie erwarten können (und was nicht)

Der MCP-Server ist eine zustandslose Brücke zwischen Ihrem KI-Assistenten und der Frihet REST-API. Jeder Tool-Aufruf wird in eine HTTP-Anfrage an die API übersetzt.

Was er KANN:

  • Vollständiges CRUD für Rechnungen, Ausgaben, Kunden, Produkte, Angebote und Webhooks
  • Suche nach Rechnungen nach Kundenname
  • Zugriff auf Referenzdaten (Steuersätze, Steuerkalender, Kategorien)
  • Geführte Workflows (Monatsabschluss, Steuervorbereitung, Mahnwesen)

Was er NICHT kann:

  • OCR von Dokumenten (das erledigt der KI-Assistent innerhalb der App)
  • PDF-Generierung (nutzen Sie die REST-API direkt: GET /v1/invoices/:id/pdf)
  • Zahlungsabwicklung (Zahlungseingänge werden über Stripe Connect in der App verwaltet)

Voraussetzungen

  • Frihet-Konto mit API-Zugriff (kostenpflichtige Pläne)
  • API-Schlüssel, generiert über das Dashboard

API-Schlüssel erhalten

  1. Melden Sie sich bei app.frihet.io an
  2. Gehen Sie zu Einstellungen > Entwickler > API-Schlüssel
  3. Klicken Sie auf API-Schlüssel erstellen
  4. Kopieren Sie den Schlüssel (beginnt mit fri_) – er wird nur einmal angezeigt

Installation

Universal (30+ Agenten)

Der schnellste Weg, den MCP-Server und den Business-Skill zu installieren:

npx skills add Frihet-io/frihet-mcp

Funktioniert mit Claude Code, Cursor, Copilot, Codex, Windsurf, Gemini CLI, Goose, Roo Code und 30+ weiteren Agenten.

MCP Registry

Der Server ist als io.frihet/erp in der offiziellen MCP Registry registriert. MCP-Clients, die die Registry unterstützen, können ihn automatisch über seinen kanonischen Namen entdecken und installieren.

Direkter npx-Aufruf

npx -y @frihet/mcp-server@latest

Sie müssen nichts global installieren. npx lädt die neueste Version automatisch herunter und führt sie aus.

Manuelle Konfiguration

Es gibt zwei Verbindungsmodi: lokal (der Server läuft auf Ihrem Rechner über npx) und remote (direkte Verbindung zu mcp.frihet.io, ohne Installation).

Lokal (stdio)

{
"mcpServers": {
"frihet": {
"command": "npx",
"args": ["-y", "@frihet/mcp-server@latest"],
"env": {
"FRIHET_API_KEY": "fri_tu_clave_aqui"
}
}
}
}

Remote (streamable-http)

{
"mcpServers": {
"frihet": {
"type": "streamable-http",
"url": "https://mcp.frihet.io/mcp",
"headers": {
"Authorization": "Bearer fri_tu_clave_aqui"
}
}
}
}

Konfiguration pro Client

Die JSON-Struktur ist bei allen Clients identisch. Es ändert sich lediglich der Speicherort der Konfigurationsdatei.

ClientKonfigurationsdatei
Claude Code~/.claude/mcp.json
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Cursor.cursor/mcp.json oder ~/.cursor/mcp.json
Windsurf~/.windsurf/mcp.json
ClineVS Code Konfiguration oder .cline/mcp.json
Codex CLI~/.codex/config.toml (MCP-Sektion)
tipp

Wenn Sie Claude Code verwenden, können Sie den Server mit einem einzigen Befehl hinzufügen:

claude mcp add frihet -- npx -y @frihet/mcp-server@latest

Konfigurieren Sie anschließend die Variable FRIHET_API_KEY in der resultierenden Datei ~/.claude/mcp.json.

Umgebungsvariablen

VariableErforderlichStandardwert
FRIHET_API_KEYJa--
FRIHET_API_URLNeinhttps://api.frihet.io/v1
FRIHET_MCP_DEBUGNein0
  • FRIHET_API_URL ist nützlich, wenn Sie auf eine Staging-Umgebung oder eine benutzerdefinierte Instanz zeigen. Es muss https:// mit einem Hostnamen unter frihet.io sein.
  • FRIHET_MCP_DEBUG=1 aktiviert Debug-Level-Logs (nützlich zur Diagnose von Problemen).

OAuth-Flow

Der MCP-Server unterstützt neben der manuellen API-Schlüssel-Authentifizierung auch OAuth. Wenn ein MCP-Client den OAuth-Flow initiiert:

  1. Der Benutzer authentifiziert sich über Firebase Auth (E-Mail, Google, GitHub oder Microsoft)
  2. Der Client sendet das Sitzungstoken an POST /api/oauth/api-key
  3. Der Server stellt einen neuen Schlüssel fri_xxx... mit der Bezeichnung „MCP OAuth“ und einer Gültigkeit von 365 Tagen bereit
  4. Der Schlüssel wird automatisch für nachfolgende Aufrufe verwendet

Dies ermöglicht es Benutzern, den MCP-Server zu verbinden, ohne Schlüssel manuell kopieren zu müssen.


Verfügbare Tools (44)

Der Server stellt 52 Tools zur Verfügung, die in 7 Kategorien organisiert sind. Jedes Tool enthält eine strukturierte Ausgabe (outputSchema + structuredContent), damit Assistenten Antworten zuverlässig parsen können, sowie Sicherheits- und Inhaltsanmerkungen. Zweisprachig (EN/ES).

Rechnungen (6 Tools)

ToolBeschreibungSchlüsselparameter
list_invoicesListet Rechnungen mit Paginierung auflimit, offset
get_invoiceRuft eine Rechnung anhand der ID abid
create_invoiceErstellt eine Rechnung mit DetailpositionenclientName, items[] (description, quantity, unitPrice), status, dueDate, notes, taxRate
update_invoiceAktualisiert Felder einer Rechnung (teilweise)id, und jedes zu ändernde Feld
delete_invoiceLöscht eine Rechnung dauerhaftid
search_invoicesSucht Rechnungen nach KundennameclientName, limit, offset

Mögliche Rechnungsstatus: draft, sent, paid, overdue, cancelled

Ausgaben (5 Tools)

ToolBeschreibungSchlüsselparameter
list_expensesListet Ausgaben mit Paginierung auflimit, offset
get_expenseRuft eine Ausgabe anhand der ID abid
create_expenseErfasst eine neue Ausgabedescription, amount, category, date, vendor, taxDeductible
update_expenseÄndert eine bestehende Ausgabe (teilweise)id, und jedes zu ändernde Feld
delete_expenseLöscht eine Ausgabe dauerhaftid

Kunden (5 Tools)

ToolBeschreibungSchlüsselparameter
list_clientsListet alle Kunden auflimit, offset
get_clientRuft einen Kunden anhand der ID abid
create_clientErfasst einen neuen Kundenname, email, phone, taxId, address (street, city, state, postalCode, country)
update_clientAktualisiert Kundendaten (teilweise)id, und jedes zu ändernde Feld
delete_clientLöscht einen Kunden dauerhaftid

Produkte (5 Tools)

ToolBeschreibungSchlüsselparameter
list_productsListet Produkte und Dienstleistungen auflimit, offset
get_productRuft ein Produkt anhand der ID abid
create_productErstellt ein Produkt oder eine Dienstleistungname, unitPrice, description, taxRate
update_productÄndert ein bestehendes Produkt (teilweise)id, und jedes zu ändernde Feld
delete_productLöscht ein Produkt dauerhaftid

Angebote (5 Tools)

ToolBeschreibungSchlüsselparameter
list_quotesListet Angebote auflimit, offset
get_quoteRuft ein Angebot anhand der ID abid
create_quoteErstellt ein Angebot für einen KundenclientName, items[] (description, quantity, unitPrice), validUntil, notes, status
update_quoteÄndert ein Angebot (teilweise)id, und jedes zu ändernde Feld
delete_quoteLöscht ein Angebot dauerhaftid

Mögliche Angebotsstatus: draft, sent, accepted, rejected, expired

Webhooks (5 Tools)

ToolBeschreibungSchlüsselparameter
list_webhooksListet konfigurierte Webhooks auflimit, offset
get_webhookRuft die Konfiguration eines Webhooks abid
create_webhookRegistriert einen Webhook-Endpointurl, events[], active, secret
update_webhookÄndert einen bestehenden Webhookid, und jedes zu ändernde Feld
delete_webhookLöscht einen Webhook dauerhaftid

Verfügbare Webhook-Ereignisse: invoice.created, invoice.updated, invoice.deleted, invoice.paid, expense.created, expense.updated, expense.deleted, client.created, client.updated, client.deleted, product.created, product.updated, product.deleted, quote.accepted. Siehe Webhooks für das Payload-Format und die HMAC-Verifizierung.


Verfügbare Ressourcen (8)

MCP-Ressourcen sind Referenzdaten, die der Assistent abrufen kann, ohne API-Aufrufe tätigen zu müssen. Sie sind statisch und immer zugänglich.

RessourceURIBeschreibung
API-Schemafrihet://api/schemaÜbersicht über Endpoints, Authentifizierung, Rate Limits und Fehlercodes
Steuersätzefrihet://tax/ratesMwSt. (21/10/4%), IGIC (7/3/0%), IPSI, innergemeinschaftlich, Einkommensteuer (15%/7%)
Steuerkalenderfrihet://tax/calendarVierteljährliche Einreichungsfristen (Modell 303, 130, 420, 390)
Ausgabenkategorienfrihet://config/expense-categories8 Kategorien mit Abzugsfähigkeitsregeln und steuerlicher Behandlung
Rechnungsstatusfrihet://config/invoice-statusesStatusfluss (Entwurf, gesendet, bezahlt, überfällig, storniert) mit Triggern
Lieferantenfrihet://config/vendorsListe der registrierten Lieferanten mit Steuer- und Kontaktdaten
Aktive Integrationenfrihet://config/integrationsStatus der verbundenen Integrationen (Stripe, Shopify usw.)
Geschäftskonfigurationfrihet://config/businessSteuerdaten des Unternehmens, Steuerzone, Währung und Präferenzen

Verfügbare Prompts (7)

Prompts sind geführte Workflows, die der Assistent Schritt für Schritt ausführt. Sie werden nach Namen aufgerufen.

PromptBeschreibungParameter
monthly-closeMonatsabschluss: Überprüft unbezahlte Rechnungen, kategorisiert Ausgaben, prüft Steuerpflichten, erstellt eine Zusammenfassungmonth (optional)
onboard-clientKunden-Onboarding: Ermittelt den Steuersatz basierend auf dem Standort, erstellt einen Eintrag, generiert ein WillkommensangebotclientName, country, region
quarterly-tax-prepQuartals-Steuervorbereitung: Sammelt Rechnungen, berechnet MwSt./IGIC, generiert eine Vorschau der Modelle 303/130quarter, fiscalZone
overdue-followupMahnwesen: Identifiziert überfällige Rechnungen, gruppiert nach Kunden, formuliert Mahnschreiben
expense-batchAusgaben-Stapelverarbeitung: Kategorisiert, wendet Steuern an, prüft Abzugsfähigkeit, erstellt mit BestätigungfiscalZone
vendor-analysisLieferantenanalyse: Gruppiert Ausgaben nach Lieferanten, berechnet Summen, identifiziert Trends und Einsparpotenzialeperiod (optional)
business-healthGeschäftsgesundheit: Wichtige KPIs, Vergleich zum Vormonat, Warnungen und umsetzbare Empfehlungenmonth (optional)
tipp

Sie können einen Prompt direkt aufrufen: "Führen Sie den Monatsabschluss für Februar aus" oder "Bereiten Sie die Steuern für Q1 vor".


Anwendungsbeispiele

Dies sind reale Anfragen in natürlicher Sprache, die der Assistent in MCP-Tool-Aufrufe übersetzt.

Eine Rechnung erstellen

"Erstellen Sie eine Rechnung für Acme SL mit 10 Stunden Beratung zu 95 EUR/Stunde, Fälligkeit 15. März"

Der Assistent ruft create_invoice mit clientName: "Acme SL", einer Detailposition (10 x 95) und dueDate: "2026-03-15" auf. Er berechnet den Gesamtbetrag automatisch.

Eine Ausgabe erfassen

"Erfassen Sie eine Ausgabe von 59.99 EUR für Adobe Creative Cloud, Kategorie Software, abzugsfähig"

Ruft create_expense mit description, amount: 59.99, category: "software" und taxDeductible: true auf.

Rechnungen eines Kunden suchen

"Suchen Sie alle Rechnungen von TechStart SL"

Ruft search_invoices mit clientName: "TechStart SL" auf und gibt die Übereinstimmungen mit ihren Gesamtsummen und Status zurück.

Überfällige Rechnungen abfragen

"Zeigen Sie mir alle unbezahlten Rechnungen"

Ruft list_invoices auf und filtert nach status: "sent" oder "overdue", wobei die überfälligen Rechnungen nach Betrag sortiert angezeigt werden.

Einen Kunden anlegen

"Neuer Kunde: Design Studio SL, NIF B87654321, E-Mail hola@designstudio.es, Madrid 28001"

Ruft create_client mit Name, NIF, E-Mail und Adresse auf.

Automatisierung konfigurieren

"Erstellen Sie einen Webhook, um https://meine-app.com/hook zu benachrichtigen, wenn eine Rechnung bezahlt wird"

Ruft create_webhook mit url und events: ["invoice.paid"] auf.

Ein Produkt aktualisieren

"Erhöhen Sie den Preis für die Beratungsstunde auf 85 EUR"

Ruft update_product mit der Produkt-ID und unitPrice: 85 auf. Es wird nur das angegebene Feld geändert.


Beobachtbarkeit

Der MCP-Server v1.5.1 umfasst strukturiertes Logging und Tool-Metriken.

Strukturiertes Logging

Alle Logs werden als JSON an stderr ausgegeben (MCP verwendet stdout für Protokollnachrichten). Jeder Eintrag enthält:

  • level: debug, info, warn, error
  • service: immer frihet-mcp
  • timestamp: ISO 8601
  • tool: Name des Tools (falls zutreffend)
  • operation: Art des Vorgangs (tool_call, api_call, api_retry, startup, shutdown_metrics)
  • durationMs: Ausführungszeit in Millisekunden
  • error: Fehlerdetails (message, code, statusCode)

Aktivieren Sie die Debug-Logs mit FRIHET_MCP_DEBUG=1.

Tool-Metriken

Der Server protokolliert im Speicher die Aufrufe jedes Tools: Anzahl der Aufrufe, Fehler und durchschnittliche Dauer. Beim Herunterfahren des Servers (SIGINT/SIGTERM) wird eine Zusammenfassung ausgegeben:

{
"level": "info",
"message": "Herunterfahren nach 3600s – 42 Aufrufe, 1 Fehler",
"operation": "shutdown_metrics",
"metadata": {
"tools": {
"list_invoices": { "calls": 15, "errors": 0, "avgMs": 230 },
"create_invoice": { "calls": 8, "errors": 1, "avgMs": 450 }
},
"uptime": 3600
}
}

Automatische Rate-Limit-Wiederholung

Wenn die API mit 429 antwortet, versucht der Server automatisch mit exponentiellem Backoff erneut (bis zu 3 Wiederholungen). Die Wiederholungen werden im Log protokolliert:

{
"level": "warn",
"message": "Rate limitiert, GET /invoices wird erneut versucht (Versuch 2, Verzögerung 2000ms)",
"operation": "api_retry"
}

Sie müssen das Rate Limiting nicht manuell verwalten – der Server übernimmt das für Sie.


Transport

Der Frihet MCP-Server unterstützt zwei Transportmodi. Beide stellen dieselben 52 Tools, 11 Ressourcen und 10 Prompts zur Verfügung.

Lokal (stdio)

Der Server läuft als lokaler Prozess auf Ihrem Rechner. Die Kommunikation zwischen dem MCP-Client und dem Server erfolgt über Standard-Ein-/Ausgabe (stdin/stdout).

  • Erfordert: Node.js installiert (wird automatisch über npx heruntergeladen)
  • Vorteil: Geringere Latenz, funktioniert ohne Internetverbindung (außer für API-Aufrufe)
  • Anwendungsfall: Tägliche Entwicklung, intensive Nutzung, Unternehmensumgebungen mit Netzwerkbeschränkungen

Remote (streamable-http)

Der Server läuft auf Cloudflare Workers. Ihr MCP-Client verbindet sich direkt mit https://mcp.frihet.io/mcp über HTTP.

  • Erfordert: Nur Internetverbindung
  • Vorteil: Keine lokale Installation, keine Abhängigkeiten, funktioniert auf jedem Gerät
  • Anwendungsfall: Schnelle Konfiguration, Teams, die keine Pakete installieren möchten, Clients, die nur HTTP-Transport unterstützen
info

Wenn Ihr MCP-Client streamable-http nicht unterstützt (einige ältere Clients unterstützen nur stdio), verwenden Sie den lokalen Modus.


Fehlerbehandlung

Rate Limiting

Die API erlaubt 100 Anfragen pro Minute pro Schlüssel. Wenn das Limit überschritten wird, gibt der Server einen 429-Fehler mit der Wartezeit in retryAfter zurück.

Der MCP-Server verwaltet das Rate Limiting automatisch mit exponentiellem Backoff: er versucht die Anfrage nach der angegebenen Wartezeit erneut, ohne Benutzereingriff. Maximal 3 Wiederholungen.

Authentifizierungsfehler

CodeUrsacheLösung
401Ungültiger, abgelaufener oder nicht angegebener API-SchlüsselÜberprüfen Sie, ob der Schlüssel in Ihrer Konfiguration mit fri_ beginnt und nicht abgelaufen ist
403Der Schlüssel hat keine Berechtigungen für diese RessourceGenerieren Sie einen neuen Schlüssel mit den erforderlichen Berechtigungen

Andere Fehler

CodeBeschreibung
400Falsche Parameter oder fehlende Pflichtfelder
404Die angeforderte Ressource existiert nicht
408Anfrage-Timeout (30 Sekunden)
413Der Anfragekörper überschreitet 1 MB
422Gültige, aber nicht verarbeitbare Daten (z. B. Steuerprofil nicht konfiguriert)
429Anfragelimit überschritten (wird automatisch erneut versucht)
500Interner Serverfehler

Alle Fehler geben eine beschreibende zweisprachige (EN/ES) Nachricht zurück, damit der Assistent das Problem dem Benutzer klar mitteilen kann.


Limits

KonzeptWert
Anfragen pro Minute100 pro API-Schlüssel
Ergebnisse pro SeiteMaximal 100 (Standard 50)
AnfragekörperMaximal 1 MB
Webhook-PayloadMaximal 100 KB
Webhooks pro KontoMaximal 20
Anfrage-Timeout30 Sekunden
Wiederholungen bei Rate LimitMaximal 3

Unterschied zur REST-API

MCP-ServerREST-API
Gerichtet anKI-Assistenten (Claude, Cursor, Windsurf)Anwendungen, Skripte, Integrationen
KommunikationNatürliche Sprache über den MCP-ClientDirekt HTTP/JSON
AuthentifizierungUmgebungsvariable in der Client-Konfiguration (oder OAuth)Header X-API-Key oder Authorization: Bearer
FormatFormatierter Text + strukturierte Ausgabe für den AssistentenRohes JSON
Rate LimitingAutomatisch verwaltet (exponentieller Backoff, 3 Wiederholungen)Manuell (der Consumer muss Wiederholungen implementieren)
BeobachtbarkeitStrukturiertes Logging + Metriken pro ToolAnfragelogs über X-Request-Id
AnwendungsfallMit Ihrem ERP aus der IDE sprechenProgrammgesteuerte Integrationen erstellen

Intern übersetzt der MCP-Server jeden Tool-Aufruf in eine Anfrage an die REST-API. Er dupliziert keine Logik – er ist eine zustandslose Brücke.


Entwicklung

Um beizutragen oder den Server im Entwicklungsmodus auszuführen:

git clone https://github.com/Frihet-io/frihet-mcp.git
cd frihet-mcp
npm install
npm run build

Lokal ausführen:

FRIHET_API_KEY=fri_tu_clave node dist/index.js

Mit Debug-Logs ausführen:

FRIHET_MCP_DEBUG=1 FRIHET_API_KEY=fri_tu_clave node dist/index.js

Mit dem MCP Inspector testen:

npx @modelcontextprotocol/inspector node dist/index.js

Verwandte Ressourcen


Zurück: Webhooks | Weiter: Skill für Claude Code