Fortnox

io.github.jakobwennberg由 GitHub 账号 jakobwennberg 发布v1.0.0更新于 Oct 24, 2026

MCP server for Fortnox Swedish accounting API integration

概览

AI 生成的概览

将助手连接到瑞典 Fortnox 会计系统,可管理客户、发票、供应商、科目和凭证,并进行财务分析。

可以做什么
  • 列出、查看、新建、更新和删除客户、供应商与会计科目
  • 列出、查看、新建和更新发票,并可记账、作废、开具贷项通知单和邮件发送
  • 列出供应商发票、审批付款并获取应付账款账龄报告
  • 列出销售订单与报价,读取公司信息和财务年度
  • 列出、查看、新建和搜索凭证及凭证系列,查看科目活动
  • 执行分析与商业智能:发票统计、大客户、未付报告、现金流预测、销售漏斗、毛利率趋势和期间对比
适用场景
适合需要操作瑞典公司 Fortnox 账务的场景:起草和发送发票、维护客户与供应商资料,或基于实时会计数据生成收入、现金流和毛利分析。
运行要求
以 npm 包通过 npx 在本地运行,或自建 HTTP 服务器。本地模式需要来自 Fortnox 开发者应用及 OAuth2 流程的 FORTNOX_CLIENT_ID、FORTNOX_CLIENT_SECRET 和 FORTNOX_REFRESH_TOKEN。自建远程模式还需 AUTH_MODE、SERVER_URL、JWT_SECRET,可选 Upstash Redis 配置。需要访问 Fortnox API 的网络。
安装前请注意
FORTNOX_CLIENT_ID、FORTNOX_CLIENT_SECRET 和 FORTNOX_REFRESH_TOKEN 可访问公司会计数据。许多工具会写入:新建、更新和删除客户、供应商与科目,记账、作废、开具贷项通知单和邮件发送发票,审批供应商发票以及新建凭证。刷新令牌为一次性使用,并会保存到本地令牌文件。README 还描述了在浏览器中授权的托管远程端点。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Fortnox,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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 Settings → Integrations → Add 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.gitcd fortnox-mcpnpm installnpm 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-reloadnpm run dev
# Build for productionnpm run build
# Clean build artifactsnpm 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:

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

┌─────────────────────────────────────────────────────────────┐│                    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

来源:README.md,提交 501ee13

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分