Offline QRIS tools: parse, validate CRC, static to dynamic amount, render SVG QR. No API key.
MCPpedia last refreshed this data
io.github.EzkielynaGroup/mcp-qris is an MCP server that offline QRIS tools: parse, validate CRC, static to dynamic amount, render SVG QR. No API key. Its tool list has not been published yet over stdio and http, requires no API key, and scores 57/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"qris": {
"args": [
"-y",
"mcp-qris"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
An offline MCP server that lets your AI assistant read, check and prepare QRIS payment codes (Indonesia's national QR standard, built on EMVCo Merchant-Presented Mode). No API key, no network, no dependencies.
Run this in your terminal to verify the server starts. Then let us know if it worked - your result helps other developers.
npx -y 'mcp-qris' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked mcp-qris against OSV.dev.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in design
Design tokens from any live site: colours, type, spacing, components, drift against a baseline.
Draw and visually collaborate with your agents on tldraw's canvas.
MeiGen-AI-Design-MCP — Turn Claude Code / OpenClaw into your local Lovart. Local ComfyUI, 1,400+ prompt library, multi-direction parallel generation.
Inspect and edit Three.js scenes, materials, shaders, lights in real time from any AI agent
MCP Security Weekly
Get CVE alerts and security updates for io.github.EzkielynaGroup/mcp-qris and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
An offline MCP server that lets your AI assistant read, check and prepare QRIS payment codes (Indonesia's national QR standard, built on EMVCo Merchant-Presented Mode). No API key, no network, no dependencies.
Example: "Here is my shop's static QRIS text: 000201010211...6304ABCD. Is it valid, and can you make a dynamic version for Rp25.000 and give me the SVG?"
🇮🇩 Bahasa Indonesia: lihat bagian di bawah.
Read this first. This tool only reads and rewrites text. It does not move money, it cannot see or confirm payments, and it is not connected to any bank or payment provider. A dynamic QRIS made here is only as valid as the merchant's own static QRIS it came from. Test with a small amount first. Never paste or modify someone else's QRIS without the owner's permission: changing a QRIS to collect money that is not yours is fraud.
.mjs file, Node.js 18+, no npm install, no network calls, no file writes.000201). Decoding a photo or screenshot is out of scope; scan it with any QR reader app first.| Tool | What it does |
|---|---|
parse_qris | Decodes the payload into named fields: payload format, static (11) / dynamic (12), merchant account templates 26-51 (GUI, merchant PAN, merchant ID, NMID in the national ID.CO.QRIS.WWW template, merchant criteria UMI/UKE/UME/UBE/URE), MCC, currency (360 = IDR), amount, tip/fee (55-57), country, merchant name/city, postal code, additional data (62: bill number, store label, terminal label, ...), language template (64) and the CRC check. |
validate_qris | Checks the TLV structure, mandatory fields, value formats and the CRC-16/CCITT checksum (polynomial 0x1021, initial value 0xFFFF). Reports every problem as an error or warning with a code (for example CRC_MISMATCH, TRUNCATED, AMOUNT_FORMAT). |
set_qris_amount | Turns a valid static QRIS into a dynamic one with an amount in whole Rupiah: sets tag 01 to 12, inserts tag 54 right after the currency, optionally adds a tip or convenience fee (tags 55-57, off by default) and recomputes the CRC. Refuses invalid input and, by default, input that is already dynamic. The result is validated again before it is returned. |
qris_to_svg | Renders a valid QRIS payload as an SVG QR code with a built-in encoder (byte mode, versions 1-40, error correction L/M/Q/H, default M, 4-module quiet zone). Refuses invalid QRIS. |
All tools are read-only (readOnlyHint: true) and closed-world (openWorldHint: false).
set_qris_amount changes| Tag | Before (static) | After (dynamic) |
|---|---|---|
| 01 Point of Initiation | 11 (or missing) | 12 |
| 54 Transaction Amount | absent | e.g. 25000 |
| 55-57 Tip / fee | absent | only if you ask (tip: prompt, fixed, percent) |
| 63 CRC | old checksum | recomputed |
Everything else (merchant accounts, NMID, name, city, MCC, tag 62) is copied unchanged, in the same order.
With npx (recommended): nothing to install. The configs below run npx -y mcp-qris.
From source:
git clone https://github.com/EzkielynaGroup/mcp-qris.git
cd mcp-qris
node --test test/ # optional:
... [View full README on GitHub](https://github.com/ezkielynagroup/mcp-qris#readme)