关于 fortnox
Fortnox MCP 服务面向瑞典会计系统 Fortnox 的 API 集成,使 LLM 能够管理发票、客户、供应商、订单、科目与凭证,并进行经营分析。远程模式只需浏览器授权,本地模式则可使用自有应用凭据自行部署。
主要功能
- 01覆盖客户、发票、供应商与凭证等核心对象
- 02提供发票记账、取消与贷记单操作
- 03包含应付账款账龄与未付款报表
- 04提供现金流预测与销售漏斗等分析工具
- 05内置速率限制以符合 Fortnox API 限制
适用场景
- 01让 LLM 查询未付发票并生成催款报告
- 02通过自然语言创建客户发票或手工凭证
- 03分析各期间营收、毛利率与费用类别变化
- 04跟踪供应商发票审批与应付账款状态
MCP 相关
该服务既可作为远程 MCP 服务接入 Claude,也可通过 stdio 或 HTTP 本地运行,向 MCP 客户端暴露 Fortnox 相关工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y fortnox-mcp-serverFORTNOX_CLIENT_ID密钥Your Fortnox app client ID from developer.fortnox.seFORTNOX_CLIENT_SECRET密钥Your Fortnox app client secretFORTNOX_REFRESH_TOKEN密钥OAuth2 refresh token obtained from Fortnox authorization flow本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
28收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| page | integer | 否 | 分页的页码 |
| limit | integer | 否 | 要返回的最大结果数(1-100) |
| filter | enum | 否 | 按客户状态筛选active | inactive |
| search_name | string | 否 | 按名称搜索客户(部分匹配) |
| customer_number | string | 否 | 按指定客户编号筛选 |
| response_format | enum | 否 | 输出格式:'markdown' 或 'json'markdown | json |
| organisation_number | string | 否 | 按组织编号筛选 |
详细介绍
Fortnox MCP 服务
用于与瑞典会计系统 Fortnox 集成的 MCP(Model Context Protocol)服务。此服务支持大模型与 Fortnox 交互,以管理发票、客户、供应商、订单、账户、凭证,并提供商业智能分析。
两种使用方式
| 模式 | 适用对象 | 设置 |
|---|---|---|
| 远程模式 | 终端用户 | 只需添加 URL,然后在浏览器中授权 |
| 本地模式 | 开发者、可自托管 | 配置环境变量 |
快速开始:远程模式(推荐)
使用 Fortnox MCP 最简单的方式——无需凭据,只需在浏览器中授权。
选项 A:添加到 Claude.ai(Web)
- 前往 claude.ai
- 进入 Settings → Integrations → Add Integration
- 输入 URL:
https://fortnox-mcp.vercel.app/mcp - 等待加载完成,然后点击连接以授权访问
选项 B:添加到 Claude Desktop
打开 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
添加以下配置:
{
"mcpServers": {
"fortnox": {
"url": "https://fortnox-mcp.vercel.app/mcp"
}
}
}
重启 Claude Desktop。首次要求 Claude 使用 Fortnox 执行操作时,会打开一个浏览器窗口,让你授权访问 Fortnox 账户。完成授权后即可使用!
快速开始:本地模式(可自托管)
适用于想要在本地运行服务,或使用自己的 Fortnox 应用凭据的开发者。
1. 获取 Fortnox 凭据
- 在 Fortnox Developer Portal 注册
- 创建应用以获取 Client ID 和 Client Secret
- 完成 OAuth2 流程以获取 Refresh Token
2. 添加到 Claude Desktop
打开 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.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. 重启 Claude Desktop
就是这样!现在你可以要求 Claude 管理 Fortnox 发票、客户等内容。
功能
客户管理
fortnox_list_customers- 列出并搜索客户fortnox_get_customer- 获取客户详情fortnox_create_customer- 创建新客户fortnox_update_customer- 更新客户fortnox_delete_customer- 删除客户
发票管理
fortnox_list_invoices- 筛选并列出发票fortnox_get_invoice- 获取发票详情及明细行fortnox_create_invoice- 创建新发票fortnox_update_invoice- 更新草稿发票fortnox_bookkeep_invoice- 登记发票账目fortnox_cancel_invoice- 取消发票fortnox_credit_invoice- 创建贷项通知单fortnox_send_invoice_email- 通过电子邮件发送发票
供应商管理
fortnox_list_suppliers- 列出并搜索供应商fortnox_get_supplier- 获取供应商详情fortnox_create_supplier- 创建新供应商fortnox_update_supplier- 更新供应商fortnox_delete_supplier- 删除供应商
供应商发票管理
fortnox_list_supplier_invoices- 筛选并列出供应商发票fortnox_get_supplier_invoice- 获取供应商发票详情fortnox_approve_supplier_invoice- 批准供应商发票付款fortnox_payables_report- 获取应付账款账龄报告
订单管理
fortnox_list_orders- 筛选并列出销售订单fortnox_list_offers- 筛选并列出报价
账户管理
fortnox_list_accounts- 列出会计科目表fortnox_get_account- 获取账户详情fortnox_create_account- 创建新账户fortnox_update_account- 更新账户fortnox_delete_account- 删除账户
凭证管理
fortnox_list_vouchers- 列出凭证(会计分录)fortnox_get_voucher- 获取包含行项目的凭证详情fortnox_create_voucher- 创建手动凭证fortnox_list_voucher_series- 列出可用的凭证系列fortnox_account_activity- 获取特定账户的活动记录fortnox_search_vouchers- 按描述、账户或金额搜索凭证
公司信息
fortnox_get_company_info- 获取公司详情fortnox_list_financial_years- 列出公司财年
分析
fortnox_invoice_summary- 按期间获取发票统计数据fortnox_top_customers- 获取收入最高的客户fortnox_unpaid_report- 获取未付款发票详细报告
商业智能
fortnox_cash_flow_forecast- 根据发票和应付款项预测现金流fortnox_order_pipeline- 分析销售订单管道fortnox_sales_funnel- 分析从报价到发票的销售漏斗fortnox_product_performance- 分析产品/商品表现fortnox_period_comparison- 比较各期间的财务指标fortnox_customer_growth- 分析客户获取和增长情况fortnox_project_profitability- 分析项目盈利能力(如果使用项目)fortnox_cost_center_analysis- 按成本中心分析成本fortnox_expense_analysis- 按类别分析费用fortnox_yearly_comparison- 比较各年度的表现fortnox_gross_margin_trend- 跟踪毛利率随时间的变化趋势
安装
通过 npx(推荐)
无需安装!只需将上述配置添加到 Claude Desktop。
手动安装
npm install -g fortnox-mcp-server
从源代码安装
git clone https://github.com/jakobwennberg/fortnox-mcp.git
cd fortnox-mcp
npm install
npm run build
配置
环境变量
本地模式(默认)
| 变量 | 必需 | 描述 |
|---|---|---|
FORTNOX_CLIENT_ID | 是 | 你的 Fortnox 应用客户端 ID |
FORTNOX_CLIENT_SECRET | 是 | 你的 Fortnox 应用客户端密钥 |
FORTNOX_REFRESH_TOKEN | 是 | OAuth2 刷新令牌(仅初始设置时需要;首次使用后会自动持久化) |
FORTNOX_ACCESS_TOKEN | 否 | 当前访问令牌(自动刷新) |
TRANSPORT | 否 | stdio(默认)或 http |
PORT | 否 | HTTP 端口(默认:3000) |
远程模式(AUTH_MODE=remote)
| 变量 | 必需 | 描述 |
|---|---|---|
AUTH_MODE | 是 | 设置为 remote |
SERVER_URL | 是 | 服务器的公开 URL |
JWT_SECRET | 是 | 用于签署 JWT 令牌的密钥 |
FORTNOX_CLIENT_ID | 是 | 你的 Fortnox 应用客户端 ID |
FORTNOX_CLIENT_SECRET | 是 | 你的 Fortnox 应用客户端密钥 |
UPSTASH_REDIS_REST_URL | 是* | 用于存储令牌的 Upstash Redis URL |
UPSTASH_REDIS_REST_TOKEN | 是* | Upstash Redis 令牌 |
PORT | 否 | HTTP 端口(默认:3000) |
*如果未提供,则回退到内存存储(不建议用于生产环境)
获取 OAuth 凭据
- 在 Fortnox Developer Portal 注册开发者账号
- 创建新应用以获取 Client ID 和 Client Secret
- 完成 OAuth2 授权流程以获取刷新令牌
- 设置环境变量
使用
与 Claude Desktop 搭配使用
请参阅上方的快速入门。
作为 HTTP 服务
TRANSPORT=http PORT=3000 node dist/index.js
然后连接到 http://localhost:3000/mcp
工具示例
列出未付款发票
{
"tool": "fortnox_list_invoices",
"arguments": {
"filter": "unpaid",
"limit": 20
}
}
创建发票
{
"tool": "fortnox_create_invoice",
"arguments": {
"customer_number": "1001",
"rows": [
{
"description": "Consulting services",
"quantity": 10,
"price": 1000
}
]
}
}
创建凭证
{
"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 }
]
}
}
速率限制
Fortnox API 每 5 秒允许 25 次请求。此服务内置了自动速率限制,以防超出此限制。
开发
# Run in development mode with auto-reload
npm run dev
# Build for production
npm run build
# Clean build artifacts
npm run clean
发布与分发
此服务已发布到多个注册表,方便安装:
| 注册表 | URL | 用途 |
|---|---|---|
| npm | npmjs.com/package/fortnox-mcp-server | 通过 npx 分发软件包 |
| MCP Registry | registry.modelcontextprotocol.io | 官方 MCP 服务发现 |
| GitHub | github.com/jakobwennberg/fortnox-mcp | 源代码 |
工作原理
- 用户将配置添加到 Claude Desktop,并使用
npx fortnox-mcp-server - Claude Desktop 通过 npx 启动服务(从 npm 下载最新版本)
- 服务使用环境变量中的 OAuth2 凭据向 Fortnox 进行身份验证
- Claude 现在可以使用工具,例如
fortnox_list_invoices、fortnox_create_customer等 - 服务处理对 Fortnox 的 API 调用,包括自动刷新令牌和速率限制
令牌持久化(本地模式)
Fortnox 刷新令牌只能使用一次——每次刷新令牌都会返回一个新令牌。服务会自动将最新的刷新令牌持久化到 ~/.fortnox-mcp/tokens.json,使其在进程重启后仍然有效,无需手动更新配置。
- 首次运行时,服务会从环境变量或配置中读取
FORTNOX_REFRESH_TOKEN - 每次刷新令牌后,新的刷新令牌都会保存到
~/.fortnox-mcp/tokens.json - 后续重启时,服务会使用持久化的令牌(始终为最新令牌)
- 如果持久化文件缺失或损坏,服务会回退使用环境变量中的令牌
为确保安全,令牌文件会以受限权限(0600)创建。
发布新版本
要发布新版本,请使用发布脚本:
# 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
发布脚本会自动:
- 更新
package.json中的版本号 - 更新 MCP Registry 的
server.json - 构建项目
- 提交并为发布版本打标签
- 发布到 npm
- 发布到 MCP Registry
- 推送到 GitHub
发布前提条件:
npm login- 已登录 npmmcp-publisher login github- 已登录 MCP Registry- Git 工作目录干净
用户会自动获取更新
发布新版本后,运行 npx -y fortnox-mcp-server 的用户下次重启 Claude Desktop 时,会自动获取最新版本。
部署你自己的远程服务
想要托管自己的 Fortnox MCP 服务实例?请按照以下说明操作。
部署到 Vercel
1. 前提条件
- 一个 Vercel 账户
- 一个 Upstash Redis 数据库(用于存储令牌)
- 一个已创建应用的 Fortnox Developer 账户
2. 设置环境变量
在 Vercel 项目设置中,添加以下环境变量:
| 变量 | 描述 |
|---|---|
AUTH_MODE | 设置为 remote |
SERVER_URL | 你的 Vercel 部署 URL(例如,https://your-app.vercel.app) |
JWT_SECRET | 用于签署令牌的随机密钥字符串(使用 openssl rand -hex 32 生成) |
FORTNOX_CLIENT_ID | 你的 Fortnox 应用客户端 ID |
FORTNOX_CLIENT_SECRET | 你的 Fortnox 应用客户端密钥 |
UPSTASH_REDIS_REST_URL | Upstash Redis REST URL |
UPSTASH_REDIS_REST_TOKEN | Upstash Redis REST 令牌 |
3. 配置 Fortnox OAuth 回调
在 Fortnox 应用设置中,添加此重定向 URI:
https://your-app.vercel.app/oauth/fortnox/callback
4. 部署
vercel --prod
服务端点
| 端点 | 描述 |
|---|---|
GET /health | 健康检查 |
GET /.well-known/oauth-authorization-server | OAuth 元数据 |
POST /authorize | 启动 OAuth 流程 |
POST /token | 交换授权码以获取令牌 |
GET /oauth/fortnox/callback | Fortnox OAuth 回调 |
POST /mcp | 受保护的 MCP 端点 |
架构
┌─────────────────────────────────────────────────────────────┐
│ 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/) │
│ │
└─────────────────────────────────────────────────────────────┘
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。