
Pop Mcp
io.github.popapidev由 GitHub 帳號 popapidev 發布v2.1.0更新於 Oct 30, 2026
Italian e-invoicing (FatturaPA/SdI), Peppol, KSeF, ZUGFeRD, and PDF invoice generation via POP
概覽
POP 的 MCP 伺服器,讓助理透過 POP 雲端 API 產生、送出並追蹤電子發票(FatturaPA/SdI、Peppol、KSeF、ZUGFeRD、PDF)。
- 可以做什麼
- 產生發票與貸項通知單:FatturaPA/SdI XML、Peppol UBL、波蘭 KSeF FA(3) XML、ZUGFeRD/Factur-X 封裝或品牌化 PDF
- 可選擇送出至 SdI、Peppol 網路或 KSeF 服務商,或投遞到 webhook、Fatture in Cloud
- 查詢 SdI 處理狀態與通知,並依 UUID 取回已歸檔的 SdI 或 Peppol 文件
- 送出前驗證 SdI XML 合規性,並將文件歸檔到義大利法定長期保存儲存
- 透過 Zoho 連接器同步 Zoho 文件
- 適用情境
- 適合讓助理在對話中草擬、驗證、送出並追蹤義大利、歐洲 Peppol、波蘭或德國格式的商業發票。最適合已有 POP 帳號,且送出類功能需要付費方案的對象。
- 執行需求
- 可使用託管端點 mcp.popapi.io,以 Authorization Bearer 權杖傳送 POP 授權金鑰;或在 Node.js 20 以上於本機執行 npm 套件 @getpopapi/pop-mcp,並設定 POP_API_KEY(可選 POP_ENVIRONMENT 切換 staging)。需要 POP 授權金鑰;SdI/Peppol 送出、驗證、歸檔及 PDF 郵件寄送需 Basic 以上方案並啟用對應整合。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Pop Mcp,將其新增到工作區。
- 連接 Authorization token 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
- 為需要使用其工具的對話啟用該服務。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
交給代理程式安裝
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/io.github.popapidev%2Fpop-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。其他 MCP 客戶端
把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"pop": {
"type": "http",
"url": "https://mcp.popapi.io/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}README
pop-mcp
MCP (Model Context Protocol) server for POP — enabling LLMs to generate, submit, and manage Italian e-invoices (FatturaPA/SdI), Peppol, KSeF, ZUGFeRD/Factur-X, and PDF invoices directly from AI assistants.
npm:
@getpopapi/pop-mcp· Remote:https://mcp.popapi.io/mcp
Remote MCP (HTTP) — fastest way to get started
Don't want to install anything? pop-mcp runs as a hosted, multi-tenant MCP server at:
Head to popapi.io to grab a license key, then point any MCP-speaking client at
that URL with your key as a Bearer token. No local install, no POP_API_KEY env var, no build step
— this is the recommended way to try pop-mcp for most people. Use the local stdio setup below only
if you specifically need a Claude Desktop config running a process on your own machine.
How it works
This endpoint speaks MCP 2026-07-28, which is fully stateless: there is no initialize
handshake and no session to open or track. Every request is self-contained — it names its own
protocol version and capabilities — and the server answers it independently. Because of that,
this is a multi-tenant endpoint: it never reads a fixed POP_API_KEY from its own environment.
Every request must carry your own POP license key as a Bearer token:
A missing or malformed Authorization header returns a 401 with error_code: "unauthorized_user"
before any POP API call is made. An invalid-but-well-formed key is passed straight through to POP's
API and surfaces whatever error POP returns (unauthorized_user, insufficient_level, etc.) — the
server does not re-validate keys itself.
Any modern MCP HTTP client can connect: Claude (remote connector), the OpenAI Responses API, n8n,
MCP Inspector, or a custom integration — not
just Claude Desktop. All invoice, status, advanced, and onboarding tools are available; onboarding
tools use their own onboarding_token per call and don't require the Bearer key.
Example with curl
Discover the server's supported protocol versions and capabilities (optional — clients can also
just call tools/list or tools/call directly and handle a version-negotiation error inline):
List the available tools — every request is self-contained, so _meta (protocol version + client
capabilities) travels on every call, not just the first one:
The tool catalog is identical for every license key, so tools/list and server/discover
responses carry a one-hour public cache hint (ttlMs: 3600000, cacheScope: "public") — clients and
gateways may cache them across tenants.
MCP-Protocol-VersionandMcp-Methodare required on every request (per SEP-2243), and must match the body's_meta.protocolVersionandmethodexactly, or the server rejects the request with a400and JSON-RPC error-32020(HeaderMismatch).tools/callrequests additionally require anMcp-Nameheader matchingparams.name.
Example with MCP Inspector
Configure it to connect to https://mcp.popapi.io/mcp with header
Authorization: Bearer <your_license_key>.
This endpoint runs as a Vercel serverless function (api/mcp.ts → src/mcpHandler.ts). To run it
locally: npx vercel dev (requires vercel link to the project first).
What is POP?
POP is a cloud service for electronic invoice generation and delivery, supporting:
- 🇮🇹 Italian e-invoicing (FatturaPA/SdI) — compliant with D.Lgs. 127/2015
- 🇪🇺 Peppol — pan-European cross-border B2B invoicing (UBL 2.1)
- 📄 PDF invoices — branded, with email delivery
- ✅ Validation — fiscal codes, VAT numbers, document pre-submission checks
- 🗄️ Preservation — Italian legal archival (conservazione sostitutiva)
Tools Available (11 total)
Invoice Creation
Status & Retrieval
Validation & Advanced SdI
Prerequisites
- Node.js >= 20
- A POP license key
- For SdI/Peppol submission: active integration on your POP account (Basic/Growth plan)
Authentication
Get Your License Key
New to POP? Visit popapi.io to create your account and get your license key.
API-only users can activate their account and obtain a license_key with this flow:
- Open https://popapi.io/otp-login/
- Enter your email address
- Receive a one-time password (OTP) by email and enter it
- Complete the configuration wizard
- Open https://popapi.io/ → Account > API
- Copy the default generated
license_key
Key Management
- Your account includes one default
license_key, visible under Account > API - You can generate additional keys linked to the same account from that same page
- Every
license_keymust be treated as a secret credential — do not commit it to source control
Recommended First Steps
- Get your
license_key - Test it with
GET /account-profile - Send one document-generation request with a real payload
- Add optional delivery integrations only after local generation works
Installation
From npm (recommended)
From Source
Configuration
Set your POP license key as an environment variable:
Optional — use the staging environment:
Claude Desktop Setup
Add to your claude_desktop_config.json:
If installed from npm:
If running from source:
Config file locations:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Tool Reference
The license_key is always injected automatically from POP_API_KEY — never pass it manually.
pop_create_sdi_invoice
Generate an Italian FatturaPA XML document. Optionally submit it to the SdI (Sistema di Interscambio).
MCP inputs:
Integration options for integration.use:
"sdi-via-pop"or"sdi"— Submit via POP SdI"pop-to-webhook"— Deliver to a webhook (requiresid)"fatture-in-cloud"— Deliver to Fatture in Cloud
API payload sent:
integrationis omitted whensubmit_to_sdiisfalseand no override is provided (XML-only generation).
pop_create_peppol_invoice
Generate a Peppol UBL 2.1 document. Optionally submit it to the Peppol network.
MCP inputs:
Integration options for integration.use:
"peppol-via-pop"or"peppol"— Submit via POP Peppol"pop-to-webhook"— Deliver to a webhook (requiresid)
VAT exemption rules specific to Peppol:
data.natureis the VAT exemption code (a VATEX code such asVATEX-EU-G,VATEX-EU-IC,VATEX-EU-AEorVATEX-EU-O; these are examples, not a complete list). It stays a free string: the POP API verifies it and answers with a plain-language error.- The exemption code comes from the user. The model never chooses, infers (countries,
vies, VAT rate) or changes it, and asks when it is missing. An API error is shown to the user and the call is not retried with another code. - The API requires
data.delivery_data.country(ISO 3166-1 alpha-2, country only, never the address) when the code isVATEX-EU-IC.delivery_data.date(YYYY-MM-DD) is optional and defaults to the document date. A credit note carries the samedelivery_dataas the invoice it reverses.
API payload sent:
pop_create_pdf_invoice
Generate a branded PDF invoice. Optionally email it to up to 3 recipients.
MCP inputs:
data.pdf fields:
API payload sent:
pop_create_ksef_invoice
Generate a Polish KSeF FA(3) XML invoice or credit note. Optionally submit it through a configured KSeF provider integration.
MCP inputs:
Domain rules specific to KSeF:
- Poland only —
transfer_lender.personal_data.tax_id_vat.country_idmust be"PL"with a 10-digit NIP asid_code customer_typemust be"company"or"freelance"(no private individuals)natureis always required at the top level for KSeF (unlike SdI/Peppol, where it's only required at 0% VAT) — reuses the same SdI nature codes (N1,N2.1,N2.2,N3.1,N3.2,N4, ...) to derive KSeF's internal fiscal varianttransmitter_datais not used (SdI-only concept)payment_data.payment_detailsonly acceptsMP01,MP02/MP03,MP05,MP08— other payment method codes are rejected at generation time- Base XML generation is available on any plan; provider submission via
integration.use: "ksef"requires a Basic+ plan and the supplier already enrolled as a KSeF legal entity in the POP dashboard
API payload sent:
integrationis omitted entirely for local XML-only generation (no provider submission).
Returns: raw FA(3) XML (application/xml) for local generation, or JSON (with a UUID) when submitted through a provider integration.
pop_create_zugferd_invoice
Generate a ZUGFeRD/Factur-X document package: a visual PDF, an EN16931 CII XML, and a hybrid PDF/A-3 with the XML embedded.
MCP inputs:
This tool has no integration parameter — ZUGFeRD generation is local only, with no submit/delivery step.
API payload sent:
Returns: JSON with generation metadata and three Base64-encoded attachments:
pop_get_invoice_status
Retrieve the SdI processing status and notifications for a submitted invoice.
MCP inputs:
API payload sent:
SdI notification statuses: pending · accepted · rejected · delivery
SdI processing is asynchronous and can take minutes to hours. Retry if no notifications are returned yet.
pop_get_peppol_document
Retrieve a Peppol document from the network by UUID.
MCP inputs:
API payload sent:
zoneis omitted from the payload if not provided.
pop_get_sdi_document
Retrieve an archived SdI (FatturaPA) document from POP storage by UUID.
MCP inputs:
API payload sent:
Requires: Basic+ plan with active SdI integration.
pop_verify_sdi_document
Validate an SdI XML document for compliance before submission. Does not submit the document.
MCP inputs:
API payload sent:
Validation checks performed: XML schema conformance · fiscal code format · VAT number validity · required field presence · amount consistency
Requires: Basic+ plan with active SdI integration and registered business.
pop_preserve_document
Archive an SdI document in certified long-term digital storage (conservazione sostitutiva). Italian law requires invoices to be preserved for 10 years.
MCP inputs:
API payload sent:
Important: Only call this tool when
pop_get_invoice_statusreturns statusRC(Ricevuta di Consegna) orMC(Mancata Consegna). Do not call for statusesNS,EC,SE, orDT.
Requires: Basic+ plan with active SdI integration.
Usage Examples
Generate a Simple Italian Invoice (XML Only)
Ask your AI assistant:
"Create a FatturaPA invoice for 1000€ + 22% VAT to Rossi SRL (VAT IT12345678901, Milan). My company is Bianchi SRL (VAT IT98765432109, Rome), using payment method bank transfer to IBAN IT60X0542811101000000123456."
Submit Invoice to SdI
"Create and submit to SdI an invoice #45 for consulting services, 500€ + 22% VAT to customer Mario Rossi (fiscal code RSSMRA80A01H501U) in Rome."
Check Invoice Status After Submission
"What's the status of SdI invoice with UUID abc123-def456-...?"
Generate PDF with Email Delivery
"Create a PDF invoice for order #123 and email it to [email protected]."
Verify SdI Document Before Sending
"Verify SdI document with UUID abc123-... for compliance before submission."
Plan Requirements
Testing
MCP Inspector (Interactive)
Quick Smoke Test
Test Tool Schema Listing
Development
Invoice Data Structure
The data parameter for invoice creation follows the FatturaPA structure:
Error Reference
Related Projects
- n8n-nodes-pop — n8n community nodes for POP
- POP — Official website
- API Documentation — Postman docs
License
MIT © getpopapi
來源:README.md,提交 e77d496
工具
0版本歷史
2- v2.1.0最新Oct 29, 2026
- v1.1.0Sep 16, 2026
評分
已滿足適用檢查項的 85%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通必需25 分
- 已宣告認證方式必需10 分
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分