{
  "markdown": "# mcp-barcode\n\n<!-- mirror-seo:start -->\n\n**MCP server for QR code and barcode generation: generates barcodes and QR codes.** QR codes and barcodes drawn on your machine, with no upload and no network call.\n\nWorks with Claude Desktop, Claude Code, Cursor and any Model Context Protocol client. Runs on your own machine, or hosted with no install.\n\n## Install\n\n**Hosted, nothing to install.** Get a token from <https://mcp.zovo.one/mcp/connect> (the connect page) or <https://mcp.zovo.one/mcp/token> (the same token as JSON); a free anonymous one is issued on the spot and a Pro key works the same way. Then point an MCP client at `https://mcp.zovo.one/mcp/barcode` over streamable-http and send the token as `Authorization: Bearer <token>`.\n\nIf your client cannot set headers, put the token in the path instead: `https://mcp.zovo.one/mcp/barcode/t/<token>`. Both forms work. The bare URL with no token answers 401 on `tools/call`, so the token is not optional.\n\n**Claude Desktop, one click.** Download `barcode.mcpb` from the [latest release](https://github.com/theluckystrike/mcp-servers/releases/latest) and double-click it.\n\n**From source.** The mirror is self-contained: every `@theluckystrike/*` dependency is vendored, so a fresh clone builds with no extra setup.\n\n```sh\ngit clone https://github.com/theluckystrike/mcp-barcode.git\ncd mcp-barcode\nnpm install && npm run build\n```\n\nThen point your client at the built entry point:\n\n```json\n{\n  \"mcpServers\": {\n    \"barcode\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mcp-barcode/dist/index.js\"]\n    }\n  }\n}\n```\n\n> `@theluckystrike/mcp-barcode` is **not published on npm yet**, so an `npx -y @theluckystrike/mcp-barcode` command will fail. The three paths above are the working ones and each is exercised by CI.\n\n![barcode demo](https://raw.githubusercontent.com/theluckystrike/mcp-servers/main/assets/demo-barcode.gif)\n\nRead-only mirror of [mcp-servers/servers/barcode](https://github.com/theluckystrike/mcp-servers/tree/main/servers/barcode). See [MIRROR.md](MIRROR.md).\n\n<!-- mirror-seo:end -->\n\nMake a QR code or a barcode in the conversation you are already in. Paste a URL and get a QR code you can put on a\nflyer. Give a client's invoice an EPC payment code their banking app scans and fills in for them. Print an EAN-13\nfor a product, a Code 128 for a shelf label, a WiFi code for the office wall, a vCard for a conference badge.\nEverything is drawn on your machine: no upload, no account, no API key, and no network call of any kind.\n\n\nnpm publish for `@theluckystrike/mcp-barcode` is pending, so `npx -y @theluckystrike/mcp-barcode` returns 404 today. Until then, the `.mcpb` one-click bundle or a clone+build is the working path.\n\n## Install\n\nClaude Desktop, `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or\n`%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"barcode\": { \"command\": \"npx\", \"args\": [\"-y\", \"@theluckystrike/mcp-barcode\"] }\n  }\n}\n```\n\nClaude Code:\n\n```sh\nclaude mcp add barcode -- npx -y @theluckystrike/mcp-barcode\n```\n\nCursor, `.cursor/mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"barcode\": { \"command\": \"npx\", \"args\": [\"-y\", \"@theluckystrike/mcp-barcode\"] }\n  }\n}\n```\n\n## Tools\n\n| tool | what it does |\n| --- | --- |\n| `qr_create` | Text or a URL as a QR code, at any error correction level, SVG or PNG |\n| `qr_wifi` | A code that joins a WiFi network when scanned |\n| `qr_vcard` | A code that adds a contact (vCard 3.0) |\n| `qr_payment_sepa` | An EPC069-12 payment code a euro banking app scans: IBAN, name, amount, reference |\n| `invoice_payment_qr` | The payment code for an invoice, using the IBAN and name from your shared business profile |\n| `barcode_create` | Code 128, EAN-13, EAN-8 or UPC-A, with the check digit computed or verified |\n| `barcode_batch` | Many codes in one call, into a directory (Pro) |\n| `code_list` | What you have generated, and how much of this month's free allowance is left |\n| `license_status`, `license_activate` | Free or Pro, and activating a key |\n\n## Free vs Pro\n\n| | Free | Pro |\n| --- | --- | --- |\n| Codes per calendar month | 20 | Unlimited |\n| SVG (prints at any size) | Yes | Yes |\n| PNG | No | Yes, 32 to 4000 px |\n| `barcode_batch` | No | Yes, up to 500 rows a call |\n| QR, WiFi, vCard, SEPA payment codes, all four barcode symbologies | Yes | Yes |\n\nGet Pro: **https://mcp.zovo.one/buy/barcode** - $19 one time, or $39 for every server in the suite, lifetime.\nKeys verify offline; nothing is sent anywhere.\n\n## A wrong check digit is refused, not redrawn\n\nGive `barcode_create` twelve digits and the thirteenth is computed for you. Give it thirteen and the thirteenth is\n*checked*:\n\n```\nError: EAN-13 check digit is wrong: \"5901234123450\" ends in 0, but the first 12 digits give 7.\nPass 5901234123457, or pass the first 12 digits and the check digit is computed. Nothing was written.\n```\n\nThe alternative, silently redrawing the code the caller asked for, prints a label that scans as a different\nproduct, and nobody finds out until the till. The same rule applies to the IBAN in a payment code: it is\nvalidated with ISO 7064 mod 97 before anything is drawn, so a transposed pair of digits is caught here rather\nthan by a payment that goes nowhere.\n\n## Measured: error correction M is free on a SEPA payment code, Q and H are not\n\nA typical EPC payment record (IBAN, beneficiary, EUR 120.50, an invoice number) is 73 bytes. QR codes come in\nfixed capacity steps, so raising the error correction level does not raise the code size smoothly:\n\n| level | recoverable | QR version | modules a side | change |\n| --- | --- | --- | --- | --- |\n| L | 7% | 4 | 33 | baseline |\n| M | 15% | 4 | 33 | **no change at all** |\n| Q | 25% | 6 | 41 | +24% |\n| H | 30% | 7 | 45 | +36% |\n\nL and M land in the same version 4 symbol: at this payload size the extra recovery data still fits in the same\nbox, so choosing L over M buys nothing and gives up half the damage tolerance. That is why `M` is the default\nhere. Q and H are worth asking for only when the code will be printed small, on something that creases, or\nbehind a logo. On a 300 px PNG the same step costs bytes too: 2,419 at M against 3,462 at H.\n\n## Measured: SVG is flat, PNG grows 14x, and they cross at about 200 px\n\nThe same payment code written both ways, at five sizes:\n\n| requested size | PNG bytes | SVG bytes |\n| --- | --- | --- |\n| 128 px | 1,481 | 2,079 |\n| 256 px | 2,186 | 2,079 |\n| 512 px | 3,589 | 2,079 |\n| 1024 px | 7,585 | 2,081 |\n| 2048 px | 21,688 | 2,081 |\n\nAn SVG carries the module grid, not the pixels, so its size barely moves: the two extra bytes at 1024 px are the\nwidth attribute getting longer. Below roughly 200 px a PNG is smaller; above it the PNG grows without limit and\nthe SVG does not, and the SVG is the one that stays sharp when a printer scales it up. That is the reason the\nfree tier is the SVG tier rather than a small-PNG tier: for the thing most people do with a code, put it in a\ndocument and print it, SVG is the better file, not the consolation prize.\n\n## Privacy\n\nEverything stays on your machine. There is no network code in this server at all: no `fetch`, no HTTP client,\nno telemetry. Codes are written where you say, and a small register of what was generated lives under\n`~/.local/share/mcp-servers/barcode/` (or `$XDG_DATA_HOME`). License keys verify offline with a public key.\n\nBuilt by [theluckystrike](https://github.com/theluckystrike). Support: support@zovo.one\n",
  "bytes": 7479,
  "sha": "20f4d357a55fabf3a7ccf2aa1840997f56a5e5b0c7ed8843846ba1b2c07b97b5",
  "repo_slug": "theluckystrike/mcp-barcode",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_theluckystrike_mcp_barcode_cd0f6f69/readme"
}