MCP Server and Claude Code Skill
The Frihet MCP server connects your AI assistant directly to your ERP. Create invoices by talking. Query expenses in natural language. Manage your entire business from your IDE.
You: "Create an invoice for TechStart SL, 40 hours of consulting at 75 EUR/hour, due March 1st"
Claude: Done. Invoice INV-2026-089 created. Total: 3,000.00 EUR + 21% VAT = 3,630.00 EUR.
31 tools. 6 resources. Zero boilerplate.
Install
Requirements
- Claude Code, Claude Desktop, Cursor, Windsurf, Cline, or any MCP-compatible tool
- A Frihet account with API access (paid plans)
Local install (stdio transport)
Add this to your MCP config file:
{
"mcpServers": {
"frihet": {
"command": "npx",
"args": ["-y", "@frihet/mcp-server"],
"env": {
"FRIHET_API_KEY": "fri_your_key_here"
}
}
}
}
| Tool | Config file |
|---|---|
| Claude Code | ~/.claude/mcp.json |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Cursor | .cursor/mcp.json or ~/.cursor/mcp.json |
| Windsurf | ~/.windsurf/mcp.json |
| Cline | VS Code settings or .cline/mcp.json |
The JSON config is identical for all tools. Only the file path changes.
Remote (no install)
Use the hosted endpoint at mcp.frihet.io — no local dependencies:
{
"mcpServers": {
"frihet": {
"type": "streamable-http",
"url": "https://mcp.frihet.io/mcp",
"headers": {
"Authorization": "Bearer fri_your_key_here"
}
}
}
}
Same 31 tools, zero local setup. Runs on Cloudflare Workers.
Get your API key
- Log into app.frihet.io
- Go to Settings > API
- Click Create API key
- Copy the key (starts with
fri_) — it's shown only once
What you can do
These are real prompts, not marketing copy.
Invoicing
"Show me all unpaid invoices"
"Create an invoice for Acme SL with 10h of consulting at 95/hour"
"Mark invoice abc123 as paid"
"How much has Acme SL been invoiced this year?"
Expenses
"Log a 59.99 EUR expense for Adobe Creative Cloud, category: software, tax-deductible"
"List all expenses from January"
"What did I spend on travel last quarter?"
Clients
"Add a new client: TechStart SL, NIF B12345678, email admin@techstart.com"
"Show me all my clients"
"Update Acme SL's address to 1 Main Street, New York 10001"
Quotes
"Create a quote for Design Studio: logo design (2000 EUR) + brand guidelines (3500 EUR)"
"Show me all pending quotes"
Webhooks
"Set up a webhook to notify https://my-app.com/hook when invoices are paid"
"List all my active webhooks"
Tools reference
Invoices
| Tool | What it does |
|---|---|
list_invoices | List invoices with pagination |
get_invoice | Get full invoice details by ID |
create_invoice | Create a new invoice with line items |
update_invoice | Update any invoice field |
delete_invoice | Permanently delete an invoice |
search_invoices | Find invoices by client name |
Expenses
| Tool | What it does |
|---|---|
list_expenses | List expenses with pagination |
get_expense | Get expense details |
create_expense | Record a new expense |
update_expense | Modify an expense |
delete_expense | Delete an expense |
Clients
| Tool | What it does |
|---|---|
list_clients | List all clients |
get_client | Get client details |
create_client | Register a new client |
update_client | Update client info |
delete_client | Remove a client |
Products
| Tool | What it does |
|---|---|
list_products | List products and services |
get_product | Get product details |
create_product | Add a product or service |
update_product | Update pricing or details |
delete_product | Remove a product |
Quotes
| Tool | What it does |
|---|---|
list_quotes | List all quotes |
get_quote | Get quote details |
create_quote | Draft a new quote |
update_quote | Modify a quote |
delete_quote | Delete a quote |
Webhooks
| Tool | What it does |
|---|---|
list_webhooks | List configured webhooks |
get_webhook | Get webhook details |
create_webhook | Register a new webhook endpoint |
update_webhook | Modify events or URL |
delete_webhook | Remove a webhook |
Claude Code Skill
Beyond raw MCP tools, Frihet ships a Claude Code skill that adds business intelligence: workflow recipes, formatted financial reports, and natural language commands.
Install the skill
# Clone and symlink
git clone https://github.com/berthelius/frihet-mcp.git
ln -s "$(pwd)/frihet-mcp/skill" ~/.claude/skills/frihet
Or download just the skill file:
curl -sL https://raw.githubusercontent.com/berthelius/frihet-mcp/main/skill/SKILL.md \
-o ~/.claude/skills/frihet/SKILL.md --create-dirs
Skill commands
| Command | What it does |
|---|---|
/frihet status | Account overview: recent invoices, pending payments, month expenses |
/frihet invoice | Create, list, or search invoices |
/frihet expense | Log and query expenses |
/frihet clients | Manage your client database |
/frihet quote | Create and manage quotes |
/frihet report | Financial summaries (P&L, quarterly, overdue) |
/frihet webhooks | Configure automation triggers |
/frihet setup | Guided setup and connection test |
Example: Create an invoice
/frihet invoice "Acme SL, 40 hours of consulting at 75 EUR/hour, due March 1st"
The skill creates the invoice with line items, calculates VAT at 21%, and confirms the assigned number.
Example: Log expenses fast
/frihet expense "47.50 gasoline Feb 15"
/frihet expense "Adobe CC 59.99 software"
/frihet expense "Client lunch 23.40 restaurant"
The skill infers the category and marks deductibility automatically.
Example: Quarterly tax prep
/frihet report quarterly
Calculates automatically:
- Output VAT (collected on invoices)
- Input VAT (paid on deductible expenses)
- Net amount due or credit
- Data ready for your quarterly tax return
Example: Overdue follow-up
/frihet report unpaid
Lists overdue invoices sorted by amount, days past due, and suggests follow-up actions.
Skill vs. MCP Server
| MCP Server | Skill | |
|---|---|---|
| Scope | 31 CRUD tools | Tools + business intelligence |
| Context | None | Tax rules, deductibility, calendar |
| Workflows | Single operations | Multi-step recipes (close, tax prep, conversion) |
| Output format | Raw JSON | Tables and readable summaries |
| Prerequisite | API key | API key + MCP server |
The skill uses the MCP server underneath. It doesn't duplicate logic — it adds context.
How it works
Your AI assistant frihet-mcp Frihet API
| | |
|-- "create invoice" --> | |
| |-- POST /invoices ->|
| |<-- 201 Created ----|
|<-- "Invoice created" --| |
The MCP server translates natural language tool calls into REST API requests. It handles authentication, rate limiting (automatic retry on 429), pagination, and error mapping.
Environment variables
| Variable | Required | Default |
|---|---|---|
FRIHET_API_KEY | Yes | — |
FRIHET_API_URL | No | https://api.frihet.io/v1 |
FRIHET_API_URL is useful if you point to a staging environment.
API limits
| Limit | Value |
|---|---|
| Requests per minute | 100 per API key |
| Results per page | 100 max (50 default) |
| Request body | 1 MB max |
| Webhook payload | 100 KB max |
| Webhooks per account | 20 max |
Rate limiting is handled automatically with exponential backoff.
Why Frihet MCP
| Frihet | Holded | Billin | Quipu | Anfix | |
|---|---|---|---|---|---|
| Official MCP server | Yes | No | No | No | No |
| Claude / Cursor / Windsurf | Yes | No | No | No | No |
| Public REST API | Yes | Yes | Limited | Yes | No |
| Webhooks with HMAC verification | Yes | No | No | No | No |
| AI assistant built-in | Yes | No | No | No | No |
| Open source tooling | Yes | No | No | No | No |
No other Spanish ERP has an official MCP server.
Security
- The API key is managed exclusively via environment variables in the MCP config
- The skill never displays, logs, or stores your API key
- All data travels encrypted between your AI assistant, the MCP server, and the Frihet API
- The MCP server is stateless — it stores nothing