mcpField
F

fortnox

本地服务
github.com/jakobwennberg金融数据4526 周前更新

关于 fortnox

Fortnox MCP 服务面向瑞典会计系统 Fortnox 的 API 集成,使 LLM 能够管理发票、客户、供应商、订单、科目与凭证,并进行经营分析。远程模式只需浏览器授权,本地模式则可使用自有应用凭据自行部署。

主要功能

  1. 01覆盖客户、发票、供应商与凭证等核心对象
  2. 02提供发票记账、取消与贷记单操作
  3. 03包含应付账款账龄与未付款报表
  4. 04提供现金流预测与销售漏斗等分析工具
  5. 05内置速率限制以符合 Fortnox API 限制

适用场景

  1. 01让 LLM 查询未付发票并生成催款报告
  2. 02通过自然语言创建客户发票或手工凭证
  3. 03分析各期间营收、毛利率与费用类别变化
  4. 04跟踪供应商发票审批与应付账款状态

MCP 相关

该服务既可作为远程 MCP 服务接入 Claude,也可通过 stdio 或 HTTP 本地运行,向 MCP 客户端暴露 Fortnox 相关工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jakobwennberg-fortnox": {
"command": "npx",
"args": [
"-y",
"fortnox-mcp-server"
],
"env": {
"FORTNOX_CLIENT_ID": "<FORTNOX_CLIENT_ID>",
"FORTNOX_CLIENT_SECRET": "<FORTNOX_CLIENT_SECRET>",
"FORTNOX_REFRESH_TOKEN": "<FORTNOX_REFRESH_TOKEN>"
}
}
}
}
启动命令npx -y fortnox-mcp-server
需要配置的环境变量
FORTNOX_CLIENT_ID密钥Your Fortnox app client ID from developer.fortnox.se
FORTNOX_CLIENT_SECRET密钥Your Fortnox app client secret
FORTNOX_REFRESH_TOKEN密钥OAuth2 refresh token obtained from Fortnox authorization flow

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmfortnox-mcp-server1.0.0

工具

28

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pageinteger否分页的页码
limitinteger否要返回的最大结果数(1-100)
filterenum否按客户状态筛选active | inactive
search_namestring否按名称搜索客户(部分匹配)
customer_numberstring否按指定客户编号筛选
response_formatenum否输出格式:'markdown' 或 'json'markdown | json
organisation_numberstring否按组织编号筛选

详细介绍

Fortnox MCP 服务

用于与瑞典会计系统 Fortnox 集成的 MCP(Model Context Protocol)服务。此服务支持大模型与 Fortnox 交互,以管理发票、客户、供应商、订单、账户、凭证,并提供商业智能分析。

两种使用方式

模式适用对象设置
远程模式终端用户只需添加 URL,然后在浏览器中授权
本地模式开发者、可自托管配置环境变量

快速开始:远程模式(推荐)

使用 Fortnox MCP 最简单的方式——无需凭据,只需在浏览器中授权。

选项 A:添加到 Claude.ai(Web)
  1. 前往 claude.ai
  2. 进入 Settings → Integrations → Add Integration
  3. 输入 URL:https://fortnox-mcp.vercel.app/mcp
  4. 等待加载完成,然后点击连接以授权访问
选项 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 凭据
  1. 在 Fortnox Developer Portal 注册
  2. 创建应用以获取 Client ID 和 Client Secret
  3. 完成 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 凭据
  1. 在 Fortnox Developer Portal 注册开发者账号
  2. 创建新应用以获取 Client ID 和 Client Secret
  3. 完成 OAuth2 授权流程以获取刷新令牌
  4. 设置环境变量

使用

与 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用途
npmnpmjs.com/package/fortnox-mcp-server通过 npx 分发软件包
MCP Registryregistry.modelcontextprotocol.io官方 MCP 服务发现
GitHubgithub.com/jakobwennberg/fortnox-mcp源代码
工作原理
  1. 用户将配置添加到 Claude Desktop,并使用 npx fortnox-mcp-server
  2. Claude Desktop 通过 npx 启动服务(从 npm 下载最新版本)
  3. 服务使用环境变量中的 OAuth2 凭据向 Fortnox 进行身份验证
  4. Claude 现在可以使用工具,例如 fortnox_list_invoices、fortnox_create_customer 等
  5. 服务处理对 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

发布脚本会自动:

  1. 更新 package.json 中的版本号
  2. 更新 MCP Registry 的 server.json
  3. 构建项目
  4. 提交并为发布版本打标签
  5. 发布到 npm
  6. 发布到 MCP Registry
  7. 推送到 GitHub

发布前提条件:

  • npm login - 已登录 npm
  • mcp-publisher login github - 已登录 MCP Registry
  • Git 工作目录干净
用户会自动获取更新

发布新版本后,运行 npx -y fortnox-mcp-server 的用户下次重启 Claude Desktop 时,会自动获取最新版本。


部署你自己的远程服务

想要托管自己的 Fortnox MCP 服务实例?请按照以下说明操作。

部署到 Vercel

使用 Vercel 部署

1. 前提条件
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_URLUpstash Redis REST URL
UPSTASH_REDIS_REST_TOKENUpstash 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-serverOAuth 元数据
POST /authorize启动 OAuth 流程
POST /token交换授权码以获取令牌
GET /oauth/fortnox/callbackFortnox 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。