QRIS tools (offline) について
QRIS toolsは、QRIS決済コードのテキストを読み取り、検証、加工するオフラインMCPサーバーです。有効な静的コードを金額指定の動的コードに変換し、SVGにできますが、決済処理や支払い確認は行いません。
主な機能
- 01QRISフィールドの解析
- 02構造とCRCの検証
- 03静的QRISへの金額設定
- 04有効な内容のSVG描画
- 05コード付きの検証問題報告
活用シーン
- 01QRISテキストの加盟店情報確認
- 02利用や共有前のコード検査
- 03金額指定QRISコードの作成
- 04有効な内容からのSVG生成
MCP 対応
QRISテキストの解析と検証、静的コードへの金額設定、有効な内容のSVG描画を行う4つのツールをMCPクライアントに公開します。テキストの読み取りと書き換えのみで、送金や支払い確認は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| qris | string | はい | 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_qris | TLV 構造、必須フィールド、値の形式、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_qris | QRIS を名前付きフィールドに分解します:静的/動的、加盟店アカウント(タグ 26-51、NMID を含む)、MCC、通貨(360 = ルピア)、金額、チップ/手数料、加盟店名/都市、郵便番号、追加データ(タグ 62)、CRC チェック。 |
validate_qris | TLV 構造、必須フィールド、値の形式、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 が制作しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。