原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Gofact

作者:kOlapsis版本 1.2.0i★ –i在你的电脑上运行
注册名称io.github.kOlapsis/gofact

安装

概览

作者提供的说明(英文原文)

Creates compliant French e-invoices locally: Factur-X PDF/A-3 with EN 16931 CII XML, legal numbering

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 文档、表格与办公

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

下载作者的 .mcpb 文件

链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。

在终端中运行这条命令

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 kOlapsis 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“文档、表格与办公”中的其他服务器比较i

  • 星标数多于此分类中其他 2183 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 2183 个服务器的 33% 更新
  • 基础检查结果等于或优于此分类中其他 2183 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Gofact 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(1.2.0)于2个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 MCPB。

有什么可以替代它?

同一分类中有:Agent-Native Calendar, Excel MCP Server, MCP Server for Excel

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Agent-Native Calendar

作者:BuilderIO

Agent-Native Google Calendar - manage events, sync, and public booking

在云端运行★ 7,620MIT2个月前更新
安装

Excel MCP Server

作者:haris-musa

Create and edit Excel files with AI: charts, PivotTables, formulas. No Excel needed.

在你的电脑上运行★ 4,276MIT6天前更新
安装

MCP Server for Excel

作者:sbroenne

Excel automation for AI - Sheets, Power Query, DAX, VBA, Tables, Ranges and more. Windows only.

在你的电脑上运行★ 847MIT3天前更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

gofact

🇫🇷 Version française

Small Go binary that turns a print-ready HTML invoice into Factur-X: a compliant PDF/A-3 with the CII EN 16931 XML embedded, and optionally submits it to a French e-invoicing platform (PDP — *plateforme de dématérialisation partenaire*).

Built for the invoicing of a French freelancer or small business (the French e-invoicing reform), and also shipped as a Claude Code plugin with the creer-facture skill.

Pipeline

JSON  ──EN 16931 rules──▶  rejected if non-compliant (before producing anything)

──gofact──────────▶ factur-x.xml (CII EN 16931) HTML ──headless Chrome─▶ PDF (identical to Ctrl+P output, backgrounds included) PDF + XML ──pure Go─────▶ Factur-X (PDF/A-3 + VERBATIM embedding of the XML) Factur-X ──self-check──▶ re-read (structure + integrity of the embedded XML)

Verbatim embedding — important. The XML is embedded byte for byte.

An assembler that re-serializes it through its own model **loses extended

fields**, in particular the PDP electronic routing addresses (BT-34/BT-49).

gofact never touches the XML it has produced.

System dependencies

A browser, and that's it.

  • Chrome, Edge, Brave or Chromium — HTML → PDF rendering

Auto-detected on Linux, macOS and Windows (where Edge is preinstalled, so nothing to do). Sandboxed packages — snap, flatpak — are skipped: they cannot read the temporary files gofact hands them. To point at a specific executable: GOFACT_CHROME or -chrome.

The PDF/A-3 assembly is done in Go (pdfcpu): no Ghostscript, no Java, no first-run download. The sRGB ICC profile is embedded in the binary.

Compliance

Two checks, at two different moments:

  • EN 16931 business rules, applied on the model before producing anything. gofact refuses to issue an invoice it knows to be non-compliant, reporting the rule identifier (BR-50, BR-CO-15…) and the field to fix.
  • PDF self-check, after writing: the file is re-read, the Factur-X structures are verified (/AF, /OutputIntents, XMP, /EmbeddedFiles) and the embedded XML is compared byte for byte with the one that was generated.

Deep PDF/A-3b compliance is verified by veraPDF, via Mustang, in continuous integration — never on the user's machine:

GOFACT_ORACLE_HTML=facture.html go test -tags=ci ./internal/facturx

Build

go build -o gofact .

go test ./...

Configuration

No identity and no secret is hard-coded. The invoice issuer, the payment IBAN and the PDP credentials come from the environment.

cp .env.example .env    # then fill in your own values

gofact loads, in order and without ever overwriting an already-defined variable: the file passed to -env, otherwise ./.env, then $XDG_CONFIG_HOME/gofact/.env (~/.config/gofact/.env by default). The .env is git-ignored — never commit it.

VariablePurpose
GOFACT_SELLER_NAMESeller name. Required unless the JSON carries a seller block.
GOFACT_SELLER_SIRET / GOFACT_SELLER_SIRENFrench legal identifier (BT-30). The SIREN is derived from the SIRET.
GOFACT_SELLER_VAT_NUMBERIntra-community VAT number (BT-31). Empty under the 293 B franchise ⇒ BT-32 = SIREN.
GOFACT_SELLER_EMAILSeller e-mail.
GOFACT_SELLER_ADDRESS / _POSTAL_CODE / _CITY / _COUNTRYPostal address (country defaults to FR).
GOFACT_SELLER_ELECTRONIC_ADDRESS / _SCHEMEPeppol routing BT-34. Empty ⇒ SIREN + scheme 0225.
GOFACT_PAYEE_IBANPayment IBAN (BT-84). Empty ⇒ omitted from the invoice.
GOFACT_VAT_EXEMPTION_MENTION / _CODEDefault exemption mention and code (293 B).
SUPERPDP_CLIENT_ID / SUPERPDP_CLIENT_SECRET / SUPERPDP_BASEPDP credentials (secrets), for -send only.

With no seller configured, gofact fails explicitly rather than issuing an incomplete invoice. Every value can still be overridden per invoice via the JSON.

MCP server — talk to your AI to invoice

gofact mcp exposes invoicing as a local MCP server (stdio): from Claude Desktop, Claude Code, LM Studio or any MCP client, saying "make me an invoice for ACME, 2 days at €600" is enough. The AI is the interface; gofact guarantees the numbering (continuous legal sequence, locked and transactional allocation), EN 16931 compliance and archiving — locally.

# Register in Claude Code, for example:

claude mcp add gofact -- /path/to/gofact mcp

Tools: list_organizations, get_organization, init_organization, update_organization, search_client, get_invoice_template, preview_next_number, list_invoices, create_invoice, send_invoice (the only destructive tool — PDP submission, explicit confirmation required), get_invoice_status. Prompt: nouvelle-facture.

An organization (issuing entity) = a self-contained directory: identity in its .env, numerotation.json registry, journal.ndjson audit log, invoice template frozen at first issuance, and the invoices themselves. CLI management: gofact org list | init | show. No secret ever leaves a tool response.

Usage (CLI)

# Simplest form: -data and -out derived from the HTML file name

gofact -html "2026011 - Client.html"

→ reads "2026011 - Client.json", writes "2026011 - Client.pdf"

Explicit paths + XML dump for debugging

gofact -html f.html -data f.json -out f.pdf -xml f.xml

Options

-env # explicit .env file -validate=false # skip the self-check of the produced PDF -chrome # force the Chrome executable -q # quiet (errors only)

Exit code 0 if the Factur-X is generated (and compliant when -validate).

Sending to a PDP (SuperPDP)

gofact submits the Factur-X PDF to SuperPDP (OAuth2 client credentials).

# generate then submit in one command

gofact -html f.html -send -poll

submit an already-generated PDF

gofact send -pdf f.pdf -poll

**The PDP requires that the invoice seller = the company of the authenticated

account (legal identifier BT-30) and an electronic routing address**

(BT-34/BT-49, scheme 0225) for both the issuer and the recipient. See

electronic_address below. -poll shows the lifecycle (fr:200 submitted →

fr:201 issued → fr:202 received).

JSON format (sidecar)

All amounts are in cents (integers). The seller, the IBAN, the VAT regime and the French legal mentions have default values (environment) — the JSON only carries what varies.

{

"number": "2026011", "type": "invoice", "issue_date": "2026-06-29", "buyer_reference": "D2026004", "buyer": { "name": "ACME SAS", "siret": "55208131700015", "email": "compta@acme.example", "address": "1 rue de la Paix", "postal_code": "75002", "city": "Paris", "country_code": "FR" }, "lines": [ { "name": "Développement", "unit": "day", "quantity": "2.00", "unit_price_ht_cents": 60000, "amount_ht_cents": 120000 } ] }

Optional fields: due_date (defaults to "on receipt" = issue date), delivery_date (defaults to issue date), currency (defaults to EUR), vat (defaults to 293 B exemption; set {"exempt": false, "rate_pct": "20.00"} for standard VAT), seller, iban, title (the invoice subject, recorded in the registry), notes.

Notes: the three French legal mentions — late-payment penalties (PMD), recovery fee (PMT), discount (AAB) — are always emitted (BR-FR-05). notes adds to them: a note without subject_code goes out as general information (AAI); a note carrying PMD, PMT or AAB replaces the default mention with that code. No spec can drop them: generation refuses.

PDP routing: seller/buyer accept electronic_address (BT-34/BT-49) and electronic_address_scheme (e.g. "0225"). A PDP routes on these addresses, not on the postal address. Without a declared address, each party is routed on its SIREN (derived from the SIRET) with scheme 0225; the e-mail (EM) is only used when no legal identifier is known — it is not in the directory, and send_invoice then refuses the deposit. Example (seller override):

"seller": {

"name": "Studio Exemple", "siren": "123456789", "electronic_address": "123456789", "electronic_address_scheme": "0225" }

Installation

Precompiled binary (GitHub release, no toolchain required):

curl -fsSL https://raw.githubusercontent.com/kolapsis/gofact/main/install.sh | sh

gofact install -yes # registers the MCP server in the detected clients

gofact install detects Claude Desktop, Claude Code, LM Studio and Cursor, shows what it intends to write (dry-run by default), backs up every file before modifying it and never overwrites a diverging entry without -force. Windows: install.ps1.

Package managers — the cask and the manifest live in this repository, hence the explicit URLs (Homebrew's short brew tap form requires a homebrew-* repository name; Homebrew core and the main Scoop bucket both gate on a popularity threshold gofact has not reached):

brew tap kOlapsis/gofact https://github.com/kOlapsis/gofact

brew install kOlapsis/gofact/gofact

scoop bucket add gofact https://github.com/kOlapsis/gofact

scoop install gofact

Claude Code plugin — the repository is also a plugin: creer-facture skill

  • declared MCP server:
/plugin marketplace add kolapsis/gofact

/plugin install gofact@gofact

From source: go build -o gofact .

Organizations live in local directories (identity, registry, invoices) — never versioned here: they contain real data. GOFACT_INVOICES_DIR is still honored for compatibility with the historical skill.

Known limitations

  • Rendering relies on a Blink browser; sandboxed packages (snap, flatpak) are ignored because they cannot read outside $HOME.
  • Single VAT rate. Multi-rate is not supported.
  • Currency ≠ EUR: the VAT counter-value in EUR (BT-111) must be provided upstream (VATEur field of the model); not exposed in the JSON yet.
  • Only one PDP implemented (SuperPDP).

License

GNU AGPL v3 or later — see LICENSE.

Copyright (C) 2026 Benjamin Touchard.

gofact is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of merchantability or fitness for a particular purpose.

问 PopNx