会计系统集成服务器

Fortnox MCP服务器是一个用于与Fortnox瑞典会计系统集成的模型上下文协议服务器,使LLM能够管理发票、客户、供应商、订单等,并提供商业智能分析。

  • by erp-mafia
  • TypeScript
  • 本地部署
  • 45 星标
  • 更新于
在 GitHub 查看 jakobwennberg/fortnox-mcp

使用说明

Fortnox MCP服务器

用于与Fortnox瑞典会计系统集成的MCP(模型上下文协议)服务器。此服务器使LLM能够与Fortnox交互,以管理发票、客户、供应商、订单、账户、凭证,并提供商业智能分析。

两种使用方法

模式 最适合 设置
远程模式 最终用户 只需添加URL,在浏览器中授权
本地模式 开发人员,自托管 配置环境变量

快速入门:远程模式(推荐)

使用Fortnox MCP的最简单方法-无需凭据,只需在浏览器中授权即可。

选项A:添加到Claude.ai(Web)

  1. 首选 claude.ai
  2. 导航至 设置 → 集成 → 添加集成
  3. 输入URL: https://fortnox-mcp.vercel.app/mcp
  4. 等待加载,然后单击连接授权访问

选项B:添加到Claude桌面

打开您的Claude Desktop配置文件:

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

添加此配置:

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

重新启动克劳德桌面。当您第一次要求Claude使用Fortnox时,将打开一个浏览器窗口,让您授权访问您的Fortnox帐户。一旦获得授权,您就一切就绪!


快速入门:本地模式(自托管)

适用于希望在本地运行服务器或使用自己的Fortnox应用程序凭据的开发人员。

1.获取您的Fortnox证书

  1. 注册于 Fortnox开发者门户
  2. 创建一个应用程序来获取您的 客户端ID 和 客户端密钥
  3. 完成OAuth2流以获得 刷新令牌

2.添加到克劳德桌面

打开您的Claude Desktop配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %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管理您的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=远程)

变量 必填 描述
AUTH_MODE 是 设置为 remote
SERVER_URL 是 服务器的公共URL
JWT_SECRET 是 签署JWT代币的秘密
FORTNOX_CLIENT_ID 是 您的Fortnox应用程序客户端ID
FORTNOX_CLIENT_SECRET 是 您的Fortnox应用程序客户端密码
UPSTASH_REDIS_REST_URL 是* 用于令牌存储的升级Redis URL
UPSTASH_REDIS_REST_TOKEN 是* 升级Redis令牌
PORT 无 HTTP端口(默认值:3000)

*如果没有提供,则回退到内存存储(不建议用于生产)

获取OAuth凭据

  1. 注册成为开发者 Fortnox开发者门户
  2. 创建新应用程序以获取客户端ID和客户端密钥
  3. 完成OAuth2授权流程以获取刷新令牌
  4. 设置环境变量

用法

使用克劳德桌面

看 快速开始 上面。

作为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注册表 register.modelcontextprotocol.io 官方MCP服务器发现
GitHub github/雅科布温伯格/fortnox-mcp 源代码

运作原理

  1. 用户添加配置 使用克劳德桌面 npx fortnox-mcp-server
  2. Claude Desktop启动服务器 通过npx(从npm下载最新版本)
  3. 服务器身份验证 Fortnox使用来自环境变量的OAuth2凭据
  4. Claude现在可以使用工具了 喜欢 fortnox_list_invoices, fortnox_create_customer等等。
  5. 服务器处理API调用 Fortnox,包括自动令牌刷新和速率限制

令牌持久性(本地模式)

Fortnox刷新令牌是一次性使用的——每次令牌刷新都会返回一个新的令牌。服务器会自动将最新刷新令牌持久化到 ~/.fortnox-mcp/tokens.json 因此,它可以在进程重启时幸存下来,而不需要手动更新配置。

  • 首次运行时,服务器读取 FORTNOX_REFRESH_TOKEN 从您的环境/config
  • 每次令牌刷新后,新的刷新令牌将保存到 ~/.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. 更新 server.json 对于MCP注册表
  3. 构建项目
  4. 提交并标记发布
  5. 发布到npm
  6. 发布到MCP注册表
  7. 推送到GitHub

发布的先决条件:

  • npm login -登录到npm
  • mcp-publisher login github -已登录MCP注册表
  • 清理git工作目录

用户自动获取更新

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


部署您自己的远程服务器

想托管自己的Fortnox MCP服务器实例吗?遵循这些说明。

部署到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_URL 更新Redis REST URL
UPSTASH_REDIS_REST_TOKEN Uptash 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/)                                       │
│                                                             │
└─────────────────────────────────────────────────────────────┘

许可证

麻省理工学院