Fortnox MCP Server

使用说明(Markdown)

  • 项目简介

    • Fortnox MCP Server 是一个符合 MCP 规范的后端服务,专为 Fortnox 会计系统设计。它通过 MCP 提供标准化的资源访问、工具调用和提示渲染能力,方便 LLM 客户端(如 Claude)以 JSON-RPC 形式读取数据、执行操作、并获取结构化/文本化的响应。
  • 主要功能点

    • 资源与数据访问:对 Fortnox 的客户、发票、供应商、账户、凭证等资源提供统一接口。
    • Tools(工具):注册大量 Fortnox 相关工具,例如 fortnox_list_invoices、fortnox_create_customer、fortnox_create_invoice 等,LLM 可通过工具执行外部功能并获取结果。
    • Prompts(提示模板,渲染输出):支持将查询结果以 Markdown/JSON 等格式渲染,并可在工具输出中嵌入详细信息。
    • MCP 协议支持:服务器实现 MCP 的核心流程,接收 MCP 客户端请求、执行相应工具、返回结构化的 JSON-RPC 响应,或文本内容。
    • 会话与认证:本地模式使用 Fortnox OAuth 凭证,远程模式通过 OAuth 提供者进行多用户会话与令牌管理。
    • 多传输协议:支持 stdio、Server-Sent Events (SSE)、以及 Streamable HTTP(HTTP API),并内置速率限制与分页功能。
  • 安装步骤

      1. 安装依赖并构建
      • 克隆仓库后,执行安装依赖并构建:安装依赖、构建产物。
      1. 运行模式
      • 本地模式(默认,需 Fortnox OAuth 凭证)
        • 将 Fortnox 的 Client ID、Client Secret 和 Refresh Token 配置在环境变量中:FORTNOX_CLIENT_ID、FORTNOX_CLIENT_SECRET、FORTNOX_REFRESH_TOKEN。
        • 启动命令通常为 npx fortnox-mcp-server,默认传输为 stdio,端口可通过 PORT 指定,默认 3000。
      • 远程模式(AUTH_MODE=remote)
        • 需要将 SERVER_URL、JWT_SECRET、并配置合适的令牌存储(token storage)以实现多用户会话。
        • 服务器将暴露 REST 端点,提供 OAuth 回调与 MCP 请求处理。
  • 服务器配置(客户端使用,必须的配置要点)

    • MCP 客户端需要一个 JSON 配置,用于定义服务器连接信息(不包含敏感凭证,凭证在启动时通过命令行环境变量提供)。示例字段如下(请以 JSON 格式填写,以下为说明性文本,不含代码):
      • server_name(字符串):fortnox-mcp-server
      • command(字符串):npx
      • args(数组):["-y", "fortnox-mcp-server"] 说明:本地模式通常使用 npx fortnox-mcp-server 启动
      • env(对象):
        • FORTNOX_CLIENT_ID:Fortnox 应用的客户端ID
        • FORTNOX_CLIENT_SECRET:Fortnox 应用的客户端密钥
        • FORTNOX_REFRESH_TOKEN:用于本地模式的 OAuth 刷新令牌
        • 其他可选变量(如 TRANSPORT、PORT 等)以控制传输方式与端口
    • 远程模式下,客户端的配置通常只需要提供服务器的公有 URL,例如 Claude Desktop 要求将服务器地址配置为服务器端点,例如 https://fortnox-mcp.vercel.app/mcp
  • 基本使用方法

    • 本地模式:在 Claude 等 LLM 客户端中,配置一个 MCP 服务器条目,指向本地运行的 Fortnox MCP Server。第一次使用时会弹出 Fortnox 授权浏览器,完成授权后即可通过工具调用 Fortnox 功能。
    • 远程模式:将 Claude 配置为使用远端部署的 MCP 服务器地址,后端将处理授权、令牌管理与工具执行,LLM 可以直接调用工具获取 Fortnox 数据与分析结果。
    • 常用工作流:向 MCP 服务器发送工具调用请求(如 fortnox_list_invoices、fortnox_create_invoice 等),服务器返回结构化输出(JSON)或渲染后的 Markdown,CLI/CLI-like 或 GUI 客户端均能基于输出继续对话。

服务器信息