Skip to main content

MCP-server

Frihets MCP-server implementerer Model Context Protocol slik at AI-assistenter kan interagere direkte med ditt ERP. Opprette fakturaer, registrere utgifter, konsultere kunder eller administrere tilbud — alt fra din IDE eller terminal, i naturlig språk.

Nåværende versjon: 1.5.1 | 52 verktøy | 11 ressurser | 10 prompter | Strukturert output | Kompatibel med 30+ AI-agenter.

Du:      "Opprett en faktura for TechStart SL, 40 timer konsulentarbeid til 75 EUR/time, forfall 1. mars"
Claude: Ferdig. Faktura INV-2026-089 opprettet. Totalt: 3.000,00 EUR + 21% mva = 3.630,00 EUR.

Hva du kan forvente (og hva du ikke kan)

MCP-serveren er en stateless bro mellom din AI-assistent og Frihets REST API. Hvert verktøykall oversettes til en HTTP-forespørsel til API-et.

Hva den GJØR:

  • Fullstendig CRUD for fakturaer, utgifter, kunder, produkter, tilbud og webhooks
  • Søk etter fakturaer etter kundenavn
  • Tilgang til referansedata (skattesatser, skattekalender, kategorier)
  • Veiledede arbeidsflyter (månedlig avslutning, skatteforberedelse, oppfølging av forfalte betalinger)

Hva den IKKE gjør:

  • OCR av dokumenter (dette gjøres av AI-assistenten i appen)
  • Generering av PDF-er (bruk REST API direkte: GET /v1/invoices/:id/pdf)
  • Betalingsbehandling (innkrevinger håndteres via Stripe Connect i appen)

Krav

  • Frihet-konto med API-tilgang (betalte planer)
  • API-nøkkel generert fra panelet

Hente API-nøkkelen

  1. Logg inn på app.frihet.io
  2. Gå til Innstillinger > Utviklere > API-nøkler
  3. Klikk Opprett API-nøkkel
  4. Kopier nøkkelen (starter med fri_) — den vises kun én gang

Installasjon

Universal (30+ agenter)

Den raskeste måten å installere MCP-serveren og forretningsferdigheten:

npx skills add Frihet-io/frihet-mcp

Fungerer med Claude Code, Cursor, Copilot, Codex, Windsurf, Gemini CLI, Goose, Roo Code, og 30+ flere agenter.

MCP Registry

Serveren er registrert som io.frihet/erp i det offisielle MCP Registry. MCP-klienter som støtter registeret kan automatisk oppdage og installere det via dets kanoniske navn.

Direkte npx

npx -y @frihet/mcp-server@latest

Du trenger ikke å installere noe globalt. npx laster ned og kjører den nyeste versjonen automatisk.

Manuell konfigurasjon

Det er to tilkoblingsmoduser: lokal (serveren kjører på din maskin via npx) og ekstern (direkte tilkobling til mcp.frihet.io, uten installasjon).

Lokal (stdio)

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

Ekstern (streamable-http)

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

Konfigurasjon per klient

JSON-strukturen er identisk på tvers av alle klienter. Kun plasseringen av konfigurasjonsfilen endres.

KlientKonfigurasjonsfil
Claude Code~/.claude/mcp.json
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Cursor.cursor/mcp.json eller ~/.cursor/mcp.json
Windsurf~/.windsurf/mcp.json
ClineVS Code-konfigurasjon eller .cline/mcp.json
Codex CLI~/.codex/config.toml (MCP-seksjon)
tip

Hvis du bruker Claude Code, kan du legge til serveren med én enkelt kommando:

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

Deretter konfigurerer du variabelen FRIHET_API_KEY i den resulterende filen ~/.claude/mcp.json.

Miljøvariabler

VariabelObligatoriskStandardverdi
FRIHET_API_KEYJa--
FRIHET_API_URLNeihttps://api.frihet.io/v1
FRIHET_MCP_DEBUGNei0
  • FRIHET_API_URL er nyttig hvis du peker mot et staging-miljø eller en tilpasset instans. Den må være https:// med et vertsnavn under frihet.io.
  • FRIHET_MCP_DEBUG=1 aktiverer debug-nivå logger (nyttig for å diagnostisere problemer).

OAuth-flyt

MCP-serveren støtter OAuth-autentisering i tillegg til manuell API-nøkkel. Når en MCP-klient starter OAuth-flyten:

  1. Brukeren autentiserer via Firebase Auth (e-post, Google, GitHub eller Microsoft)
  2. Klienten sender sesjonstokenet til POST /api/oauth/api-key
  3. Serveren provisionerer en ny nøkkel fri_xxx... merket "MCP OAuth" med en utløpsdato på 365 dager
  4. Nøkkelen brukes automatisk for påfølgende kall

Dette lar brukere koble til MCP-serveren uten å kopiere nøkler manuelt.


Tilgjengelige verktøy (44)

Serveren eksponerer 52 verktøy organisert i 7 kategorier. Hvert verktøy inkluderer strukturert output (outputSchema + structuredContent) slik at assistenter kan parse svar på en pålitelig måte, i tillegg til sikkerhets- og innholdsannotasjoner. Tospråklig (EN/ES).

Fakturaer (6 verktøy)

VerktøyBeskrivelseNøkkelparametere
list_invoicesViser fakturaer med pagineringlimit, offset
get_invoiceHenter en faktura etter IDid
create_invoiceOppretter en faktura med detaljlinjerclientName, items[] (description, quantity, unitPrice), status, dueDate, notes, taxRate
update_invoiceOppdaterer felt i en faktura (delvis)id, og alle felt som skal endres
delete_invoiceSletter en faktura permanentid
search_invoicesSøker etter fakturaer etter kundenavnclientName, limit, offset

Mulige fakturastatuser: utkast, sendt, betalt, forfalt, kansellert

Utgifter (5 verktøy)

VerktøyBeskrivelseNøkkelparametere
list_expensesViser utgifter med pagineringlimit, offset
get_expenseHenter en utgift etter IDid
create_expenseRegistrerer en ny utgiftdescription, amount, category, date, vendor, taxDeductible
update_expenseEndrer en eksisterende utgift (delvis)id, og alle felt som skal endres
delete_expenseSletter en utgift permanentid

Kunder (5 verktøy)

VerktøyBeskrivelseNøkkelparametere
list_clientsViser alle kunderlimit, offset
get_clientHenter en kunde etter IDid
create_clientRegistrerer en ny kundename, email, phone, taxId, address (street, city, state, postalCode, country)
update_clientOppdaterer kundedata (delvis)id, og alle felt som skal endres
delete_clientSletter en kunde permanentid

Produkter (5 verktøy)

VerktøyBeskrivelseNøkkelparametere
list_productsViser produkter og tjenesterlimit, offset
get_productHenter et produkt etter IDid
create_productOppretter et produkt eller en tjenestename, unitPrice, description, taxRate
update_productEndrer et eksisterende produkt (delvis)id, og alle felt som skal endres
delete_productSletter et produkt permanentid

Tilbud (5 verktøy)

VerktøyBeskrivelseNøkkelparametere
list_quotesViser tilbudlimit, offset
get_quoteHenter et tilbud etter IDid
create_quoteOppretter et tilbud for en kundeclientName, items[] (description, quantity, unitPrice), validUntil, notes, status
update_quoteEndrer et tilbud (delvis)id, og alle felt som skal endres
delete_quoteSletter et tilbud permanentid

Mulige tilbudsstatuser: utkast, sendt, akseptert, avvist, utløpt

Webhooks (5 verktøy)

VerktøyBeskrivelseNøkkelparametere
list_webhooksViser konfigurerte webhookslimit, offset
get_webhookHenter webhook-konfigurasjonid
create_webhookRegistrerer et webhook-endepunkturl, events[], active, secret
update_webhookEndrer en eksisterende webhookid, og alle felt som skal endres
delete_webhookSletter en webhook permanentid

Tilgjengelige webhook-hendelser: 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. Se Webhooks for nyttelastformat og HMAC-verifisering.


Tilgjengelige ressurser (8)

MCP-ressurser er referansedata som assistenten kan konsultere uten å gjøre API-kall. De er statiske og alltid tilgjengelige.

RessursURIBeskrivelse
API-skjemafrihet://api/schemaSammendrag av endepunkter, autentisering, rate limits og feilkoder
Skattesatserfrihet://tax/ratesmva (21/10/4%), IGIC (7/3/0%), IPSI, intra-europeisk, IRPF (15%/7%)
Skattekalenderfrihet://tax/calendarKvartalsvise innleveringsfrister (Model 303, 130, 420, 390)
Utgiftskategorierfrihet://config/expense-categories8 kategorier med fradragsregler og skattebehandling
Fakturastatuserfrihet://config/invoice-statusesStatusflyt (utkast, sendt, betalt, forfalt, kansellert) med triggere
Leverandørerfrihet://config/vendorsListe over registrerte leverandører med skatte- og kontaktopplysninger
Aktive integrasjonerfrihet://config/integrationsStatus for tilkoblede integrasjoner (Stripe, Shopify, etc.)
Forretningskonfigurasjonfrihet://config/businessSelskapets skattedata, skattesone, valuta og preferanser

Tilgjengelige prompter (7)

Promptere er veiledede arbeidsflyter som assistenten utfører trinn for trinn. De kalles opp etter navn.

PromptBeskrivelseParametere
monthly-closeMånedlig avslutning: gjennomgår ubetalte fakturaer, kategoriserer utgifter, verifiserer skatteforpliktelser, genererer oppsummeringmonth (valgfritt)
onboard-clientKundeopptak: bestemmer skattesats basert på lokasjon, oppretter registeroppføring, genererer velkomsttilbudclientName, country, region
quarterly-tax-prepKvartalsvis skatteforberedelse: samler fakturaer, beregner mva/IGIC, genererer forhåndsvisning av Model 303/130quarter, fiscalZone
overdue-followupOppfølging av forfalte betalinger: identifiserer forfalte fakturaer, grupperer etter kunde, utarbeider innkrevelsesmeldinger
expense-batchBatchbehandling av utgifter: kategoriserer, anvender skatter, verifiserer fradragsrett, oppretter med bekreftelsefiscalZone
vendor-analysisLeverandøranalyse: grupperer utgifter etter leverandør, beregner totaler, identifiserer trender og sparemuligheterperiod (valgfritt)
business-healthForretningshelse-diagnose: nøkkel-KPI-er, sammenligning med forrige måned, varsler og handlingsorienterte anbefalingermonth (valgfritt)
tip

Du kan påkalle en prompt direkte: "Utfør månedlig avslutning for februar" eller "Forbered skattene for Q1".


Eksempler på bruk

Dette er reelle forespørsler i naturlig språk som assistenten oversetter til MCP-verktøykall.

Opprette en faktura

"Opprett en faktura for Acme SL med 10 timer konsulentarbeid til 95 EUR/time, forfall 15. mars"

Assistenten kaller create_invoice med clientName: "Acme SL", en detaljlinje (10 x 95) og dueDate: "2026-03-15". Den beregner totalen automatisk.

Registrere en utgift

"Registrer en utgift på 59.99 EUR for Adobe Creative Cloud, kategori programvare, fradragsberettiget"

Den kaller create_expense med description, amount: 59.99, category: "software" og taxDeductible: true.

Søke etter fakturaer fra en kunde

"Søk etter alle fakturaer fra TechStart SL"

Den kaller search_invoices med clientName: "TechStart SL" og returnerer treffene med deres totaler og statuser.

Konsultere forfalte betalinger

"Vis meg alle ubetalte fakturaer"

Den kaller list_invoices og filtrerer etter status: "sent" eller "overdue", og viser de forfalte fakturaene sortert etter beløp.

Registrere en kunde

"Ny kunde: Design Studio SL, NIF B87654321, e-post hola@designstudio.es, Madrid 28001"

Den kaller create_client med navn, NIF, e-post og adresse.

Konfigurere automatisering

"Opprett en webhook for å varsle https://mi-app.com/hook når en faktura blir betalt"

Den kaller create_webhook med url og events: ["invoice.paid"].

Oppdatere et produkt

"Øk prisen for konsulenttimen til 85 EUR"

Den kaller update_product med produktets id og unitPrice: 85. Kun det angitte feltet endres.


Observabilitet

MCP-server v1.5.1 inkluderer strukturert logging og verktøymetriker.

Strukturert logging

Alle logger sendes ut som JSON til stderr (MCP bruker stdout for protokollmeldinger). Hver oppføring inkluderer:

  • level: debug, info, warn, error
  • service: alltid frihet-mcp
  • timestamp: ISO 8601
  • tool: verktøyets navn (når aktuelt)
  • operation: operasjonstype (tool_call, api_call, api_retry, startup, shutdown_metrics)
  • durationMs: utførelsestid i millisekunder
  • error: feildetaljer (message, code, statusCode)

Aktiver debug-logger med FRIHET_MCP_DEBUG=1.

Verktøymetriker

Serveren logger i minnet kall til hvert verktøy: antall kall, feil og gjennomsnittlig varighet. Når serveren avsluttes (SIGINT/SIGTERM), sendes en oppsummering ut:

{
"level": "info",
"message": "Nedstenging etter 3600s — 42 kall, 1 feil",
"operation": "shutdown_metrics",
"metadata": {
"tools": {
"list_invoices": { "calls": 15, "errors": 0, "avgMs": 230 },
"create_invoice": { "calls": 8, "errors": 1, "avgMs": 450 }
},
"uptime": 3600
}
}

Automatisk rate-limit gjenforsøk

Når API-et svarer med 429, prøver serveren automatisk igjen med eksponensiell backoff (opptil 3 gjenforsøk). Gjenforsøkene logges:

{
"level": "warn",
"message": "Rate begrenset, prøver igjen GET /invoices (forsøk 2, forsinkelse 2000ms)",
"operation": "api_retry"
}

Du trenger ikke å håndtere rate limiting manuelt — serveren gjør det for deg.


Transport

Frihets MCP-server støtter to transportmoduser. Begge eksponerer de samme 52 verktøyene, 11 ressursene og 10 promptene.

Lokal (stdio)

Serveren kjører som en lokal prosess på maskinen din. Kommunikasjonen mellom MCP-klienten og serveren bruker standard inn-/utgang (stdin/stdout).

  • Krever: Node.js installert (lastes ned automatisk via npx)
  • Fordel: Lavere ventetid, fungerer uten internettforbindelse (unntatt for API-kallene)
  • Bruksområde: Daglig utvikling, intensiv bruk, bedriftsmiljøer med nettverksrestriksjoner

Ekstern (streamable-http)

Serveren kjører på Cloudflare Workers. Din MCP-klient kobler direkte til https://mcp.frihet.io/mcp via HTTP.

  • Krever: Kun internettforbindelse
  • Fordel: Ingen lokal installasjon, ingen avhengigheter, fungerer på alle enheter
  • Bruksområde: Rask konfigurasjon, team som foretrekker å ikke installere pakker, klienter som kun støtter HTTP-transport
info

Hvis din MCP-klient ikke støtter streamable-http (noen eldre klienter støtter kun stdio), bruk lokal modus.


Feilhåndtering

Rate limiting

API-et tillater 100 forespørsler per minutt per nøkkel. Hvis grensen overskrides, returnerer serveren en 429-feil med ventetiden i retryAfter.

MCP-serveren håndterer rate limiting automatisk med eksponensiell backoff: den prøver forespørselen igjen etter å ha ventet den angitte tiden, uten brukerinvolvering. Maksimalt 3 gjenforsøk.

Autentiseringsfeil

KodeÅrsakLøsning
401Ugyldig, utløpt eller ikke oppgitt API-nøkkelVerifiser at nøkkelen i din konfigurasjon starter med fri_ og ikke er utløpt
403Nøkkelen har ikke tilgang til denne ressursenGenerer en ny nøkkel med de nødvendige tillatelsene

Andre feil

KodeBeskrivelse
400Feil parametere eller manglende obligatoriske felt
404Den forespurte ressursen eksisterer ikke
408Forespørsel timeout (30 sekunder)
413Forespørselens brødtekst overskrider 1 MB
422Gyldige data, men kan ikke behandles (f.eks. skatteprofil ikke konfigurert)
429Grense for forespørsler overskredet (prøves igjen automatisk)
500Intern serverfeil

Alle feil returnerer en beskrivende tospråklig melding (EN/ES) slik at assistenten kan kommunisere problemet til brukeren på en klar måte.


Grenser

KonseptVerdi
Forespørsler per minutt100 per API-nøkkel
Resultater per side100 maksimum (50 som standard)
Forespørselens brødtekst1 MB maksimum
Webhook-nyttelast100 KB maksimum
Webhooks per konto20 maksimum
Forespørsel timeout30 sekunder
Gjenforsøk for rate limit3 maksimum

Forskjell med REST API

MCP-serverREST API
Rettet motAI-assistenter (Claude, Cursor, Windsurf)Applikasjoner, skript, integrasjoner
KommunikasjonNaturlig språk via MCP-klientenDirekte HTTP/JSON
AutentiseringMiljøvariabel i klientkonfigurasjonen (eller OAuth)Header X-API-Key eller Authorization: Bearer
FormatFormatert tekst + strukturert output for assistentenRå JSON
Rate limitingHåndteres automatisk (eksponensiell backoff, 3 gjenforsøk)Manuell (konsumenten må implementere gjenforsøk)
ObservabilitetStrukturert logging + metrikker per verktøyForespørselslogger via X-Request-Id
BruksområdeKommunisere med ditt ERP fra IDE-enBygge programmatiske integrasjoner

Internt oversetter MCP-serveren hvert verktøykall til en forespørsel til REST API-et. Den dupliserer ikke logikk — det er en stateless bro.


Utvikling

For å bidra eller kjøre serveren i utviklingsmodus:

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

Kjør lokalt:

FRIHET_API_KEY=fri_tu_clave node dist/index.js

Kjør med debug-logger:

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

Test med MCP Inspector:

npx @modelcontextprotocol/inspector node dist/index.js

Relaterte ressurser


Forrige: Webhooks | Neste: Skill for Claude Code