io.github.jakobwennberg/fortnox

平台与服务

by jakobwennberg

用于集成 Fortnox 瑞典会计 API 的 MCP server,帮助 AI 或系统访问财务与账务相关能力。

什么是 io.github.jakobwennberg/fortnox

用于集成 Fortnox 瑞典会计 API 的 MCP server,帮助 AI 或系统访问财务与账务相关能力。

README

Fortnox MCP Server

An MCP (Model Context Protocol) server for integrating with the Fortnox Swedish accounting system. This server enables LLMs to interact with Fortnox for managing invoices, customers, suppliers, orders, accounts, vouchers, and provides business intelligence analytics.

Two Ways to Use

ModeBest ForSetup
Remote ModeEnd usersJust add URL, authorize in browser
Local ModeDevelopers, self-hostedConfigure environment variables

Quick Start: Remote Mode (Recommended)

The easiest way to use Fortnox MCP - no credentials needed, just authorize in your browser.

Option A: Add to Claude.ai (Web)

  1. Go to claude.ai
  2. Navigate to SettingsIntegrationsAdd Integration
  3. Enter the URL: https://fortnox-mcp.vercel.app/mcp
  4. Wait for it to load, then authorize access by clicking connect

Option B: Add to Claude Desktop

Open your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add this configuration:

json
{
  "mcpServers": {
    "fortnox": {
      "url": "https://fortnox-mcp.vercel.app/mcp"
    }
  }
}

Restart Claude Desktop. When you first ask Claude to do something with Fortnox, a browser window will open for you to authorize access to your Fortnox account. Once authorized, you're all set!


Quick Start: Local Mode (Self-Hosted)

For developers who want to run the server locally or use their own Fortnox app credentials.

1. Get your Fortnox credentials

  1. Register at Fortnox Developer Portal
  2. Create an application to get your Client ID and Client Secret
  3. Complete the OAuth2 flow to get a Refresh Token

2. Add to Claude Desktop

Open your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add this configuration:

json
{
  "mcpServers": {
    "fortnox": {
      "command": "npx",
      "args": ["-y", "fortnox-mcp-server"],
      "env": {
        "FORTNOX_CLIENT_ID": "your-client-id",
        "FORTNOX_CLIENT_SECRET": "your-client-secret",
        "FORTNOX_REFRESH_TOKEN": "your-refresh-token"
      }
    }
  }
}

3. Restart Claude Desktop

That's it! You can now ask Claude to manage your Fortnox invoices, customers, and more.


Features

Customer Management

  • fortnox_list_customers - List and search customers
  • fortnox_get_customer - Get customer details
  • fortnox_create_customer - Create new customer
  • fortnox_update_customer - Update customer
  • fortnox_delete_customer - Delete customer

Invoice Management

  • fortnox_list_invoices - List invoices with filtering
  • fortnox_get_invoice - Get invoice details with line items
  • fortnox_create_invoice - Create new invoice
  • fortnox_update_invoice - Update draft invoice
  • fortnox_bookkeep_invoice - Bookkeep invoice
  • fortnox_cancel_invoice - Cancel invoice
  • fortnox_credit_invoice - Create credit note
  • fortnox_send_invoice_email - Send invoice by email

Supplier Management

  • fortnox_list_suppliers - List and search suppliers
  • fortnox_get_supplier - Get supplier details
  • fortnox_create_supplier - Create new supplier
  • fortnox_update_supplier - Update supplier
  • fortnox_delete_supplier - Delete supplier

Supplier Invoice Management

  • fortnox_list_supplier_invoices - List supplier invoices with filtering
  • fortnox_get_supplier_invoice - Get supplier invoice details
  • fortnox_approve_supplier_invoice - Approve supplier invoice for payment
  • fortnox_payables_report - Get accounts payable aging report

Order Management

  • fortnox_list_orders - List sales orders with filtering
  • fortnox_list_offers - List offers/quotes with filtering

Account Management

  • fortnox_list_accounts - List chart of accounts
  • fortnox_get_account - Get account details
  • fortnox_create_account - Create new account
  • fortnox_update_account - Update account
  • fortnox_delete_account - Delete account

Voucher Management

  • fortnox_list_vouchers - List vouchers (journal entries)
  • fortnox_get_voucher - Get voucher details with rows
  • fortnox_create_voucher - Create manual voucher
  • fortnox_list_voucher_series - List available voucher series
  • fortnox_account_activity - Get activity for a specific account
  • fortnox_search_vouchers - Search vouchers by description, account, or amount

Company Information

  • fortnox_get_company_info - Get company details
  • fortnox_list_financial_years - List company financial years

Analytics

  • fortnox_invoice_summary - Get invoice statistics by period
  • fortnox_top_customers - Get top customers by revenue
  • fortnox_unpaid_report - Get detailed unpaid invoice report

Business Intelligence

  • fortnox_cash_flow_forecast - Forecast cash flow based on invoices and payables
  • fortnox_order_pipeline - Analyze sales order pipeline
  • fortnox_sales_funnel - Analyze sales funnel from offers to invoices
  • fortnox_product_performance - Analyze product/article performance
  • fortnox_period_comparison - Compare financial metrics across periods
  • fortnox_customer_growth - Analyze customer acquisition and growth
  • fortnox_project_profitability - Analyze project profitability (if using projects)
  • fortnox_cost_center_analysis - Analyze costs by cost center
  • fortnox_expense_analysis - Analyze expenses by category
  • fortnox_yearly_comparison - Compare year-over-year performance
  • fortnox_gross_margin_trend - Track gross margin trends over time

Installation

Via npx (Recommended)

No installation needed! Just add the config above to Claude Desktop.

Manual Installation

bash
npm install -g fortnox-mcp-server

From Source

bash
git clone https://github.com/jakobwennberg/fortnox-mcp.git
cd fortnox-mcp
npm install
npm run build

Configuration

Environment Variables

Local Mode (default)

VariableRequiredDescription
FORTNOX_CLIENT_IDYesYour Fortnox app client ID
FORTNOX_CLIENT_SECRETYesYour Fortnox app client secret
FORTNOX_REFRESH_TOKENYesOAuth2 refresh token (only needed for initial setup; automatically persisted after first use)
FORTNOX_ACCESS_TOKENNoCurrent access token (auto-refreshed)
TRANSPORTNostdio (default) or http
PORTNoHTTP port (default: 3000)

Remote Mode (AUTH_MODE=remote)

VariableRequiredDescription
AUTH_MODEYesSet to remote
SERVER_URLYesPublic URL of your server
JWT_SECRETYesSecret for signing JWT tokens
FORTNOX_CLIENT_IDYesYour Fortnox app client ID
FORTNOX_CLIENT_SECRETYesYour Fortnox app client secret
UPSTASH_REDIS_REST_URLYes*Upstash Redis URL for token storage
UPSTASH_REDIS_REST_TOKENYes*Upstash Redis token
PORTNoHTTP port (default: 3000)

*Falls back to in-memory storage if not provided (not recommended for production)

Getting OAuth Credentials

  1. Register as a developer at Fortnox Developer Portal
  2. Create a new application to get Client ID and Client Secret
  3. Complete the OAuth2 authorization flow to obtain a refresh token
  4. Set the environment variables

Usage

With Claude Desktop

See Quick Start above.

As HTTP Server

bash
TRANSPORT=http PORT=3000 node dist/index.js

Then connect to http://localhost:3000/mcp

Tool Examples

List Unpaid Invoices

json
{
  "tool": "fortnox_list_invoices",
  "arguments": {
    "filter": "unpaid",
    "limit": 20
  }
}

Create Invoice

json
{
  "tool": "fortnox_create_invoice",
  "arguments": {
    "customer_number": "1001",
    "rows": [
      {
        "description": "Consulting services",
        "quantity": 10,
        "price": 1000
      }
    ]
  }
}

Create Voucher

json
{
  "tool": "fortnox_create_voucher",
  "arguments": {
    "voucher_series": "A",
    "description": "Office supplies",
    "transaction_date": "2025-01-24",
    "rows": [
      { "account_number": 6110, "debit": 500 },
      { "account_number": 1910, "credit": 500 }
    ]
  }
}

Rate Limiting

The Fortnox API allows 25 requests per 5 seconds. This server includes automatic rate limiting to prevent exceeding this limit.

Development

bash
# Run in development mode with auto-reload
npm run dev

# Build for production
npm run build

# Clean build artifacts
npm run clean

Publishing & Distribution

This server is published to multiple registries for easy installation:

RegistryURLPurpose
npmnpmjs.com/package/fortnox-mcp-serverPackage distribution via npx
MCP Registryregistry.modelcontextprotocol.ioOfficial MCP server discovery
GitHubgithub.com/jakobwennberg/fortnox-mcpSource code

How It Works

  1. User adds config to Claude Desktop with npx fortnox-mcp-server
  2. Claude Desktop starts the server via npx (downloads latest version from npm)
  3. Server authenticates with Fortnox using OAuth2 credentials from environment variables
  4. Claude can now use tools like fortnox_list_invoices, fortnox_create_customer, etc.
  5. Server handles API calls to Fortnox, including automatic token refresh and rate limiting

Token Persistence (Local Mode)

Fortnox refresh tokens are single-use — each token refresh returns a new one. The server automatically persists the latest refresh token to ~/.fortnox-mcp/tokens.json so it survives process restarts without requiring manual config updates.

  • On first run, the server reads FORTNOX_REFRESH_TOKEN from your environment/config
  • After each token refresh, the new refresh token is saved to ~/.fortnox-mcp/tokens.json
  • On subsequent restarts, the server uses the persisted token (which is always the latest)
  • If the persisted file is missing or corrupt, the server falls back to the environment variable

The token file is created with restricted permissions (0600) for security.

Releasing New Versions

To release a new version, use the release script:

bash
# Bug fixes (1.0.0 → 1.0.1)
npm run release:patch

# New features (1.0.0 → 1.1.0)
npm run release:minor

# Breaking changes (1.0.0 → 2.0.0)
npm run release:major

The release script automatically:

  1. Bumps the version in package.json
  2. Updates server.json for the MCP Registry
  3. Builds the project
  4. Commits and tags the release
  5. Publishes to npm
  6. Publishes to MCP Registry
  7. Pushes to GitHub

Prerequisites for releasing:

  • npm login - Logged into npm
  • mcp-publisher login github - Logged into MCP Registry
  • Clean git working directory

Users Get Updates Automatically

When you publish a new version, users running npx -y fortnox-mcp-server will automatically get the latest version the next time they restart Claude Desktop.


Deploying Your Own Remote Server

Want to host your own instance of the Fortnox MCP server? Follow these instructions.

Deploy to Vercel

Deploy with Vercel

1. Prerequisites

2. Set Environment Variables

In your Vercel project settings, add these environment variables:

VariableDescription
AUTH_MODESet to remote
SERVER_URLYour Vercel deployment URL (e.g., https://your-app.vercel.app)
JWT_SECRETA random secret string for signing tokens (generate with openssl rand -hex 32)
FORTNOX_CLIENT_IDYour Fortnox app client ID
FORTNOX_CLIENT_SECRETYour Fortnox app client secret
UPSTASH_REDIS_REST_URLUpstash Redis REST URL
UPSTASH_REDIS_REST_TOKENUpstash Redis REST token

3. Configure Fortnox OAuth Callback

In your Fortnox app settings, add this redirect URI:

code
https://your-app.vercel.app/oauth/fortnox/callback

4. Deploy

bash
vercel --prod

Server Endpoints

EndpointDescription
GET /healthHealth check
GET /.well-known/oauth-authorization-serverOAuth metadata
POST /authorizeStart OAuth flow
POST /tokenExchange code for tokens
GET /oauth/fortnox/callbackFortnox OAuth callback
POST /mcpProtected MCP endpoint

Architecture

code
┌─────────────────────────────────────────────────────────────┐
│                    fortnox-mcp-server                       │
├─────────────────────────────────────────────────────────────┤
│   Mode: AUTH_MODE=local | remote                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   LOCAL MODE                    REMOTE MODE                 │
│   ───────────                   ───────────                 │
│   • Env var tokens              • OAuth flow                │
│   • Single user                 • Multi-user                │
│   • stdio or HTTP               • HTTP only                 │
│   • Auto-persisted tokens       • Token storage (Redis)     │
│     (~/.fortnox-mcp/)                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

License

MIT

常见问题

io.github.jakobwennberg/fortnox 是什么?

用于集成 Fortnox 瑞典会计 API 的 MCP server,帮助 AI 或系统访问财务与账务相关能力。

相关 Skills

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描111.8k

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描111.8k

MCP服务构建器

by alirezarezvani

Universal
热门

从 OpenAPI 一键生成 Python/TypeScript MCP server 脚手架,并校验 tool schema、命名规范与版本兼容性,适合把现有 REST API 快速发布成可生产演进的 MCP 服务。

帮你快速搭建 MCP 服务与后端 API,脚手架完善、扩展顺手,尤其适合想高效验证服务能力的开发者。

平台与服务
未扫描9.8k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
83.1k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
78.3k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
34.9k

评论