Skip to main content
Glama

qrcode

Generate customizable QR code images from text input with adjustable size, colors, error correction, and margin settings.

Instructions

Generate a QR code image

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe input string to generate qrcode
sizeNoThe size of qrcode, default is 256
darkColorNoThe dark color of qrcode, default is #000000#000000
lightColorNoThe light color of qrcode, default is #ffffff#ffffff
errorCorrectionLevelNoThe error correction level of qrcode, default is MM
marginNoThe margin of qrcode, default is 4

Implementation Reference

  • The handler function for the 'qrcode' MCP tool. It receives input parameters, calls generateQRCode to produce a data URL, extracts the base64 part, and returns it as image content.
    async ({
      text,
      size,
      darkColor,
      lightColor,
      errorCorrectionLevel,
      margin,
    }) => {
      const qrcode = await generateQRCode(text, {
        width: size,
        color: {
          dark: darkColor,
          light: lightColor,
        },
        errorCorrectionLevel,
        margin,
      });
    
      const base64Image = qrcode.split(",")[1];
    
      return Promise.resolve({
        content: [{ type: "image", data: base64Image, mimeType: "image/png" }],
      });
    }
  • Zod schema defining the input parameters for the 'qrcode' tool, including text, size, colors, error correction level, and margin with defaults.
    {
      text: z.string().describe("The input string to generate qrcode"),
      size: z
        .number()
        .describe("The size of qrcode, default is 256")
        .default(256),
      darkColor: z
        .string()
        .describe("The dark color of qrcode, default is #000000")
        .default("#000000"),
      lightColor: z
        .string()
        .describe("The light color of qrcode, default is #ffffff")
        .default("#ffffff"),
      errorCorrectionLevel: z
        .enum(["L", "M", "Q", "H"])
        .describe("The error correction level of qrcode, default is M")
        .default("M"),
      margin: z
        .number()
        .describe("The margin of qrcode, default is 4")
        .default(4),
    },
  • src/index.ts:29-79 (registration)
    Registration of the 'qrcode' tool on the MCP server using server.tool(), specifying name, description, input schema, and handler function.
    server.tool(
      "qrcode",
      "Generate a QR code image",
      {
        text: z.string().describe("The input string to generate qrcode"),
        size: z
          .number()
          .describe("The size of qrcode, default is 256")
          .default(256),
        darkColor: z
          .string()
          .describe("The dark color of qrcode, default is #000000")
          .default("#000000"),
        lightColor: z
          .string()
          .describe("The light color of qrcode, default is #ffffff")
          .default("#ffffff"),
        errorCorrectionLevel: z
          .enum(["L", "M", "Q", "H"])
          .describe("The error correction level of qrcode, default is M")
          .default("M"),
        margin: z
          .number()
          .describe("The margin of qrcode, default is 4")
          .default(4),
      },
      async ({
        text,
        size,
        darkColor,
        lightColor,
        errorCorrectionLevel,
        margin,
      }) => {
        const qrcode = await generateQRCode(text, {
          width: size,
          color: {
            dark: darkColor,
            light: lightColor,
          },
          errorCorrectionLevel,
          margin,
        });
    
        const base64Image = qrcode.split(",")[1];
    
        return Promise.resolve({
          content: [{ type: "image", data: base64Image, mimeType: "image/png" }],
        });
      }
    );
  • Core helper function that generates QR code data URL using the 'qrcode' library, merging default and provided options.
    async function generateQRCode(
      text: string,
      options: QRCodeOptions = {}
    ): Promise<string> {
      try {
        const defaultOptions: QRCodeOptions = {
          width: 256,
          margin: 4,
          color: {
            dark: "#000000",
            light: "#ffffff",
          },
          errorCorrectionLevel: "M",
        };
    
        // 合并默认选项和用户选项
        const qrOptions = { ...defaultOptions, ...options };
    
        // 生成二维码(返回 base64 格式)
        const qrCodeImage = await QRCode.toDataURL(text, qrOptions);
        return qrCodeImage;
      } catch (error) {
        console.error("generateQRCode error:", error);
        throw error;
      }
    }
  • TypeScript interface defining options for QR code generation, used internally by generateQRCode.
    interface QRCodeOptions {
      width?: number; // 二维码宽度
      margin?: number; // 二维码边距
      color?: {
        dark?: string; // 二维码颜色
        light?: string; // 背景颜色
      };
      errorCorrectionLevel?: "L" | "M" | "Q" | "H"; // 错误纠正级别
    }
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/1595901624/qrcode-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server