Labelixa

com.labelixaPublished by labelixa.comOfficial publisherv0.5.2Updated Nov 1, 2026

Thermal label MCP server: render, validate, debug and convert ZPL, EPL, TSPL and CPCL labels.

VerifiedStreamable HTTPWeb executableDeveloper ToolsMedia & Design

Overview

AI-generated overview

Labelixa renders, lints, debugs and converts thermal printer label code (ZPL, EPL, TSPL, CPCL) so an assistant can preview labels as PNG and catch errors.

What you can do
  • Lint and preview label code: validate ZPL, EPL, TSPL and CPCL with positioned diagnostics, then render each to a PNG preview
  • Inspect and fix ZPL: look up a single command's syntax and parameters, get a scored health report, rescale between 203/300/600 DPI, and assess compatibility risk against a printer model
  • Work with barcodes and images: generate standalone barcodes as PNG, decode barcodes from a photo of a printed label, and convert an image to a ZPL graphic command
  • Detect and convert languages: identify whether raw code is ZPL, EPL, TSPL or CPCL, and convert SATO SBPL, Honeywell DPL or IPL streams to ZPL
  • Use templates and bulk jobs: list and fetch first-party label templates, save…
When to use it
Useful when an assistant writes or edits thermal label code and needs to see the rendered result, catch syntax and layout errors before printing, or port labels between printer languages and resolutions. Also fits teams producing many labels from a template with variable data.
Requirements
Either the remote endpoint (Streamable HTTP, nothing to install) or the local npm package run via npx or a global install, which needs Node.js and calls the Labelixa REST API. An optional lbx_ API key can be supplied as an Authorization Bearer header or the LABELIXA_API_KEY environment variable; without it an anonymous per-IP quota applies. Network access is required.
Before you install
Anonymous use is rate-limited per IP; an API key is sent to Labelixa and unlocks account quota. Saving labels writes to a Labelixa account, and without a key the label is held 24 hours behind a one-time sign-in link. Bulk jobs require a plan with that feature, charge quota upfront per row, and failed rows are not refunded. Premium template ZPL source needs a qualifying plan. Previews are server-side renders, not proof of physical printer output.

Installation

In SourceWeft

  1. Open Labelixa in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.labelixa%2Fzpl/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "labelixa": {
      "type": "http",
      "url": "https://api.labelixa.com/mcp"
    }
  }
}

README

labelixa-mcp

Labelixa is an MCP (Model Context Protocol) server and API platform for thermal label development. It gives AI assistants and developer tools the ability to render, validate, debug, inspect and convert thermal printer labels — ZPL, EPL, TSPL and CPCL — through MCP.

There are two ways to connect:

Remote server (recommended)This npm package
Endpointhttps://api.labelixa.com/mcplocal process over stdio
Tool setfull set: rendering, validation, debugging, conversion, barcode analysis, printer compatibility, templates, bulk jobscore subset (table below); each tool calls the Labelixa REST API
Installnothing to installnpx -y labelixa-mcp or npm install -g labelixa-mcp
Authenticationoptional lbx_ API keyoptional lbx_ API key

The live tool list of the remote server is at labelixa.com/mcp.

Remote server (no install)

Transport: Streamable HTTP, stateless JSON-RPC over POST. Anonymous use is free and rate-limited per IP; an API key uses the account's own quota. Keys: labelixa.com.

Claude Code:

sh
claude mcp add --transport http labelixa https://api.labelixa.com/mcp

With an API key:

sh
claude mcp add --transport http labelixa https://api.labelixa.com/mcp \  --header "Authorization: Bearer lbx_..."

Generic MCP client configuration (Claude Desktop, Cursor and other clients that accept a url entry):

json
{  "mcpServers": {    "labelixa": {      "url": "https://api.labelixa.com/mcp",      "headers": {"Authorization": "Bearer lbx_..."}    }  }}

Drop the headers block for anonymous use.

Local server (this package)

sh
npm install -g labelixa-mcp

Or skip installing and run it with npx straight from your MCP client config:

json
{  "mcpServers": {    "labelixa": {      "command": "npx",      "args": ["-y", "labelixa-mcp"],      "env": {"LABELIXA_API_KEY": "lbx_..."}    }  }}

Environment variables:

  • LABELIXA_API_KEY — optional lbx_ API key. Without it the anonymous quota applies.
  • LABELIXA_BASE_URL — optional; defaults to https://api.labelixa.com.

Requests never follow redirects, so a server cannot forward your key to another host. Numeric inputs are checked before a request is made: dpmm is 6, 8, 12 or 24, label sides are finite, above 0 and at most 15 inches, and DPI values are 152, 203, 300 or 600.

Tools in this package

ToolWhat it does
zpl_previewRenders ZPL to a PNG image for inspection. Server-side render — not a guarantee of how a specific physical printer will output the label.
zpl_validateLints ZPL and returns the structured diagnostics report (unknown commands, parameter ranges, layout overflow) as JSON. Pass the real label size — checks depend on it.
barcode_generateGenerates a standalone barcode (SVG or PNG): code128, code39, ean13, upca, upce, itf14, msi, qrcode, datamatrix, pdf417.
language_detectDetects the printer language of raw label code (ZPL/EPL/TSPL/CPCL). Heuristic — returns a confidence tier, not a probability.
epl_validateLints EPL/EPL2 code; positioned findings with severity, as JSON.
tspl_validateLints TSPL/TSPL2 code; positioned findings with severity, as JSON.
cpcl_validateLints CPCL code; positioned findings with severity, as JSON.
zpl_compatibilityCompatibility RISK analysis of ZPL against a printer model. Not an emulator — reports language posture with evidence level; never says "it works".
zpl_command_helpLooks up one ZPL command in the maintained catalog: name, syntax, parameters and whether the preview engine actually renders it — printer-side commands are marked as not rendered. Optional locale (en default, tr, de) translates the name and descriptions only; command codes, syntax strings, examples and parameter names are protocol and never change.
convert_zpl_dpiRescales ZPL coordinates between printer resolutions (203/300/600 dpi). Embedded ^GF/~DG bitmaps are NOT rescaled — a warnings block precedes the output when present.
explain_zplFull sectioned health report (syntax, size/DPI, orientation, barcodes, fonts, memory) with an honest score — sections it cannot assess say "not assessed" instead of counting.

EPL, TSPL and CPCL previews, label templates, bulk generation, image-to-ZPL conversion, SBPL / DPL / IPL to ZPL conversion (printer_language_to_zpl) and barcode reading from photos are on the remote server only.

Directory listings

  • Official MCP Registry: com.labelixa/zpl (remote server + this npm package).
  • Smithery: labelixa/zpl. Smithery routes calls through its own gateway; the canonical endpoint is https://api.labelixa.com/mcp.

[smithery badge]

Honesty notes

  • Errors carry the server's own message verbatim; quota exhaustion is reported with the server's Retry-After rather than a made-up delay.
  • zpl_preview is a render, not a print: physical output depends on the printer, media and darkness settings.

Source of this package: github.com/Labelixa/labelixa-mcp. Docs: labelixa.com/docs/api. License: MIT.

Source: README.md at commit 912e636

Tools

23

zpl_preview

Render ZPL label

Render ZPL label code and return the label as a PNG image. Use this to SEE what ZPL output looks like — LLMs can write ZPL but cannot otherwise verify the visual result. One call renders one label (use `index` to pick a label from a multi-label stream). The result also carries an 'Open this label in the Labelixa editor' link the user can click to edit, save or share the label.

Parameterszplrequireddpmmindexwidth_inheight_in

zpl_validate

Validate ZPL

Pass/fail lint for ZPL — machine-readable diagnostics with line/column, code and severity: unknown commands, missing ^FS, out-of-range parameters, fields outside the label. Fast; run it before zpl_preview whenever you generate or edit ZPL. For a human-readable report with a score, use explain_zpl instead.

Parameterszplrequireddpmmwidth_inheight_in

zpl_command_help

ZPL command help

Explain a single ZPL command: syntax, parameters with types/ranges/options, a fragment example and whether the Labelixa renderer draws it. Data comes from the same catalog that powers the public command reference pages.

Parameterslocalecommandrequired

barcode_png

Generate barcode PNG

Generate a single barcode as a PNG image (Code 128, QR, DataMatrix, EAN-13, UPC-A, PDF417 and more). For a full label with text and layout, write ZPL and use zpl_preview instead.

Parametersdatarequiredtype

language_detect

Detect printer language

Detect which printer language raw label code is written in (ZPL, EPL, TSPL or CPCL). Heuristic: returns the language plus a confidence TIER (high/medium/low) and signal codes — not a probability.

Parameterscoderequired

epl_validate

Validate EPL

Lint EPL/EPL2 label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the EPL2 manual — a clean result is not a guarantee that a specific printer accepts the job. Run this before epl_preview; if you are not sure which language the code is, call language_detect first.

Parameterseplrequired

tspl_validate

Validate TSPL

Lint TSPL/TSPL2 label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the TSPL2 manual — a clean result is not a guarantee that a specific printer accepts the job. Run this before tspl_preview; if you are not sure which language the code is, call language_detect first.

Parameterstsplrequired

cpcl_validate

Validate CPCL

Lint CPCL label code and return positioned findings with severity as JSON. Checks the command set Labelixa implements from the CPCL manual — a clean result is not a guarantee that a specific printer accepts the job. Run this before cpcl_preview; if you are not sure which language the code is, call language_detect first.

Parameterscpclrequired

explain_zpl

Explain ZPL health report

Human-readable health REPORT for a finished ZPL label, with a 0-100 score: sectioned findings (syntax, size/DPI, orientation, barcodes, fonts, graphics memory, job behaviour); sections that cannot be assessed say so and are excluded from the score. Use it to review or explain a label to a person; for a quick pass/fail check while editing, use zpl_validate instead.

Parameterszplrequireddpmmwidth_inheight_in

convert_zpl_dpi

Convert ZPL DPI

Rescale ZPL between printer resolutions (203/300/600 DPI): coordinates, fonts, barcode module width and label size are scaled. Embedded ^GF/~DG image data is NOT scaled; the response says so instead of silently passing it through.

Parameterszplrequiredsource_dpirequiredtarget_dpirequired

template_list

List label templates

List Labelixa's first-party label template catalog: id, English name, category, size/density and tags. Read-only product content (no tenant data). Fetch one with template_get; render its ZPL with zpl_preview.

Parameterssearchcategory

template_get

Get label template

Fetch one catalog template: metadata, preview image URL and — for non-premium templates — the ZPL source, ready for zpl_preview. Premium templates return metadata for everyone; their ZPL source requires an API key whose plan includes the premium-template feature (same rule as the website).

Parameterstemplate_idrequired

save_label

Save label to account

Save a ZPL label to a Labelixa account so it can be edited, versioned and printed later. With an API key the label is saved immediately and the saved label id is returned. Without a key the label is held for 24 hours and a one-time link is returned: the user opens it, signs in (free account is enough) and the label lands in their account. Nothing else is stored for anonymous calls.

Parameterszplrequireddpmmnamewidth_inheight_in

epl_preview

Render EPL label

Render EPL/EPL2 label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the EPL2 manual covering a core command subset — no physical printer validation. `labels` in the response is the TOTAL number of labels the stream prints (a stream may contain several, each ended by `P`); pass `index` to render a different one.

Parameterseplrequiredindex

tspl_preview

Render TSPL label

Render TSPL/TSPL2 label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the TSPL manual covering a core command subset — no physical printer validation. `labels` in the response is the TOTAL number of labels the stream prints (a stream may contain several, each ended by `PRINT`); pass `index` to render a different one.

Parameterstsplrequiredindex

cpcl_preview

Render CPCL label

Render CPCL label code and return a PNG preview. The preview assumes 203 dpi and is an interpretation of the CPCL manual covering a core command subset — no physical printer validation. `labels` in the response is the TOTAL number of labels the stream prints (a stream may contain several, each ended by `PRINT`); pass `index` to render a different one.

Parameterscpclrequiredindex

image_to_zpl

Convert image to ZPL

Convert an image (PNG, JPEG, BMP or GIF, max 200 KB) to a ZPL ^GF graphic command. Returns the ZPL plus measured dimensions and the physical print size at the chosen density. PDF input is REST-only (/v1/graphics).

Parametersdpmmwrapditherimage_base64required

barcode_verify

Read back barcodes from an image

Decode barcodes from a photo or scan of a PRINTED label (PNG, JPEG, BMP or GIF) and report what a software decoder reads back. Honest by design: 'read' does not guarantee every handheld scanner will read it, and 'not read' does not condemn the label (photo angle/focus matter) — the response says so.

Parametersimage_base64required

zpl_compatibility

Check printer compatibility

Compatibility RISK analysis of ZPL code against a specific printer model, given as manufacturer/model (e.g. 'zebra/zd421'). NOT an emulator and never says 'it works': reports the model's language posture with evidence level and size-rule findings.

Parameterszplrequiredmodelrequired

bulk_submit

Submit bulk label job

Submit a bulk label production job: one ZPL template with {{variable}} placeholders plus data rows (one object per label). Requires an API key whose plan includes bulk jobs. Quota is charged UPFRONT, one operation per row, and failed rows are not refunded; rows per job are capped by plan. Returns the job id — check bulk_status (small jobs usually finish within seconds).

Parameterszplrequireddpmmrowsrequiredoutputwidth_inheight_in

bulk_status

Bulk job status

Status of one bulk job you own: state, attempt count and — when finished — the summary with produced count and per-row failures (row number + reason; failed rows never block the rest). Finished outputs stay downloadable for 7 days via the REST endpoint the response names.

Parametersjob_idrequired

bulk_list

List bulk jobs

List your recent bulk jobs (id, state, error class, timestamps), newest first. Useful to recover a lost job id; details via bulk_status.

Parameterslimit

printer_language_to_zpl

Convert printer language to ZPL

Convert a SATO SBPL, Honeywell (Datamax) DPL or Honeywell (Intermec) IPL label stream to ZPL, so it can be checked with zpl_validate and rendered with zpl_preview. You must name the source language: language_detect does not recognise these three. Real control characters and the manuals' readable notation (<STX>, <ESC>) are both accepted. Commands outside the supported subset (printer settings, RFID, job management, some 2D symbologies) are skipped with a warning, never silently: non-empty `warnings` mean the conversion is not 1:1 and `one_to_one` is false — show the warnings to the user. The output follows each manufacturer's command reference and is not verified on physical printers; check a preview and a test print before production.

Parameterscoderequireddpmmlabel_length_mmsource_languagerequired

Version history

7
  1. v0.5.2LatestNov 1, 2026
  2. v0.5.1Oct 23, 2026
  3. v0.5.0Oct 20, 2026
  4. v0.4.2Oct 16, 2026
  5. v0.4.1Sep 28, 2026
  6. v0.4.0Sep 17, 2026
  7. v0.3.5Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts