generateQRCode
Create QR codes from text or data for sharing information, with options for terminal display, SVG images, or base64 encoding and configurable error correction.
Instructions
Generate a QR code from input data
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Data to encode in QR code | |
| type | No | Output type (terminal, svg, or base64) | terminal |
| errorCorrectionLevel | No | Error correction level | M |
Implementation Reference
- src/tools/generator.ts:54-96 (handler)The main handler function for the generateQRCode tool. It generates QR codes in terminal, SVG, or base64 PNG format using the qrcode and qrcode-terminal libraries, supporting configurable error correction levels.handler: async ({ data, type = 'terminal', errorCorrectionLevel = 'M' }: { data: string; type?: 'terminal' | 'svg' | 'base64'; errorCorrectionLevel?: 'L' | 'M' | 'Q' | 'H' }) => { try { let result: string; const options = { errorCorrectionLevel, margin: 1, width: type === 'svg' ? 200 : undefined }; switch (type) { case 'terminal': // Use qrcode-terminal for better terminal output result = await generateTerminalQR(data, { small: true }); break; case 'svg': result = await QRCode.toString(data, { ...options, type: 'svg' }); break; case 'base64': const buffer = await QRCode.toBuffer(data, { ...options, type: 'png' }); result = `data:image/png;base64,${buffer.toString('base64')}`; break; default: throw new Error(`Unsupported output type: ${type}`); } return { content: [{ type: 'text', text: result }] }; } catch (error) { throw new Error(`QR code generation failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } }
- src/tools/generator.ts:32-53 (schema)Input schema for the generateQRCode tool, defining required 'data' string and optional 'type' and 'errorCorrectionLevel' parameters.inputSchema: { type: 'object', properties: { data: { type: 'string', description: 'Data to encode in QR code' }, type: { type: 'string', description: 'Output type (terminal, svg, or base64)', enum: ['terminal', 'svg', 'base64'], default: 'terminal' }, errorCorrectionLevel: { type: 'string', description: 'Error correction level', enum: ['L', 'M', 'Q', 'H'], default: 'M' } }, required: ['data'] },
- src/index.ts:28-35 (registration)Registers the generateQRCode tool by spreading generatorTools into the allTools object, which is used by the MCP server's listTools and callTool request handlers.const allTools: ToolKit = { ...systemTools, ...networkTools, ...geoTools, ...generatorTools, ...dateTimeTools, ...securityTools };