Italian e-invoicing (FatturaPA/SdI), Peppol, and PDF invoice generation via POP
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
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
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.
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.
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.
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).
POP is a cloud service for electronic invoice generation and delivery, supporting:
| Tool | Endpoint | Plan |
|---|---|---|
pop_create_sdi_invoice | POST /create-xml | Any |
pop_create_peppol_invoice | POST /create-ubl | Any (Basic+ to submit) |
pop_create_pdf_invoice | POST /create-pdf | Any (Basic+ for email) |
pop_create_ksef_invoice | POST /create-ksef-xml | Any (KSeF setup for provider submission) |
pop_create_zugferd_invoice | POST /create-zugferd | Any |
pop_sync_zoho_document | POST /integration/zoho/sync | Zoho connector required |
| Tool | Endpoint | Plan |
|---|---|---|
pop_get_invoice_status | POST /sdi/document-notifications | Any |
pop_get_peppol_document | POST /peppol/document-get | Basic+ |
pop_get_sdi_document | POST /sdi/document-get | Basic+ |
| Tool | Endpoint | Plan |
|---|---|---|
pop_verify_sdi_document | POST /sdi/document-verify | Basic+ |
pop_preserve_document | POST /sdi/document-preserve | Basic+ |
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:
license_keylicense_key, visible under Account > APIlicense_key must be treated as a secret credential โ do not commit it to source controllicense_keyGET /account-profileSet your POP license key as an environment variable:
Optional โ use the staging environment:
Add to your claude_desktop_config.json:
If installed from npm:
If running from source:
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonThe license_key is always injected automatically from POP_API_KEY โ never pass it manually.
pop_create_sdi_invoiceGenerate an Italian FatturaPA XML document. Optionally submit it to the SdI (Sistema di Interscambio).
MCP inputs:
| Parameter | Type | Required | Description |
|---|---|---|---|
data | object | โ | Full invoice data (see Invoice Data Structure) |
submit_to_sdi | boolean | โ | Set true to submit to SdI. Requires Basic+ plan with active SdI integration. Default: false |
integration | object | โ | Override integration config. Overrides submit_to_sdi if set. |
environment | string | โ | Target environment (e.g. "sandbox") |
Integration options for integration.use:
"sdi-via-pop" or "sdi" โ Submit via POP SdI"pop-to-webhook" โ Deliver to a webhook (requires id)"fatture-in-cloud" โ Deliver to Fatture in CloudAPI payload sent:
integrationis omitted whensubmit_to_sdiisfalseand no override is provided (XML-only generation).
pop_create_peppol_invoiceGenerate a Peppol UBL 2.1 document. Optionally submit it to the Peppol network.
MCP inputs:
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/pop-mcp)<a href="https://allmcps.com/mcp/pop-mcp"><img src="https://allmcps.com/api/badge/pop-mcp?style=directory" alt="Pop MCP on AllMCPs" /></a>