mcpField
M
mcp-ksef-pl

mcp-ksef-pl

ローカル
github.com/cmendezs金融データ37 週間前に更新

mcp-ksef-pl について

mcp-ksef-plは、KSeFとPeppolに対応するポーランド電子インボイス用のPython MCPサーバーです。請求書の生成・検証・送信に加え、ポーランドの税務・登録番号を確認できます。

主な機能

  1. 01FA(3)・FA(2) XMLの生成と検証
  2. 02KSeF請求書の送信・状態確認・検索
  3. 03Peppol UBL請求書の生成と検証
  4. 04ポーランドのNIP・REGON確認
  5. 05Peppol参加者とエンドポイントの検索

活用シーン

  1. 01KSeF API v2向けFA(3)請求書の準備
  2. 02送信前の形式と業務ルールの確認
  3. 03ポーランド企業の税務・登録番号の検証
  4. 04Peppol参加者の検索と請求書の送信

MCP 対応

MCPサーバーは、請求書の生成・検証、KSeFの処理、識別番号確認、PeppolネットワークのツールをAIエージェントなどのMCPクライアントに公開します。KSeFへの送信には取得済みのセッショントークンが必要で、署名を伴う認証フローは自動化しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cmendezs-mcp-ksef-pl": {
"command": "uvx",
"args": [
"mcp-ksef-pl"
],
"env": {
"KSEF_SESSION_TOKEN": "<KSEF_SESSION_TOKEN>",
"KSEF_NIP": "<KSEF_NIP>",
"KSEF_ENVIRONMENT": "<KSEF_ENVIRONMENT>",
"KSEF_TIMEOUT": "<KSEF_TIMEOUT>"
}
}
}
}
起動コマンドuvx mcp-ksef-pl
設定が必要な環境変数
KSEF_SESSION_TOKENシークレットKSeF v2 AccessToken obtained via the challenge/redeem auth flow. Required for submit_invoice_to_ksef.
KSEF_NIPNIP (Polish tax identifier, 10 digits) of the entity submitting invoices.
KSEF_ENVIRONMENTTarget KSeF environment: 'production' or 'test' (default: test).
KSEF_TIMEOUTHTTP request timeout in seconds (default: 30).

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-ksef-pl0.10.1

ツール

56

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
invoiceobjectはいKSeF FA(2)/FA(3) 提出用に拡張された EN 16931。 国内拡張: numer_ksef — KSeF 参照番号。プラットフォームによってクリアランス後に割り当てられます。 送信文書には含まれず、クリアランス応答から設定され、 追跡用にここに保存されます。 KSeF は EN 16931 GuidelineID URN を使用しないため、_allowed_profiles クラス変数は None のままです。profile フィールドには KSeF スキーマ識別子を設定するか、生成ツールの規約に従ってください。
invoice.noteanyいいえ請求書の備考/理由(BT-22)
invoice.buyerobjectはい買い手/顧客(BG-7)
invoice.buyer.glnanyいいえGS1 グローバル・ロケーション・ナンバー
invoice.buyer.nipanyいいえポーランドの NIP(10 桁)
invoice.buyer.namestringはい法人名(BT-27/BT-44)
invoice.buyer.vat_idanyいいえVAT 番号(BT-31/BT-48)
invoice.buyer.addressanyいいえ
invoice.buyer.eu_vat_idanyいいえポーランド国外の売り手/買い手の EU VAT 番号
invoice.buyer.contact_nameanyいいえ担当者名(BT-41/BT-56)
invoice.buyer.contact_emailanyいいえ連絡先メールアドレス(BT-43/BT-58)
invoice.buyer.contact_phoneanyいいえ連絡先電話番号(BT-42/BT-57)
invoice.buyer.eu_vat_countryanyいいえポーランド国外の売り手/買い手の EU VAT 国コード
invoice.buyer.electronic_addressanyいいえPeppol/EAS 電子アドレス(BT-34/BT-49)
invoice.buyer.electronic_address_schemeanyいいえEAS スキームコード。例:GLN の場合は '0088'(BT-34-SchemeID/BT-49-SchemeID)
invoice.sellerobjectはい売り手/サプライヤー(BG-4)
invoice.seller.glnanyいいえGS1 グローバル・ロケーション・ナンバー
invoice.seller.nipanyいいえポーランドの NIP(10 桁)
invoice.seller.namestringはい法人名(BT-27/BT-44)
invoice.seller.vat_idanyいいえVAT 番号(BT-31/BT-48)
invoice.seller.addressanyいいえ
invoice.seller.eu_vat_idanyいいえポーランド国外の売り手/買い手の EU VAT 番号
invoice.seller.contact_nameanyいいえ担当者名(BT-41/BT-56)
invoice.seller.contact_emailanyいいえ連絡先メールアドレス(BT-43/BT-58)
invoice.seller.contact_phoneanyいいえ連絡先電話番号(BT-42/BT-57)
invoice.seller.eu_vat_countryanyいいえポーランド国外の売り手/買い手の EU VAT 国コード
invoice.seller.electronic_addressanyいいえPeppol/EAS 電子アドレス(BT-34/BT-49)
invoice.seller.electronic_address_schemeanyいいえEAS スキームコード。例:GLN の場合は '0088'(BT-34-SchemeID/BT-49-SchemeID)
invoice.profilestringはいGuidelineID/プロファイル URN(BT-24)。各国のサブクラスで _allowed_profiles = frozenset({MyEnum.member.value, ...}) を設定し、型付き enum に制限してください。
invoice.due_dateanyいいえ支払期日(BT-9)
invoice.tax_linesarrayいいえVAT 内訳行(BG-23)。EN 16931 では 1 行以上が必須です。
invoice.tax_totalanyはいVAT 合計額(BT-110)
invoice.amount_dueanyはい支払金額(BT-115)
invoice.line_itemsarrayいいえ請求書明細行(BG-25)。BASIC、EN_16931、EXTENDED、XRechnung プロファイルでは必須です。MINIMUM と BASIC WL にはありません。
invoice.numer_ksefanyいいえプラットフォームによるクリアランス後に割り当てられる KSeF 参照番号。形式:NIP(10) + 日付(8) + 連番(20) + チェックサム(2)。送信 XML には出力されず、ライフサイクルの追跡に使用されます。
invoice.invoice_datestringはい請求書発行日(BT-2)
invoice.charges_totalanyいいえ書類レベルの費用合計(BT-108)
invoice.currency_codestringいいえISO 4217 請求書通貨コード(BT-5)
invoice.delivery_dateanyいいえ実際の納品日(BT-72)
invoice.document_uuidanyいいえグローバル一意の書類識別子。<cbc:ID> の直後にある兄弟要素として <cbc:UUID> で出力されます。正式な EN 16931 BT ではありませんが、複数の Peppol 管轄区域の CIUS プロファイルで必須です(例:PINT AE BTAE-07、PINT-SG BT-SG-003)。ほとんどの EN 16931 プロファイルでは不要なため、基本モデルでは任意です。この項目を必須とする国別サブクラスでは、必須として再宣言してください。
invoice.payment_meansanyいいえ支払指示(BG-16)
invoice.payment_termsanyいいえ支払条件の自由記述テキスト(BT-20)
invoice.invoice_numberstringはい請求書番号(BT-1)
invoice.prepaid_amountanyいいえ前払金額(BT-113)
invoice.buyer_referenceanyいいえ買い手参照情報/ルーティング ID(BT-10)。XRechnung および公共部門の買い手では必須です。
invoice.rounding_amountanyいいえ丸め金額(BT-114)
invoice.allowances_totalanyいいえ書類レベルの値引き合計(BT-107)
invoice.business_processanyいいえBT-23 ビジネスプロセスタイプ。UBL では <cbc:ProfileID>、CII では <ram:BusinessProcessSpecifiedDocumentContextParameter><ram:ID> として出力されます。BT-24(仕様識別子)を格納する `profile` とは異なります。
invoice.invoice_type_codestringいいえUNCL1001 書類タイプコード(BT-3)。380=請求書、381=クレジットノート
invoice.project_referenceanyいいえプロジェクト参照情報(BT-11)
invoice.allowances_chargesarrayいいえ書類レベルの値引き(BG-20)および費用(BG-21)
invoice.billing_period_endanyいいえ請求期間終了日(BT-74)
invoice.contract_referenceanyいいえ契約参照情報(BT-12)
invoice.billing_period_startanyいいえ請求期間開始日(BT-73)
invoice.tax_exclusive_amountanyはいVAT抜きの請求書合計額(BT-109)
invoice.tax_inclusive_amountanyはいVAT込みの請求書合計額(BT-112)
invoice.preceding_invoice_dateanyいいえ先行請求書の発行日(BT-26)
invoice.sum_of_line_net_amountsanyはい請求書明細の正味金額の合計(BT-106)
invoice.purchase_order_referenceanyいいえ発注書の参照番号(BT-13)
invoice.preceding_invoice_referenceanyいいえクレジットノートの先行請求書参照番号(BT-25)

詳細

mcp-ksef-pl 🇵🇱

English | Polski

License PyPI version Python mcp-ksef-pl MCP server

ポーランドの電子請求書に対応し、KSeF(FA(2))およびPeppol BIS Billing 3.0 / EN 16931に準拠したツールを提供する Python MCP サーバーです。AI エージェント(Claude、IDE)が、請求書の生成、検証、Krajowy System e-Faktur(KSeF)への送信、およびポーランドの納税者識別番号(NIP、REGON)の検証を行えるようにします。


はじめに

このパッケージは、欧州の電子請求書 MCP サーバー向け共有基盤ライブラリであるmcp-einvoicing-coreをベースに構築されています。OAuth2 HTTP クライアント、トークンキャッシュ、データモデル、ログユーティリティ、例外階層を提供します。

mcp-einvoicing-coreは依存関係として自動的にインストールされるため、追加の手順は不要です。

インストール

PyPI 経由(推奨)
pip install mcp-ksef-pl

事前にインストールせずにuvxを使うこともできます。

uvx mcp-ksef-pl
ソースから
git clone https://github.com/cmendezs/mcp-ksef-pl.git
cd mcp-ksef-pl
uv sync --all-extras

設定(環境変数)

変数デフォルト説明
KSEF_ENVIRONMENTtestKSeF 環境:productionまたはtest
KSEF_SESSION_TOKEN—KSeF セッショントークン(MF とのチャレンジ・レスポンスフローで取得)
KSEF_NIP—請求書を送信する事業体の NIP
KSEF_TIMEOUT30HTTP リクエストのタイムアウト(秒)
KSEF_VERIFY_MF_KEY_PINNINGfalseMF 暗号化証明書に対する SPKI SHA-256 ピンニングを強制します。有効な環境のフィンガープリントが設定されるまでは、trueに設定しても何も行いません
EINVOICING_PEPPOL_CODELIST_DIR—Peppol コードリストツールに必要な、OpenPeppol eDEC Code Lists の独自コピーを含むローカルディレクトリ(このパッケージには含まれていません。mcp-einvoicing-core README を参照)
EINVOICING_EN16931_CODELIST_DIR—EN 16931 コードリストツールに必要な、CEF「Digital Building Blocks」EN 16931 セマンティックコードリストの独自コピーを含むローカルディレクトリ(同梱されていません。mcp-einvoicing-core README を参照)

EUSR/TSR レポートツールおよび MLS ツールで Schematron 検証を行うには、[xslt2]エクストラ(pip install "mcp-ksef-pl[xslt2]")も必要です。

Claude Desktop との連携

claude_desktop_config.jsonファイルに次の設定を追加してください。

{
  "mcpServers": {
    "ksef-pl": {
      "command": "uvx",
      "args": ["mcp-ksef-pl"],
      "env": {
        "KSEF_ENVIRONMENT": "test",
        "KSEF_SESSION_TOKEN": "<your-ksef-session-token>",
        "KSEF_NIP": "<your-nip>"
      }
    }
  }
}

Cursor との連携

Cursor は stdio 経由で MCP サーバーをサポートしています。次の場所に設定を追加してください。

  • グローバル(すべてのプロジェクト):~/.cursor/mcp.json
  • プロジェクトごと(このリポジトリのみ):.cursor/mcp.json
{
  "mcpServers": {
    "ksef-pl": {
      "command": "uvx",
      "args": ["mcp-ksef-pl"],
      "env": {
        "KSEF_ENVIRONMENT": "test",
        "KSEF_SESSION_TOKEN": "<your-ksef-session-token>",
        "KSEF_NIP": "<your-nip>"
      }
    }
  }
}

変更を保存した後、Cursor ウィンドウを再読み込みしてください(Ctrl+Shift+P → ウィンドウを再読み込み)。

Kiro との連携

Kiro は専用の設定ファイルを通じて MCP サーバーをサポートしています。

  • グローバル:~/.kiro/settings/mcp.json
  • ワークスペース:.kiro/settings/mcp.json
{
  "mcpServers": {
    "ksef-pl": {
      "command": "uvx",
      "args": ["mcp-ksef-pl"],
      "env": {
        "KSEF_ENVIRONMENT": "test",
        "KSEF_SESSION_TOKEN": "<your-ksef-session-token>",
        "KSEF_NIP": "<your-nip>"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

セキュリティ上のヒント:トークンを直接入力する代わりに、 "KSEF_SESSION_TOKEN": "${KSEF_SESSION_TOKEN}"という構文を使用してください。Kiro は起動時にシェルの環境 変数を解決します。

利用可能なツール

FA(3) / FA(2) 請求書の処理
ツール説明
generate_fa3_invoiceKSeF 準拠の FA(3) XML 請求書を生成します(KSeF API v2 への送信に必要です)
generate_fa2_invoiceKSeF 準拠の FA(2) XML 請求書を生成します(旧形式、読み取り専用で使用)
validate_fa3_invoiceFA(3) XML を検証します:XSD 検証および FA(3) 固有のビジネスルール
validate_fa2_invoiceFA(2) XML を検証します:XSD 検証(スキーマが利用可能な場合)およびビジネスルール
parse_fa2_invoiceFA(2) XML を構造化された辞書に解析します

公式の FA(2) および FA(3) XSD スキーマはパッケージ内(src/mcp_ksef_pl/schemas/)に含まれており、 importlib.resources 経由で自動的に読み込まれます。手動でのダウンロードや設定は 不要です。validate_fa2_invoice と validate_fa3_invoice は、どのインストール環境でも、 最初から完全な XSD 検証を実行します。

KSeF のライフサイクル
ツール説明
submit_invoice_to_ksefFA(3) 請求書を KSeF プラットフォームに送信し、参照番号を返します
get_ksef_invoice_status参照番号を使って請求書の処理状況を取得します
search_ksef_invoices日付範囲と方向(販売者/購入者)を指定して、KSeF 内の請求書を検索します
識別番号の検証
ツール説明
validate_polish_nipチェックサムアルゴリズムを使って、NIP(10 桁の納税者識別番号)を検証します
validate_polish_regonチェックサムアルゴリズムを使って、REGON(9 桁または 14 桁の登録番号)を検証します
Peppol / EN 16931
ツール説明
generate_peppol_invoicePeppol BIS Billing 3.0 / EN 16931 に準拠した UBL 2.1 請求書を生成します
validate_peppol_invoiceCEN EN 16931 基本 Schematron ルール(en16931-base-only スコープ。Peppol 固有のオーバーレイは検証しません)に照らして UBL 2.1 Peppol 請求書を検証します
Peppol ネットワークツール

Peppol 参加者の検索、サービスエンドポイントの検索、DNS のみの診断、AS4 送信、Peppol Directory 検索、および OpenPeppol eDEC コードリストツールは、共有コア Peppol ツールプラグイン(mcp_einvoicing_core.peppol.tools.register_peppol_tools)によって提供されます。これらは、ポーランド固有の識別子アダプターとともに server.py でマウントされます。NIP のみ(例:1234563218)の識別子は 9945:<digits> Peppol スキーム(OpenPeppol eDEC 参加者識別子スキームのコードリストに基づく PL:VAT)に正規化され、すでにスキームが付与された識別子(例:9945:1234563218)はそのまま渡されます。generate_peppol_invoice を使う前に、これらのツールで PEF(公共調達の B2G 請求書向けポーランド Peppol アクセスポイント)の登録状況を確認してください。

peppol_send は、mcp-einvoicing-core v1.20.0 以降、実際の wsse:Security 署名を使って送信メッセージに署名します(以前は署名を計算していましたが、破棄していました。CHANGELOG.md v0.8.0 を参照)。

ツール説明
peppol_lookup_participant事業者が Peppol ネットワークに登録されているか確認します。登録状況と対応するドキュメントタイプを返します
peppol_get_service_endpoint参加者のドキュメントタイプに対応する AS4 エンドポイントを取得します
resolve_peppol_dnsSMP への到達性とは独立した DNS のみ(SML)診断
peppol_sendAS4 経由で UBL/CII 請求書を送信します
peppol_directory_search参加者、名称、国、またはドキュメントタイプで公開 Peppol Directory を検索します
list_participant_id_schemes, list_document_type_ids, list_process_ids, list_spis_use_case_idsOpenPeppol eDEC コードリストの検索(EINVOICING_PEPPOL_CODELIST_DIR が必要です)
check_document_type_id_in_codelist, check_process_id_in_codelist, check_participant_id_scheme_in_codelist, get_peppol_codelist_versionOpenPeppol eDEC コードリストの確認とバージョン情報の取得

これらのツールのパラメーターに関する詳細は、mcp-einvoicing-core README を参照してください。

Peppol のレポートとステータス用ツール

v0.8.0 で、オプトイン方式のコアプラグイン 3 つを通じて追加され、server.py で無条件にマウントされます。追加機能またはデータディレクトリがない場合は、登録時ではなく呼び出し時に、明確なエラーが発生します。

ツールプラグイン説明
validate_eusr_reportregister_peppol_reporting_toolsエンドユーザー統計レポート(XSD、次に Schematron)を検証します。[xslt2] 追加機能が必要です。
validate_tsr_reportregister_peppol_reporting_toolsトランザクション統計レポート(XSD、次に Schematron)を検証します。[xslt2] 追加機能が必要です。
validate_mls_messageregister_peppol_mls_toolsメッセージレベルステータス文書(UBL ApplicationResponse-2 のサブセット)を検証します。[xslt2] 追加機能が必要です。
build_mls_messageregister_peppol_mls_tools文書レベルの MLS 応答を作成します。[xslt2] 追加機能が必要です。
list_*/check_* のペア 13 組、get_en16931_codelist_versionregister_en16931_codelist_toolsEN 16931 の意味コードリストの検索/チェック(単位、VAT カテゴリなど)を行います。EINVOICING_EN16931_CODELIST_DIR が必要です。

これらのツールのパラメーターに関する詳細なドキュメントは、mcp-einvoicing-core の README をご覧ください。

KSeF 認証

KSeF API v2 では、AccessToken を発行するために、複数の手順からなるチャレンジ/引き換えフローを使用します。この MCP サーバーでは取得済みのトークンを受け付けますが、署名手順を自動化することはできません(認定電子署名が必要です)。

手順ごとのフロー
  1. アカウントの設定。 KSeF ポータル(https://ksef.mf.gov.pl/)に登録します。対象の環境(テストまたは本番)を選択します。テスト環境は https://ksef-test.mf.gov.pl/ です。

  2. チャレンジのリクエスト。 KSeF API を呼び出して、チャレンジを含む XML エンベロープを取得します。

    curl -s https://ksef-test.mf.gov.pl/auth/challenge \
      -H "Accept: application/json" \
      -d '{"contextIdentifier": {"type": "onip", "identifier": "YOUR_NIP"}}' \
      -H "Content-Type: application/json"
    

    応答には challenge 文字列と timestamp が含まれます。

  3. チャレンジへの署名。 チャレンジを含む <InitSessionTokenRequest> XML エンベロープを作成し、認定電子署名で署名します。以下の署名ツールが利用できます。

    • 認定電子署名プロバイダー:KIR(Szafir)、Certum、Sigillum
    • podpis.gov.pl(政府の署名ポータル)
    • Profil Zaufany(信頼プロファイル):https://www.podatki.gov.pl/ksef/

    PKCS#12 証明書と xmlsec1 を使用する例:

    # Build the challenge XML (template at specs/przyklad-wyzwania.xml)
    xmlsec1 --sign --pkcs12 your-cert.p12 --pwd "password" \
      --output signed-challenge.xml challenge-template.xml
    
  4. 署名済みチャレンジの送信。 署名済み XML を POST して、authOperation 参照を受け取ります。

    curl -s https://ksef-test.mf.gov.pl/auth/xades-signature \
      -H "Content-Type: application/octet-stream" \
      --data-binary @signed-challenge.xml
    
  5. AccessToken の引き換え。 認証済みの操作を AccessToken と交換します。

    curl -s https://ksef-test.mf.gov.pl/auth/token/redeem \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer <referenceNumber-or-authOperation-token-from-step-4>"
    

    応答には accessToken.token と accessToken.context.referenceNumber が含まれます。

  6. トークンの設定。 この MCP サーバー用にトークンをエクスポートします。

    export KSEF_SESSION_TOKEN="<the AccessToken from step 5>"
    

    トークンの有効期間は、発行から約 2 時間です(MF のドキュメントによる)。有効期限が切れたら、手順 2~5 を繰り返します。

参考資料

アーキテクチャ

このサーバーは、AI エージェントと KSeF プラットフォームおよび Peppol ネットワーク間のインテリジェントな通信インターフェイスとして機能します。

[ ERP System / Application ] <--> [ MCP Server ] <--> [ KSeF (MF) / Peppol Network ]
          ^                           |
          |                           v
   [ AI Agent (Claude) ] <--- (FA(2) / EN 16931)

ベンダー中立性

このサーバーは標準自体を実装しており、文書の作成、検証、署名をローカルで行います。商用の請求書プラットフォーム用クライアントではなく、署名キーや認証情報が自社のインフラストラクチャの外に出ることはありません。

請求書は仲介業者を介さず、自社の認証トークンを使って KSeF に直接送信されます。

テスト

# Run unit tests
uv run pytest tests/ -v

貢献

貢献を歓迎します。ガイドラインについては CONTRIBUTING.md をご覧ください。

その他の電子インボイス MCP サーバー

国サーバー
🌍 グローバルmcp-einvoicing-core
🇧🇪 ベルギーmcp-einvoicing-be
🇧🇷 ブラジルmcp-nfe-br
🇫🇷 フランスmcp-facture-electronique-fr
🇩🇪 ドイツmcp-einvoicing-de
🇮🇳 インドmcp-einvoicing-in
🇮🇹 イタリアmcp-fattura-elettronica-it
🇲🇽 メキシコmcp-cfdi-mx
🇵🇱 ポーランドmcp-ksef-pl
🇸🇬 シンガポールmcp-invoicenow-sg
🇪🇸 スペインmcp-facturacion-electronica-es
🇦🇪 アラブ首長国連邦mcp-einvoicing-ae

ライセンス

このプロジェクトは Apache 2.0 ライセンスの下で配布されています。 詳細については LICENSE ファイルをご覧ください。完全なバージョン履歴については、CHANGELOG.md をご覧ください。

コメント

MCP は初めてですか?

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

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