mcpField
P
pop-mcp

pop-mcp

リモート
github.com/getpopapi金融データ01 日前に更新
リポジトリ

pop-mcp について

pop-mcpは、POPを使ってイタリアの電子請求書や複数の国際形式の請求書を作成・管理するMCPサーバーです。ホスト型HTTP接続とローカル実行に対応し、検証、送信、文書照会のツールを提供します。

主な機能

  1. 01FatturaPA、Peppol、KSeF請求書の作成
  2. 02ZUGFeRDとPDF請求書の生成
  3. 03請求書の送信とステータス確認
  4. 04SdI文書の検証
  5. 05イタリアの法定保存向け文書保管

活用シーン

  1. 01イタリア事業向けFatturaPA請求書の生成と送信
  2. 02PeppolまたはKSeF電子請求書の作成
  3. 03ブランド付きPDF請求書の作成とメール送信

MCP 対応

請求書の作成、送信、照会、検証、保存を行う11種類のツールをMCPクライアントに公開します。ホスト型HTTPエンドポイントへの接続と、ローカルstdioサーバーの実行に対応します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.popapi.io/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.popapi.io/mcp認証が必要
パッケージ
npm@getpopapi/pop-mcp2.1.0

ツール

13
パラメーター型必須説明
dataobjectはい請求書データオブジェクト全体
data.idintegerはい請求書/注文 ID(数値)
data.pdfobjectいいえPDF 生成設定(create-pdf エンドポイントのみ)
data.pdf.headobjectはい
data.pdf.head.billingarrayはい請求先住所の詳細
data.pdf.head.shippingarrayいいえ配送先住所の詳細(任意)
data.pdf.head.store_info_addressstringはい店舗/会社の住所全体を表す文字列
data.pdf.logo_urlstringいいえPDF に含める会社ロゴの URL
data.pdf.nature_rcstringいいえリバースチャージの VAT 免税区分コード
data.pdf.total_taxstringはい税額合計の文字列
data.pdf.footer_textstringいいえPDF のカスタムフッターテキスト
data.pdf.ref_norm_rcstringいいえリバースチャージの法的根拠
data.pdf.invoice_htmlenumはいHTML 請求書を生成するかどうかtrue | false
data.pdf.email_invoiceobjectいいえメール配信設定
data.pdf.email_invoice.toarrayはい受信者のメールアドレス(最大 3 件)
data.pdf.email_invoice.fromstringいいえ返信先メールアドレス
data.pdf.doc_type_titlestringはいPDF に表示するドキュメントのタイトル(例:'Invoice'、'Receipt'、'Credit Note')
data.pdf.ref_n5_normativestringいいえN5(リバースチャージ)免税の法的根拠
data.typeenumはい書類の種類invoice | credit_note
data.viesbooleanいいえこの顧客に対して EU VIES 検証を実施したかどうか
data.naturestringいいえVAT 免税区分コード(例:'N2.1'、'N3.1'、'N6.1')— VAT 税率が 0% の場合は必須
data.versionenumはい民間/企業向けは FPR12、公共行政機関向けは FPA12FPR12 | FPA12
data.filenamestringはい拡張子を含まない出力ファイル名(例:'IT99900088876_00009')
data.sdi_typestringはいSDI 受信者コード — 7 文字(SDI コードを持たない個人は '0000000')
data.vat_kindenumいいえイタリアの VAT 種別:I=Imponibile、D=Deducibile、S=ScissioneI | D | S
data.overridesobjectいいえロケールと印紙税設定の任意の上書き
data.overrides.languagestringいいえロケールの上書き(例:'it'、'en'、'de'、'fr'、'es')
data.overrides.bollo_force_applybooleanいいえイタリアの請求書に仮想印紙税(bollo virtuale)を強制適用する
data.order_itemsarrayはい明細項目(商品、サービス、送料)
data.invoice_bodyobjectはい
data.invoice_body.general_dataobjectはい
data.invoice_body.general_data.datestringはい請求書の日付(形式:YYYY-MM-DD)
data.invoice_body.general_data.currencystringいいえISO 4217 通貨コード(デフォルト:'EUR')
data.invoice_body.general_data.doc_typeenumはい請求書は TD01、クレジットノートは TD04TD01 | TD04
data.invoice_body.general_data.invoice_numberstringはい完全な請求書番号(例:'WEB9/2025')
data.invoice_body.general_data.invoice_prefixstringいいえ請求書番号のプレフィックス(例:'WEB')
data.invoice_body.general_data.invoice_suffixstringいいえ請求書番号のサフィックス(例:'9/2025')
data.invoice_body.total_document_amountstring|numberはい税込みの請求書合計金額(例:'122.00')
data.payment_dataobjectはい
data.payment_data.ibanstringいいえIBAN — MP05(銀行振込)で必須
data.payment_data.beneficiarystringいいえ銀行口座の受取人名 — MP05(銀行振込)で必須
data.payment_data.terms_paymentenumはいTP01=分割払い、TP02=全額払い、TP03=前払いTP01 | TP02 | TP03
data.payment_data.payment_amountstringはい支払金額(例:'122.00')
data.payment_data.payment_detailsenumはい支払方法:MP01=現金、MP02=小切手、MP05=銀行振込、MP08=クレジットカード、MP12=RIBA、MP16=口座振替、MP19=SEPA、MP21=SEPA Core、MP22=源泉徴収、MP23=PagoPAMP01 | MP02 | MP05 | MP08 | MP12 | MP15 | MP16 | MP19 | MP21 | MP22 | MP23
data.payment_data.financial_institutionstringいいえ銀行名 — MP05(銀行振込)で必須
data.customer_typeenumはい顧客区分private | company | freelance | pa
data.ref_normativestringいいえ付加価値税免税の法的根拠
data.transfer_lenderobjectはい仕入先/販売者の詳細
data.transfer_lender.placeobjectはい
data.transfer_lender.place.citystringはい市区町村
data.transfer_lender.place.addressstringはい住所
data.transfer_lender.place.zip_codestringはい郵便番号
data.transfer_lender.place.country_idstringはいISO 国コード(例:'IT')
data.transfer_lender.place.province_idstringいいえ州/県コード(例:ミラノの 'MI'、カターニアの 'CT')
data.transfer_lender.contactobjectはい
data.transfer_lender.contact.emailstringはいメールアドレス
data.transfer_lender.contact.phonestringはい電話番号
data.transfer_lender.personal_dataobjectはい
data.transfer_lender.personal_data.last_namestringいいえ姓(個人/フリーランスの場合)
data.transfer_lender.personal_data.first_namestringいいえ名(個人/フリーランスの場合)
data.transfer_lender.personal_data.tax_id_vatobjectはい
data.transfer_lender.personal_data.company_namestringいいえ会社名または事業名(個人でない場合は必須)
data.transmitter_dataobjectはい
data.transmitter_data.sdi_codestringはいSDI 宛先コード — 7 文字(個人の場合は '0000000')
data.transmitter_data.progressivestringはい送信連番 ID(例:'00001')
data.transmitter_data.recipient_pecstringいいえ配信用 PEC(認証済みメール)— SDI コードの代替
data.transmitter_data.transmitter_idobjectはい送信者の納税者識別情報
data.transmitter_data.transmitter_id.id_codestringはい付加価値税番号または税 ID(例:イタリアの '12345678901')
data.transmitter_data.transmitter_id.country_idstringはいISO 3166-1 alpha-2 国コード(例:'IT'、'DE'、'FR')
data.transmitter_data.transmitter_formatenumはい民間/企業向けは FPR12、公共行政機関向けは FPA12FPR12 | FPA12
data.transmitter_data.transmitter_contactobjectはい
data.transmitter_data.transmitter_contact.emailstringはい送信者のメールアドレス
data.transmitter_data.transmitter_contact.phonestringはい送信者の電話番号
data.transferee_clientobjectはい顧客/購入者の詳細
data.transferee_client.placeobjectはい
data.transferee_client.place.citystringはい市区町村
data.transferee_client.place.addressstringはい住所
data.transferee_client.place.zip_codestringはい郵便番号
data.transferee_client.place.country_idstringはいISO 国コード
data.transferee_client.place.province_idstringいいえ州/県コード(イタリア以外の住所では任意)
data.transferee_client.personal_dataobjectはい
data.transferee_client.personal_data.emailstringいいえ顧客のメールアドレス
data.transferee_client.personal_data.last_namestringいいえ顧客の姓
data.transferee_client.personal_data.first_namestringいいえ顧客の名
data.transferee_client.personal_data.tax_id_vatobjectはい
data.transferee_client.personal_data.tax_id_codestringいいえイタリアの税務コード(codice fiscale)— イタリアの個人の場合は必須
data.transferee_client.personal_data.company_namestringいいえ会社名
data.purchase_order_dataobjectいいえ発注書参照情報
data.purchase_order_data.idstringはい発注書 ID/番号
data.purchase_order_data.datestringはい発注日(YYYY-MM-DD 形式)
data.connected_invoice_dataarrayいいえ参照する請求書(クレジットノートでは必須)
site_urlstringいいえサイト/ショップの URL
site_titlestringいいえサイト/ショップのタイトル
environmentstringいいえ対象環境(例:'sandbox')
integrationanyいいえ統合設定 — デフォルトの動作を上書きするか、webhook/Fatture in Cloud 経由で配信するために使用します。設定すると submit_to_sdi を上書きします。
submit_to_sdibooleanいいえtrue の場合、請求書をイタリアの SdI(Sistema di Interscambio)に自動送信します。POP 統合で SdI を有効にする必要があります(Growth+ プラン)。
plugin_versionstringいいえ呼び出し元アプリケーションのバージョン

詳細

pop-mcp

POP 用の MCP(Model Context Protocol)サーバーです。LLM が AI アシスタントから直接、イタリアの電子請求書(FatturaPA/SdI)、Peppol、KSeF、ZUGFeRD/Factur-X、および PDF 請求書を生成、送信、管理できるようにします。

npm: @getpopapi/pop-mcp · リモート: https://mcp.popapi.io/mcp

ライセンス:MIT Node.js


リモート MCP(HTTP)— 最も手軽な始め方

何もインストールしたくない場合は、ホスト型のマルチテナント MCP サーバーとして動作する pop-mcp をこちらで利用できます。

https://mcp.popapi.io/mcp

popapi.io にアクセスしてライセンスキーを取得し、その URL を、キーを Bearer トークンとして任意の MCP 対応クライアントに指定してください。ローカルへのインストールも、POP_API_KEY 環境変数も、ビルド手順も不要です。ほとんどの方には、pop-mcp を試す方法としてこちらをおすすめします。ご自身のマシンでプロセスを実行する Claude Desktop の設定が特に必要な場合にのみ、以下のローカル stdio セットアップを使用してください。

仕組み

このエンドポイントは、完全にステートレスな MCP 2026-07-28 に対応しています。initialize ハンドシェイクはなく、開始または追跡するセッションもありません。すべてのリクエストは自己完結しており、それぞれがプロトコルバージョンと機能を指定し、サーバーは個別に応答します。そのため、このエンドポイントはマルチテナントです。サーバー自身の環境から固定の POP_API_KEY を読み取ることはありません。すべてのリクエストには、Bearer トークンとしてご自身の POP ライセンスキーを含める必要があります。

Authorization: Bearer <your_license_key>

Authorization ヘッダーがない、または形式が正しくない場合、POP API を呼び出す前に error_code: "unauthorized_user" を含む 401 が返されます。形式は正しいものの無効なキーは、そのまま POP の API に渡され、POP が返すエラー(unauthorized_user、insufficient_level など)が表示されます。サーバー自体ではキーを再検証しません。

最新の MCP HTTP クライアントであれば接続できます。Claude(リモートコネクター)、OpenAI Responses API、n8n、MCP Inspector、カスタム統合などに対応しており、Claude Desktop だけに限定されません。請求書、ステータス、高度な機能、オンボーディングの各ツールをすべて利用できます。オンボーディングツールは呼び出しごとに独自の onboarding_token を使用し、Bearer キーは必要ありません。

curl を使った例

サーバーがサポートするプロトコルバージョンと機能を確認します(任意です。クライアントは tools/list または tools/call を直接呼び出し、バージョンネゴシエーションエラーをその場で処理することもできます)。

curl -X POST https://mcp.popapi.io/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your_license_key_here" \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -H "Mcp-Method: server/discover" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "server/discover",
    "params": { "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientCapabilities": {} } }
  }'

利用可能なツールの一覧を取得します。すべてのリクエストは自己完結しているため、_meta(プロトコルバージョンとクライアント機能)は最初の呼び出しだけでなく、毎回の呼び出しに含めます。

curl -X POST https://mcp.popapi.io/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer your_license_key_here" \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -H "Mcp-Method: tools/list" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list",
    "params": { "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientCapabilities": {} } }
  }'

ツールカタログはすべてのライセンスキーで共通です。そのため、tools/list と server/discover のレスポンスには、1 時間の公開キャッシュヒント(ttlMs: 3600000, cacheScope: "public")が含まれます。クライアントやゲートウェイは、テナントをまたいでこれらをキャッシュできます。

MCP-Protocol-Version と Mcp-Method は、すべてのリクエストで必須です(SEP-2243 に準拠)。これらは本文の _meta.protocolVersion および method と完全に一致する必要があります。一致しない場合、サーバーは 400 と JSON-RPC エラー -32020(HeaderMismatch)を返します。tools/call リクエストでは、さらに params.name と一致する Mcp-Name ヘッダーも必要です。

MCP Inspector を使った例
npx @modelcontextprotocol/inspector

https://mcp.popapi.io/mcp に接続するよう設定し、ヘッダーに Authorization: Bearer <your_license_key> を指定してください。

このエンドポイントは Vercel サーバーレス関数(api/mcp.ts → src/mcpHandler.ts)として動作します。ローカルで実行するには、npx vercel dev を使います(事前に vercel link でプロジェクトをリンクする必要があります)。


POP とは?

POP は、電子インボイスの作成と送信を行うクラウドサービスで、以下をサポートしています。

  • 🇮🇹 イタリアの電子インボイス(FatturaPA/SdI) — D.Lgs. 127/2015 に準拠
  • 🇪🇺 Peppol — 欧州全域を対象とする国境を越えた B2B 請求(UBL 2.1)
  • 📄 PDF インボイス — ブランド対応、メール送信付き
  • ✅ 検証 — 納税者番号、VAT 番号、送信前の書類チェック
  • 🗄️ 保存 — イタリアの法定アーカイブ(conservazione sostitutiva)

利用可能なツール(合計 11 個)

インボイスの作成
ツールエンドポイントプラン
pop_create_sdi_invoicePOST /create-xmlすべて
pop_create_peppol_invoicePOST /create-ublすべて(送信には Basic 以上)
pop_create_pdf_invoicePOST /create-pdfすべて(メール送信には Basic 以上)
pop_create_ksef_invoicePOST /create-ksef-xmlすべて(プロバイダーへの送信には KSeF の設定が必要)
pop_create_zugferd_invoicePOST /create-zugferdすべて
pop_sync_zoho_documentPOST /integration/zoho/syncZoho コネクターが必要
ステータスと取得
ツールエンドポイントプラン
pop_get_invoice_statusPOST /sdi/document-notificationsすべて
pop_get_peppol_documentPOST /peppol/document-getBasic 以上
pop_get_sdi_documentPOST /sdi/document-getBasic 以上
検証と高度な SdI 操作
ツールエンドポイントプラン
pop_verify_sdi_documentPOST /sdi/document-verifyBasic 以上
pop_preserve_documentPOST /sdi/document-preserveBasic 以上

前提条件

  • Node.js >= 20
  • POP のライセンスキー
  • SdI/Peppol への送信には、POP アカウントで有効なインテグレーションが必要です(Basic/Growth プラン)

認証

ライセンスキーの取得

POP を初めてご利用ですか? popapi.io にアクセスしてアカウントを作成し、ライセンスキーを取得してください。

API のみを利用するユーザーは、次の手順でアカウントを有効化し、license_key を取得できます。

  1. https://popapi.io/otp-login/ を開きます
  2. メールアドレスを入力します
  3. メールで届いたワンタイムパスワード(OTP)を受け取り、入力します
  4. 設定ウィザードを完了します
  5. https://popapi.io/ → Account > API を開きます
  6. デフォルトで生成された license_key をコピーします
キーの管理
  • アカウントにはデフォルトの license_key が 1 つ含まれており、Account > API で確認できます
  • 同じページから、同じアカウントに紐づくキーを追加で生成できます
  • すべての license_key は秘密の認証情報として扱ってください。ソース管理にコミットしないでください
推奨される最初の手順
  1. license_key を取得します
  2. GET /account-profile でテストします
  3. 実際のペイロードを使って、書類生成リクエストを 1 件送信します
  4. ローカルでの生成が正常に動作してから、任意の送信インテグレーションを追加します

インストール

npm から(推奨)
npm install -g @getpopapi/pop-mcp
ソースから
git clone https://github.com/getpopapi/pop-mcp
cd pop-mcp
npm install
npm run build

設定

POP のライセンスキーを環境変数として設定します。

export POP_API_KEY=your_license_key_here

任意 — ステージング環境を使用します。

export POP_ENVIRONMENT=staging

Claude Desktop の設定

claude_desktop_config.json に追加します。

npm からインストールした場合:

{
  "mcpServers": {
    "pop": {
      "command": "pop-mcp",
      "env": {
        "POP_API_KEY": "your_license_key_here"
      }
    }
  }
}

ソースから実行する場合:

{
  "mcpServers": {
    "pop": {
      "command": "node",
      "args": ["/path/to/pop-mcp/dist/cli.js"],
      "env": {
        "POP_API_KEY": "your_license_key_here"
      }
    }
  }
}

設定ファイルの場所:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

ツールのリファレンス

license_key は POP_API_KEY から常に自動的に挿入されるため、手動で渡さないでください。

pop_create_sdi_invoice

イタリアの FatturaPA XML ドキュメントを生成します。オプションで SdI(Sistema di Interscambio)に送信できます。

MCP 入力:

パラメーター型必須説明
dataobject✅請求書データ一式(Invoice Data Structure を参照)
submit_to_sdiboolean—SdI に送信するには true を設定します。アクティブな SdI 連携を含む Basic+ プランが必要です。デフォルト:false
integrationobject—連携設定を上書きします。設定されている場合、submit_to_sdi より優先されます。
environmentstring—対象環境(例:"sandbox")

integration.use の連携オプション:

  • "sdi-via-pop" または "sdi" — POP SdI 経由で送信します
  • "pop-to-webhook" — Webhook に配信します(id が必要です)
  • "fatture-in-cloud" — Fatture in Cloud に配信します

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "user_agent": "pop-mcp",
  "user_agent_version": "1.0.0",
  "data": { "...invoice fields..." },
  "integration": { "use": "sdi-via-pop", "action": "create" }
}

submit_to_sdi が false で、上書き設定も指定されていない場合、integration は省略されます(XML のみを生成します)。


pop_create_peppol_invoice

Peppol UBL 2.1 ドキュメントを生成します。オプションで Peppol ネットワークに送信できます。

MCP 入力:

パラメーター型必須説明
dataobject✅請求書データ一式。customer_type は "company" または "freelance" である必要があります
submit_to_peppolboolean—Peppol ネットワークに送信するには true を設定します。Basic+ プランが必要です。デフォルト:false
integrationobject—連携設定を上書きします
environmentstring—対象環境

integration.use の連携オプション:

  • "peppol-via-pop" または "peppol" — POP Peppol 経由で送信します
  • "pop-to-webhook" — Webhook に配信します(id が必要です)

Peppol 固有の VAT 免税ルール:

  • data.nature は VAT 免税コードです(VATEX-EU-G、VATEX-EU-IC、VATEX-EU-AE、VATEX-EU-O などの VATEX コード。これらは例であり、すべてのコードを網羅しているわけではありません)。自由形式の文字列として扱われます。POP API が検証し、平易な言葉でエラーを返します。
  • 免税コードはユーザーから取得します。モデルがコードを選択、推測(国、vies、VAT 率など)または変更することはありません。コードがない場合はユーザーに確認します。API エラーはユーザーに表示され、別のコードで再試行されることはありません。
  • コードが VATEX-EU-IC の場合、API は data.delivery_data.country(ISO 3166-1 alpha-2、国のみ。住所は指定しません)を必須とします。delivery_data.date(YYYY-MM-DD)は任意で、省略するとドキュメントの日付が使用されます。クレジットノートには、取り消し対象の請求書と同じ delivery_data を指定します。

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "user_agent": "pop-mcp",
  "user_agent_version": "1.0.0",
  "data": { "...invoice fields...", "nature": "VATEX-EU-IC", "delivery_data": { "country": "FR" } },
  "integration": { "use": "peppol-via-pop", "action": "create" }
}

pop_create_pdf_invoice

ブランド設定付きの PDF 請求書を生成します。オプションで最大 3 人の宛先にメールで送信できます。

MCP 入力:

パラメーター型必須説明
dataobject✅請求書データ。PDF 固有の設定として data.pdf を含める必要があります
send_emailboolean—PDF をメールで送信するには true を設定します(data.pdf.email_invoice と Basic+ プランが必要です)。デフォルト:false
environmentstring—対象環境

data.pdf のフィールド:

フィールド説明
doc_type_titleドキュメントに表示するタイトル(例:"Invoice"、"Receipt")
logo_url会社のロゴ URL(HTTPS)
head.store_info_addressヘッダーに表示するサプライヤーの住所文字列
head.billing[]顧客の請求先住所の配列
head.shipping[]配送先住所の配列(任意)
email_invoice.to宛先メールアドレス(最大 3 件)
email_invoice.from返信先アドレス
footer_textカスタムフッターメッセージ
total_tax文字列形式の税額合計

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "user_agent": "pop-mcp",
  "user_agent_version": "1.0.0",
  "data": {
    "...invoice fields...",
    "pdf": {
      "doc_type_title": "Invoice",
      "logo_url": "https://example.com/logo.png",
      "head": { "store_info_address": "Via Roma 1, 00100 Roma IT", "billing": [] },
      "total_tax": "22.00",
      "email_invoice": { "to": ["[email protected]"] }
    }
  }
}

pop_create_ksef_invoice

ポーランドの KSeF FA(3) 請求書またはクレジットノートを生成します。設定済みの KSeF プロバイダー統合を通じて送信することもできます。

MCP の入力:

パラメーター型必須説明
dataobject✅KSeF FA(3) の生成に使用する請求書データ一式
integrationobject—KSeF プロバイダーへの送信設定(任意):{ use: "ksef" | "ksef-via-pop", action }
environmentstring—対象環境(例:"sandbox")

KSeF 固有のドメインルール:

  • ポーランドのみ — transfer_lender.personal_data.tax_id_vat.country_id は "PL"、id_code は 10 桁の NIP である必要があります
  • customer_type は "company" または "freelance" である必要があります(個人は不可)
  • KSeF ではトップレベルの nature が常に必須です(SdI/Peppol では VAT 率 0%の場合のみ必須です)。SdI と同じ nature コード(N1、N2.1、N2.2、N3.1、N3.2、N4 など)を再利用して、KSeF の内部税務区分を導出します
  • transmitter_data は使用されません(SdI のみで使用される概念です)
  • payment_data.payment_details で受け付けるのは MP01、MP02/MP03、MP05、MP08 のみです。それ以外の支払方法コードは生成時に拒否されます
  • ベース XML の生成はすべてのプランで利用できます。プロバイダー経由の送信で integration.use: "ksef" を使用するには、Basic 以上のプランが必要です。また、サプライヤーは POP ダッシュボードで KSeF の法人として登録済みである必要があります

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "user_agent": "pop-mcp",
  "user_agent_version": "1.0.0",
  "data": { "...invoice fields...", "nature": "N1" },
  "integration": { "use": "ksef", "action": "create" }
}

ローカルで XML のみを生成する場合(プロバイダー経由の送信なし)、integration は完全に省略されます。

戻り値: ローカル生成の場合は未加工の FA(3) XML(application/xml)、プロバイダー統合経由で送信する場合は JSON(UUID を含む)です。


pop_create_zugferd_invoice

ZUGFeRD/Factur-X ドキュメントパッケージを生成します。パッケージには、表示用 PDF、EN16931 CII XML、および XML を埋め込んだハイブリッド PDF/A-3 が含まれます。

MCP の入力:

パラメーター型必須説明
dataobject✅ZUGFeRD/Factur-X の生成に使用する請求書データ一式
environmentstring—対象環境(例:"sandbox")

このツールには integration パラメーターがありません。ZUGFeRD の生成はローカルのみで、送信や配信の処理はありません。

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "user_agent": "pop-mcp",
  "user_agent_version": "1.0.0",
  "data": { "...invoice fields..." }
}

戻り値: 生成メタデータと、Base64 でエンコードされた 3 つの添付ファイルを含む JSON です。

{
  "success": true,
  "data": {
    "valid": true,
    "profile": "EN16931",
    "attachments": {
      "pdf": { "filename": "...", "mime": "application/pdf", "content_base64": "..." },
      "xml": { "filename": "...", "mime": "application/xml", "content_base64": "..." },
      "hybrid_pdf": { "filename": "...", "mime": "application/pdf", "content_base64": "..." }
    },
    "validation": { "...": "..." },
    "errors": [],
    "warnings": []
  }
}

pop_get_invoice_status

送信済み請求書の SdI 処理ステータスと通知を取得します。

MCP の入力:

パラメーター型必須説明
uuidstring (UUID)✅submit_to_sdi=true の場合に pop_create_sdi_invoice が返す請求書 UUID
response_format"markdown" | "json"—出力形式。デフォルト:"markdown"
environmentstring—対象環境

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "integration": { "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
}

SdI 通知ステータス: pending · accepted · rejected · delivery

SdI の処理は非同期で、数分から数時間かかることがあります。通知がまだ返されない場合は、再試行してください。


pop_get_peppol_document

UUID を使用して、ネットワークから Peppol ドキュメントを取得します。

MCP の入力:

パラメーター型必須説明
uuidstring (UUID)✅pop_create_peppol_invoice が返す Peppol ドキュメント UUID
zonestring (2 chars)—Peppol アクセスポイントの国コード(例:ベルギーの場合は "BE")。一部の地域では必須です。
response_format"markdown" | "json"—出力形式。デフォルト:"markdown"
environmentstring—対象環境

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "integration": { "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "zone": "IT" }
}

zone が指定されていない場合、ペイロードから省略されます。


pop_get_sdi_document

UUID を使用して、POP ストレージからアーカイブ済みの SdI(FatturaPA)文書を取得します。

MCP 入力:

パラメーター型必須説明
uuidstring (UUID)✅SdI 文書の UUID
response_format"markdown" | "json"—出力形式。デフォルト:"markdown"
environmentstring—対象環境

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "integration": { "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
}

要件:SdI 統合が有効な Basic+ プラン。


pop_verify_sdi_document

提出前に、SdI XML 文書が準拠しているか検証します。文書は提出されません。

MCP 入力:

パラメーター型必須説明
xml_base64string✅Base64 文字列としてエンコードされた SdI XML 文書
environmentstring—対象環境

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "skip_business_check": true,
  "integration": { "xml": "<base64-encoded-xml-string>" }
}

実行される検証: XML スキーマへの準拠・税務コードの形式・VAT 番号の有効性・必須フィールドの存在・金額の整合性

要件:SdI 統合が有効で、事業者登録済みの Basic+ プラン。


pop_preserve_document

認定された長期デジタルストレージ(conservazione sostitutiva)に SdI 文書をアーカイブします。イタリアの法律では、請求書を10年間保存することが義務付けられています。

MCP 入力:

パラメーター型必須説明
uuidstring (UUID)✅アーカイブする SdI 文書の UUID
environmentstring—対象環境

送信される API ペイロード:

{
  "license_key": "YOUR_LICENSE_KEY",
  "integration": { "uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
}

重要: pop_get_invoice_status がステータス RC(Ricevuta di Consegna)または MC(Mancata Consegna)を返す場合にのみ、このツールを呼び出してください。ステータス NS、EC、SE、DT の場合は呼び出さないでください。

要件:SdI 統合が有効な Basic+ プラン。


使用例

シンプルなイタリアの請求書を生成する(XML のみ)

AI アシスタントに次のように依頼します:

「Rossi SRL(VAT IT12345678901、ミラノ)宛てに、1000€ + 22% VAT の FatturaPA 請求書を作成してください。私の会社は Bianchi SRL(VAT IT98765432109、ローマ)です。支払方法は、IBAN IT60X0542811101000000123456 への銀行振込です。」

請求書を SdI に提出する

「コンサルティングサービスについて、顧客 Mario Rossi(税務コード RSSMRA80A01H501U、ローマ)宛てに、500€ + 22% VAT の請求書 #45 を作成して SdI に提出してください。」

提出後に請求書のステータスを確認する

「UUID abc123-def456-... の SdI 請求書のステータスは何ですか?」

メール送信付きで PDF を生成する

「注文 #123 の PDF 請求書を作成し、[email protected] にメールで送信してください。」

送信前に SdI 文書を検証する

「提出前に、UUID abc123-... の SdI 文書が要件に準拠しているか検証してください。」


プラン要件

機能FreeBasic/GrowthPro
XML 生成(ローカル)✅✅✅
PDF 生成✅✅✅
SdI への提出❌✅✅
Peppol への提出❌✅✅
PDF のメール送信❌✅✅
SdI 文書の検証❌✅✅
文書の保存❌✅✅

テスト

MCP Inspector(対話型)
npm run inspector
# or
npx @modelcontextprotocol/inspector dist/cli.js
クイックスモークテスト
POP_API_KEY=your_key node -e "
import('./dist/cli.js').catch(e => {
  if (e.message.includes('stdin')) process.exit(0);
  console.error(e); process.exit(1);
});
"
ツールスキーマの一覧表示をテストする
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | POP_API_KEY=test node dist/cli.js

開発

# Run with auto-reload
npm run dev

# Build
npm run build

# Clean build artifacts
npm run clean

請求書データ構造

請求書作成の data パラメーターは、FatturaPA の構造に従います:

data
├── id                    Invoice/order ID (numeric)
├── filename              Output filename without extension (e.g. 'IT99900088876_00009')
├── type                  "invoice" | "credit_note"
├── version               "FPR12" | "FPA12"
├── sdi_type              7-char SDI code ('0000000' for private individuals)
├── customer_type         "private" | "company" | "freelance" | "pa"
├── nature                VAT exemption code (required when rate is 0%, e.g. 'N2.1', 'N6.1')
├── transmitter_data
│   ├── transmitter_id    { country_id, id_code }
│   ├── progressive       Transmission progressive ID (e.g. '00001')
│   ├── transmitter_format  "FPR12" | "FPA12"
│   ├── sdi_code          7-char code
│   ├── transmitter_contact { phone, email }
│   └── recipient_pec     PEC email (alternative to sdi_code)
├── transfer_lender       Supplier/seller
│   ├── personal_data     { tax_id_vat: { country_id, id_code, tax_regime }, company_name }
│   ├── place             { address, zip_code, city, province_id, country_id }
│   └── contact           { phone, email }
├── transferee_client     Customer/buyer
│   ├── personal_data     { tax_id_vat, tax_id_code (fiscal code for IT private), company_name }
│   └── place             { address, zip_code, city, province_id, country_id }
├── invoice_body
│   ├── general_data      { doc_type (TD01|TD04), date (YYYY-MM-DD), invoice_number, currency }
│   └── total_document_amount
├── order_items[]
│   ├── description, quantity, unit
│   ├── unit_price, total_price
│   ├── rate              VAT rate as string (e.g. '22.00')
│   ├── total_tax         VAT amount (number)
│   └── item_type         "product" | "shipping" | "fee"
├── payment_data
│   ├── terms_payment     TP01 (instalment) | TP02 (full) | TP03 (advance)
│   ├── payment_details   MP01 (Cash) | MP02 (Check) | MP05 (Bank Transfer) | MP08 (Credit Card) | ...
│   ├── payment_amount
│   ├── beneficiary       Required for MP05 (bank transfer)
│   ├── financial_institution  Required for MP05
│   └── iban              Required for MP05
├── purchase_order_data   (optional) { id, date }
├── delivery_data         (optional, Peppol) { country, date? } — country required for VATEX-EU-IC
├── connected_invoice_data[]  (required for credit notes) { id, date }
├── overrides             (optional) { language, bollo_force_apply }
└── pdf                   (only for pop_create_pdf_invoice)
    ├── doc_type_title
    ├── logo_url
    ├── head              { store_info_address, billing[], shipping[] }
    ├── total_tax
    ├── email_invoice     { to[] (max 3), from }
    └── footer_text

エラーリファレンス

エラーコード意味解決方法
unauthorized_userライセンスキーが無効ですPOP_API_KEY を確認してください
insufficient_levelプランのレベルが不足していますPOP プランをアップグレードしてください
business_not_registered事業者プロフィールがありませんpopapi.io で登録してください
integration_inactiveSdI/Peppol が有効になっていませんpopapi.io で有効にしてください
pop_api_email_limitメールの宛先が3件を超えています最大3件に減らしてください
pop_api_email_not_allowedプランでメールが許可されていませんBasic+ にアップグレードしてください

関連プロジェクト


ライセンス

MIT © getpopapi

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。