MCP server for scanning and generating barcodes and QR codes
Three well-defined tools with complete input schemas, clear descriptions, and proper enum constraints. All tools have descriptions (194 - 250 chars, within baseline 34 - 392 range). Parameters are typed and constrained. Output schemas documented via Zod. Naming follows verb_noun pattern (decode_image, generate_qr, generate_barcode). No critical gaps, but error handling and recovery guidance are minimal. Tool composition is clean, each does one thing. Missing: actionable error messages, recovery hints, and per-parameter validation rules in descriptions.
Decode barcodes and QR codes from a base64-encoded image. Returns all codes found. Supports QR, EAN-13, EAN-8, UPC-A, UPC-E, Code 128, Code 39, Code 93, ITF, Codabar, and PDF 417. Handles noisy real-world photos by trying multiple preprocessing approaches.
Generate a barcode image in various formats. Returns a PNG image. Supported formats: code128, code39, code93, ean13, ean8, upca, upce, itf14, interleaved2of5, isbn, issn, ismn, datamatrix, pdf417, azteccode, gs1-128, pharmacode, codabar, msi, plessey, postnet, onecode, royalmail, code11, code49.
Generate a QR code image from text or a URL. Returns a PNG image.
Error handling lacks recovery guidance. No tool documents what to do if decoding fails (e.g., 'Try a clearer image' or 'Supported formats: QR, EAN-13, ...'). LLMs cannot self-correct without actionable error messages.
Parameter descriptions lack validation rules. 'scale' accepts 1 - 20 but description does not explain what happens at boundaries or why. 'error_correction' enum values (L, M, Q, H) lack explanation of what each level means (7%, 15%, 25%, 30% recovery).
Output schema for decode_image not visible in source. Zod schema defined (codeSchema, outputSchema) but no evidence it is returned to the LLM or documented in tool registration. Cannot verify output structure matches what agent expects.
generate_barcode tool name is ambiguous. 'generate_barcode' does not distinguish from 'generate_qr', both generate codes. Better names: 'generate_linear_barcode' or 'generate_1d_barcode' to clarify the distinction.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2025-06-18+ | v2 |
No documentation of preprocessing pipeline in tool description. decode_image tries 9 preprocessing strategies internally, but the description does not mention this robustness or when it applies. LLM cannot reason about when to retry with different image quality.