mcpField
Q
QRIS tools (offline)

QRIS tools (offline)

ローカル
github.com/EzkielynaGroup金融データ02 日前に更新

QRIS tools (offline) について

QRIS toolsは、QRIS決済コードのテキストを読み取り、検証、加工するオフラインMCPサーバーです。有効な静的コードを金額指定の動的コードに変換し、SVGにできますが、決済処理や支払い確認は行いません。

主な機能

  1. 01QRISフィールドの解析
  2. 02構造とCRCの検証
  3. 03静的QRISへの金額設定
  4. 04有効な内容のSVG描画
  5. 05コード付きの検証問題報告

活用シーン

  1. 01QRISテキストの加盟店情報確認
  2. 02利用や共有前のコード検査
  3. 03金額指定QRISコードの作成
  4. 04有効な内容からのSVG生成

MCP 対応

QRISテキストの解析と検証、静的コードへの金額設定、有効な内容のSVG描画を行う4つのツールをMCPクライアントに公開します。テキストの読み取りと書き換えのみで、送金や支払い確認は行いません。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"ezkielynagroup-mcp-qris": {
"command": "npx",
"args": [
"-y",
"mcp-qris"
]
}
}
}
起動コマンドnpx -y mcp-qris

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

パッケージ
npmmcp-qris1.0.0

ツール

4

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

パラメーター型必須説明
qrisstringはいQRIS ペイロードのテキスト("000201" で始まり、「6304」+ 4 桁の 16 進数で終わる)。画像ではなくテキストを貼り付けてください。

詳細

mcp-qris

AI アシスタントが QRIS 決済コード(EMVCo Merchant-Presented Mode に基づくインドネシアの国家 QR 規格)を読み取り、確認し、作成できるオフラインのMCPサーバーです。API キーも、ネットワークも、依存関係も不要です。

例:「お店の静的 QRIS テキストはこちらです:000201010211...6304ABCD。有効か確認して、Rp25.000 の動的なバージョンを作成し、SVG を出してもらえますか?」

🇮🇩 Bahasa Indonesia: 以下のセクションをご覧ください。

最初にお読みください。 このツールはテキストを読み取り、書き換えるだけです。お金を動かすことはなく、支払いを確認したり、支払いがあったか確認したりすることもできません。また、銀行や決済プロバイダーにも接続されていません。ここで作成する動的 QRIS の有効性は、元になった加盟店自身の静的 QRIS と同程度です。まず少額でテストしてください。 持ち主の許可なく他人の QRIS を貼り付けたり、変更したりしないでください。自分のものではないお金を受け取るために QRIS を変更することは詐欺です。

  • オフライン:.mjs ファイル 1 つ、Node.js 18 以降、npm install 不要、ネットワーク呼び出しなし、ファイル書き込みなし。
  • 入力はテキスト:QRIS ペイロード文字列(000201 で始まります)を貼り付けます。写真やスクリーンショットのデコードは対象外です。まず任意の QR リーダーアプリでスキャンしてください。
  • 正直な検証:問題はすべてコード付きで報告され、黙って「修正」されることはありません。

ツール

ツール機能
parse_qrisペイロードを名前付きフィールドにデコードします:ペイロード形式、静的(11)/動的(12)、加盟店アカウントテンプレート 26-51(GUI、加盟店 PAN、加盟店 ID、国の ID.CO.QRIS.WWW テンプレートの NMID、加盟店区分 UMI/UKE/UME/UBE/URE)、MCC、通貨(360 = IDR)、金額、チップ/手数料(55-57)、国、加盟店名/市区町村、郵便番号、追加データ(62:請求番号、店舗ラベル、端末ラベルなど)、言語テンプレート(64)、CRC チェック。
validate_qrisTLV 構造、必須フィールド、値の形式、CRC-16/CCITT チェックサム(多項式 0x1021、初期値 0xFFFF)を確認します。すべての問題を、コード付きのエラーまたは警告として報告します(例:CRC_MISMATCH、TRUNCATED、AMOUNT_FORMAT)。
set_qris_amount有効な静的 QRIS を、ルピア整数額を指定した動的 QRIS に変換します:タグ 01 を 12 に設定し、タグ 54 を通貨の直後に挿入し、任意でチップまたは利便性手数料を追加(タグ 55-57、デフォルトでは無効)して CRC を再計算します。無効な入力と、デフォルトではすでに動的な入力を拒否します。返却前に結果を再度検証します。
qris_to_svg組み込みエンコーダー(バイトモード、バージョン 1-40、誤り訂正 L/M/Q/H、デフォルトは M、4 モジュールのクワイエットゾーン)を使って、有効な QRIS ペイロードをSVG QR コードとして描画します。無効な QRIS は拒否します。

すべてのツールは読み取り専用(readOnlyHint: true)で、閉じた世界(openWorldHint: false)です。

set_qris_amount が変更する内容
タグ変更前(静的)変更後(動的)
01 開始方式11(または欠落)12
54 取引金額なし例:25000
55-57 チップ/手数料なし指定した場合のみ(tip:prompt、fixed、percent)
63 CRC以前のチェックサム再計算

それ以外(加盟店アカウント、NMID、名前、市区町村、MCC、タグ 62)は同じ順序で変更せずにコピーされます。

インストール

npx を使用(推奨): インストールは不要です。以下の設定では npx -y mcp-qris を実行します。

ソースから:

git clone https://github.com/EzkielynaGroup/mcp-qris.git
cd mcp-qris
node --test test/        # optional: offline tests

その後、npx の代わりに "command": "node" と "args": ["/full/path/to/mcp-qris.mjs"] を使用します。

Windows でアプリが npx を起動できない場合は、"command": "cmd" と "args": ["/c", "npx", "-y", "mcp-qris"] を使用してください。

Claude Desktop

Settings → Developer → Edit Config(claude_desktop_config.json)を開き、Claude Desktop を完全に終了してから再起動します。

{
  "mcpServers": {
    "qris": {
      "command": "npx",
      "args": ["-y", "mcp-qris"]
    }
  }
}
Claude Code
claude mcp add qris -- npx -y mcp-qris

すべてのプロジェクトで利用できるようにするには、--scope user を追加します。claude mcp list で確認してください。

Cursor

~/.cursor/mcp.json(すべてのプロジェクト)または .cursor/mcp.json(1 つのプロジェクト)を使用します。JSON は Claude Desktop と同じです。

OpenCode

プロジェクト内の opencode.json、または ~/.config/opencode/opencode.json を使用します。

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "qris": {
      "type": "local",
      "command": ["npx", "-y", "mcp-qris"],
      "enabled": true
    }
  }
}

設定

環境変数も API キーも必要ありません。サーバーはネットワーク接続を開かず、ファイルも書き込みません。

安全性と制限

  • 入力は2,048文字までです。EMVCoは512文字以下を推奨しており、それを超えるペイロードには警告が表示されます。
  • 長さは文字数で数えます(EMVCo MPM 4.4.1.1)。CRCはUTF-8バイト列を使って計算されます。
  • set_qris_amount はルピア単位の整数のみを書き込みます(1~13桁)。また、インドネシア銀行規則PADG 24/1/PADG/2022に定められた1取引あたりのQRIS上限額である Rp10.000.000 を超えると警告を表示します(新しい規則がないか確認してください)。
  • すでに動的なコードは、allow_dynamic_input: true が指定されていない限り受け付けません。動的コードは通常、1回の取引にのみ使われるためです。
  • qris_to_svg は無効なQRISをエンコードしません。壊れたコードでは支払いができず、購入者を混乱させるだけだからです。
  • 応答にスタックトレースが含まれることはありません。ログはstderrにのみ出力されます。

規格と情報源

  • EMVCo、EMV QR Code Specification for Payment Systems: Merchant-Presented Mode、バージョン1.1、2020年11月(emvco.com):データオブジェクト、IDの割り当て、CRC(ISO/IEC 13239、生成多項式0x1021、初期値0xFFFF)、金額および手数料の形式。validate_qris のすべてのフィールド規則はこの文書に準拠しています。CRCとパーサーは、付属書Bのサンプルペイロードを使ってテストされています。
  • Bank Indonesia、QRIS(Quick Response Code Indonesian Standard)(bi.go.id):決済における国のQRコード規格の導入に関するPADG 21/18/PADG/2019(およびその改正)、PADG 24/1/PADG/2022(1取引あたりRp10.000.000の上限)。
  • ASPI(Asosiasi Sistem Pembayaran Indonesia)は、QRISの技術仕様を管理しています。この文書は業界会員向けに配布されており、私たちは入手できませんでした。このツールにおけるQRIS固有のラベル(国別テンプレートGUI ID.CO.QRIS.WWW、そのサブID 02のNMID、サブID 03の加盟店区分UMI/UKE/UME/UBE/URE、タグ26~45のサブID 01/02にあるPAN/加盟店ID)は、インドネシアの決済事業者による公開資料とオープンソースのパーサーを出典としているため、権威ある情報ではなく、説明用の情報として扱ってください。これらが影響するのはラベルと警告のみで、CRCや構造チェックには影響しません。
  • エンコーダーは ISO/IEC 18004(QRコード)に準拠しています。容量は規格のバイトモード表に照らしてテストされ、エンコーダーは、生成した268個のシンボル(バージョン1~40、L/M/Q/H、8種類すべてのマスク、UTF-8テキスト)を2つの独立したデコーダー(macOS CoreImageとVision)でデコードして相互確認されています。tools/verify-macos.mjs を参照してください。

テストに使われているQRISはすべて合成データです(架空の加盟店「TOKO CONTOH」、架空のNMID)。実在する加盟店のコードは含まれていません。

FAQ

QRISコードが有効かどうかを確認するにはどうすればよいですか? QRISのテキストを validate_qris に貼り付けてください。構造、必須のEMVCoフィールド、末尾4文字のCRC-16チェックサムを確認し、検出した問題をすべて一覧表示します。

静的なQRISを、金額入りの動的なQRISに変換するにはどうすればよいですか? 自分の静的QRISと金額(ルピア単位)を set_qris_amount に渡してください。タグ01を12に設定し、タグ54を追加してCRCを再計算します。これを利用する前に、少額で支払いをテストしてください。

QRISの金額を変更すると、送金されたり支払いが作成されたりしますか? いいえ。QRISは支払う人のアプリが読み取るテキストにすぎず、銀行には何も送信されません。支払われるお金は元のコード内にある加盟店アカウントに送金され、支払う人のアプリには支払い前に加盟店名が表示されます。

QRISのCRCはどのように計算されますか? CRC-16/CCITT-FALSEです。生成多項式は0x1021、初期値は0xFFFFで、6304 を含むすべての文字を対象に計算し、4桁の大文字16進数で表します。123456789 のチェック値は 29B1 です。

QRISのNMIDはどこにありますか? 国別QRIS加盟店アカウントテンプレート(通常はタグ51、GUI ID.CO.QRIS.WWW)のサブID 02にあります。たとえば ID10... のような値です。parse_qris はこれを summary.nmid として返します。

写真からQRISを読み取れますか? いいえ。任意のQRリーダーアプリでコードをスキャンし、テキストをコピーして、ここに貼り付けてください。

開発

node --test test/

19 件のテスト(ユニットテストと、MCP stdio を介したエンドツーエンドテスト)をオフラインで実行します。macOS では、tools/verify-macos.mjs と tools/verify-macos.swift を使ってエンコーダーの相互検証を再度実行できます。問題の報告やプルリクエストを歓迎します。


インドネシア語

AI アシスタント(Claude Desktop、Claude Code、Cursor、OpenCode)を通じて、QRIS 支払いコードを読み取り、検証し、作成するためのオフライン MCP サーバーです。API キー、インターネット、依存関係は不要です。

例:「これは私の店舗の静的 QRIS テキストです:000201010211...6304ABCD。有効ですか?Rp25.000 の動的版とその SVG 画像を作成してください。」

**必ずお読みください。**このツールはテキストの読み取りと書き換えのみを行います。金銭の移動は行わず、支払いを確認したり確定したりすることも、銀行や PJSP に接続することもありません。このツールで作成した動的 QRIS が有効なのは、元となる加盟店の静的 QRIS が有効な場合に限られます。**まず少額でテストしてください。**所有者の許可なく、他人の QRIS を貼り付けたり変更したりしないでください。自分に権利のない金銭を受け取るために QRIS を変更することは詐欺です。

ツール

ツール機能
parse_qrisQRIS を名前付きフィールドに分解します:静的/動的、加盟店アカウント(タグ 26-51、NMID を含む)、MCC、通貨(360 = ルピア)、金額、チップ/手数料、加盟店名/都市、郵便番号、追加データ(タグ 62)、CRC チェック。
validate_qrisTLV 構造、必須フィールド、値の形式、CRC-16/CCITT(0xFFFF)を検証します。問題をすべて、コードとともに報告します。
set_qris_amount有効な静的 QRIS を、整数のルピア金額を指定した動的 QRIS に変換します:タグ 01 を 12 にし、タグ 54 を追加します。チップ/手数料(タグ 55-57)は任意で、デフォルトでは無効です。CRC は再計算されます。破損した QRIS や、すでに動的な QRIS は拒否されます。
qris_to_svg内蔵エンコーダーを使い、有効な QRIS から QR 画像(SVG)を作成します(誤り訂正レベル L/M/Q/H、デフォルトは M)。

インストール:上記の例と同じです。Claude Code:claude mcp add qris -- npx -y mcp-qris。Windows:"command": "cmd"、"args": ["/c", "npx", "-y", "mcp-qris"]。環境変数や API キーは不要です。

制限事項:入力はテキスト(写真ではありません)です。ルピアの金額は整数で 1~13 桁です。Rp10.000.000 を超える場合は警告が表示されます(PADG 24/1/PADG/2022 による QRIS の取引上限。最新の規則をご確認ください)。allow_dynamic_input: true を指定しない限り、すでに動的な QRIS は拒否されます。

情報源:構造、フィールド、CRC には EMVCo Merchant-Presented Mode v1.1(2020 年 11 月)を、QRIS には Bank Indonesia(PADG 21/18/PADG/2019 およびその改正、PADG 24/1/PADG/2022)を参照しています。ASPI の QRIS 技術仕様は一般公開されていないため、QRIS 固有のラベル(GUI ID.CO.QRIS.WWW、サブ ID 02 の NMID、UMI/UKE/UME/UBE/URE の基準)は、PJSP の公開資料とオープンソースパーサーから取得しています。これらは参考情報であり、正式な基準として扱わないでください。テストに含まれる QRIS はすべて架空の例です(架空の加盟店「TOKO CONTOH」)。

よくある質問

  • QRIS が有効かどうかを確認するには? QRIS テキストを validate_qris に貼り付けてください。このツールは構造、必須フィールド、末尾 4 文字の CRC を検証します。
  • 静的 QRIS を金額付きの動的 QRIS に変更するには? ご自身が所有する静的 QRIS に set_qris_amount を使い、その後、少額の支払いでテストしてください。
  • QRIS の金額を変更すると、金銭が移動しますか? いいえ。QRIS はテキストにすぎません。金銭は元のコードに記載された加盟店の口座に入金され、支払いアプリには支払いの前に加盟店名が表示されます。
  • NMID はどこにありますか? 全国 QRIS テンプレート(通常はタグ 51、GUI ID.CO.QRIS.WWW)のサブ ID 02 にあります。

ライセンス

MIT。LICENSE をご覧ください。QRIS は Bank Indonesia と ASPI の規格です。EMV は EMVCo の商標です。このプロジェクトは独立したもので、Bank Indonesia、ASPI、EMVCo、またはいかなる決済プロバイダーとも提携していません。


インドネシアの開発者向け独立系 AI API ゲートウェイ(QRIS で支払い可能)である Ezkielyna が制作しました。

コメント

MCP は初めてですか?

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

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